예제 #1
0
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();
		}
	}
}