void ComponentIconListBox::setType( int newType, int otherNewType, int orThis ) { if ( newType == type && itemCount ) return; type = newType; scrollBar->setGreen(); removeAllItems( 0 ); itemSelected = -1; if ( !masterComponentList.Count() ) { int count = 256; LogisticsComponent* pComp[256]; LogisticsData::instance->getAllComponents( pComp, count ); //for ( int j = 0; j < 2048; j++ ) //{ for ( int i = 0; i < count; i++ ) { ComponentListItem* pItem = new ComponentListItem( pComp[i] ); masterComponentList.Append( pItem ); } // for ( EList< ComponentListItem*, ComponentListItem* >::EIterator iter = masterComponentList.Begin(); // !iter.IsDone(); iter++ ) // { /// delete *iter; // turn++; // } // masterComponentList.Clear(); // } } for ( EList< ComponentListItem*, ComponentListItem* >::EIterator iter = masterComponentList.Begin(); !iter.IsDone(); iter++ ) { if ( (*iter)->getComponent()->isAvailable() ) { if ( (*iter)->getComponent()->getType() == type || (*iter)->getComponent()->getType() == otherNewType || (*iter)->getComponent()->getType() == orThis ) { if ( (*iter)->globalX() > globalX() ) { (*iter)->move( -globalX(), 0 ); } addSortedItem( (*iter) ); } } } selectFirstAvailableComponent(); }
void ComponentIconListBox::update() { aListBox::update(); if(itemSelected != -1) { if(items[itemSelected]->getState() == aListItem::DISABLED || MechLabScreen::instance()->canAddComponent( ((ComponentListItem*)items[itemSelected])->getComponent())) { selectFirstAvailableComponent(); } } }