MenuItem* Menu::FindMarked() { MenuItemIterator iterator = ItemIterator(); while (MenuItem* item = iterator.Next()) { if (item->IsMarked()) return item; } return NULL; }
MenuItem* Menu::FindItem(const char* label) { MenuItemIterator iterator = ItemIterator(); while (MenuItem* item = iterator.Next()) { if (item->Label() != NULL && !strcmp(item->Label(), label)) return item; } return NULL; }
int32 Menu::IndexOf(MenuItem* searchedItem) { int32 index = 0; MenuItemIterator iterator = ItemIterator(); while (MenuItem* item = iterator.Next()) { if (item == searchedItem) return index; index++; } return -1; }
MenuItem * Menu::ItemAt(int32 index) { if (index < 0 || index >= fCount) return NULL; MenuItemIterator iterator = ItemIterator(); MenuItem *item; while ((item = iterator.Next()) != NULL) { if (index-- == 0) return item; } return NULL; }
MenuItem* Menu::RemoveItemAt(int32 index) { if (index < 0 || index >= fCount) return NULL; MenuItemIterator iterator = ItemIterator(); while (MenuItem* item = iterator.Next()) { if (index-- == 0) { RemoveItem(item); return item; } } return NULL; }
MenuItem* Menu::FindSelected(int32* _index) { int32 index = 0; MenuItemIterator iterator = ItemIterator(); while (MenuItem* item = iterator.Next()) { if (item->IsSelected()) { if (_index != NULL) *_index = index; return item; } index++; } return NULL; }
static void apply_safe_mode_options(Menu* menu) { MenuItemIterator iterator = menu->ItemIterator(); while (MenuItem* item = iterator.Next()) { if (item->Type() == MENU_ITEM_SEPARATOR || !item->IsMarked() || item->Data() == NULL) { continue; } char buffer[256]; if (snprintf(buffer, sizeof(buffer), "%s true\n", (const char*)item->Data()) >= (int)sizeof(buffer) || !sSafeModeOptionsBuffer.Append(buffer)) { dprintf("apply_safe_mode_options(): failed to append option to " "buffer\n"); } } }
static void apply_safe_mode_options(Menu* menu) { char buffer[2048]; int32 pos = 0; buffer[0] = '\0'; MenuItemIterator iterator = menu->ItemIterator(); while (MenuItem* item = iterator.Next()) { if (item->Type() == MENU_ITEM_SEPARATOR || !item->IsMarked() || item->Data() == NULL || (uint32)pos > sizeof(buffer)) continue; size_t totalBytes = snprintf(buffer + pos, sizeof(buffer) - pos, "%s true\n", (const char*)item->Data()); pos += std::min(totalBytes, sizeof(buffer) - pos - 1); } add_safe_mode_settings(buffer); }