void ComboBox::changeItemText (const int itemId, const String& newText) { if (ItemInfo* const item = getItemForId (itemId)) item->name = newText; else jassertfalse; }
void ComboBox::setItemEnabled (const int itemId, const bool shouldBeEnabled) { ItemInfo* const item = getItemForId (itemId); if (item != nullptr) item->isEnabled = shouldBeEnabled; }
//============================================================================== void ComboBox::addItem (const String& newItemText, const int newItemId) throw() { // you can't add empty strings to the list.. jassert (newItemText.isNotEmpty()); // IDs must be non-zero, as zero is used to indicate a lack of selecion. jassert (newItemId != 0); // you shouldn't use duplicate item IDs! jassert (getItemForId (newItemId) == 0); if (newItemText.isNotEmpty() && newItemId != 0) { if (separatorPending) { separatorPending = false; ItemInfo* const item = new ItemInfo(); item->itemId = 0; item->isEnabled = false; item->isHeading = false; items.add (item); } ItemInfo* const item = new ItemInfo(); item->name = newItemText; item->itemId = newItemId; item->isEnabled = true; item->isHeading = false; items.add (item); } }
int ComboBox::getSelectedId() const throw() { const ItemInfo* const item = getItemForId (currentId.getValue()); return (item != 0 && getText() == item->name) ? item->itemId : 0; }
void ComboBox::changeItemText (const int itemId, const String& newText) { ItemInfo* const item = getItemForId (itemId); jassert (item != nullptr); if (item != nullptr) item->name = newText; }
void ComboBox::setSelectedId (const int newItemId, const NotificationType notification) { const ItemInfo* const item = getItemForId (newItemId); const String newItemText (item != nullptr ? item->name : String::empty); if (lastCurrentId != newItemId || label->getText() != newItemText) { label->setText (newItemText, dontSendNotification); lastCurrentId = newItemId; currentId = newItemId; repaint(); // for the benefit of the 'none selected' text sendChange (notification); } }
void ComboBox::setSelectedId (const int newItemId, const bool dontSendChangeMessage) { const ItemInfo* const item = getItemForId (newItemId); const String newItemText (item != nullptr ? item->name : String::empty); if (lastCurrentId != newItemId || label->getText() != newItemText) { if (! dontSendChangeMessage) triggerAsyncUpdate(); label->setText (newItemText, false); lastCurrentId = newItemId; currentId = newItemId; repaint(); // for the benefit of the 'none selected' text } }
//============================================================================== void ComboBox::addItem (const String& newItemText, const int newItemId) { // you can't add empty strings to the list.. jassert (newItemText.isNotEmpty()); // IDs must be non-zero, as zero is used to indicate a lack of selecion. jassert (newItemId != 0); // you shouldn't use duplicate item IDs! jassert (getItemForId (newItemId) == nullptr); if (newItemText.isNotEmpty() && newItemId != 0) { if (separatorPending) { separatorPending = false; items.add (new ItemInfo (String::empty, 0, false, false)); } items.add (new ItemInfo (newItemText, newItemId, true, false)); } }
int ComboBox::getSelectedId() const noexcept { const ItemInfo* const item = getItemForId (currentId.getValue()); return (item != nullptr && getText() == item->name) ? item->itemId : 0; }
bool ComboBox::isItemEnabled (int itemId) const noexcept { const ItemInfo* const item = getItemForId (itemId); return item != nullptr && item->isEnabled; }
void ComboBox::setItemEnabled (const int itemId, const bool shouldBeEnabled) { if (ItemInfo* const item = getItemForId (itemId)) item->isEnabled = shouldBeEnabled; }