/************************************************************************* Query item selection state *************************************************************************/ bool ItemListbox::isItemSelected(size_t index) const { if (index >= d_listItems.size()) { CEGUI_THROW(InvalidRequestException( "The index given is out of range for this ItemListbox")); } ItemEntry *li = d_listItems[index]; return li->isSelected(); }
/************************************************************************ Get a pointer to the first selected item starting from the given index ************************************************************************/ ItemEntry* ItemListbox::findSelectedItem(size_t start_index) const { const size_t max = d_listItems.size(); for (size_t i = start_index; i < max; ++i) { ItemEntry* li = d_listItems[i]; if (li->isSelected()) { d_nextSelectionIndex = i + 1; return li; } } return 0; }
void FalagardItemEntry::render() { ItemEntry* item = static_cast<ItemEntry*>(d_window); // get WidgetLookFeel for the assigned look. const WidgetLookFeel& wlf = getLookNFeel(); const StateImagery* imagery; // render basic imagery String state = item->isDisabled() ? "Disabled" : "Enabled"; if (item->isSelectable() && item->isSelected()) { imagery = &wlf.getStateImagery(item->isDisabled()?"SelectedDisabled":"SelectedEnabled"); } else { imagery = &wlf.getStateImagery(item->isDisabled()?"Disabled":"Enabled"); } imagery->render(*d_window); }
/************************************************************************ Get a pointer to the next selected item after the given item ************************************************************************/ ItemEntry* ItemListbox::getNextSelectedItemAfter(const ItemEntry* start_item) const { if (start_item==0||!d_multiSelect) { return 0; } size_t max = d_listItems.size(); size_t i = getItemIndex(start_item); while (i<max) { ItemEntry* li = d_listItems[i]; if (li->isSelected()) { return li; } ++i; } return 0; }