void FilterView::AdoptModel(const Model& model) { BMenu* repositoryMenu = fRepositoryField->Menu(); repositoryMenu->RemoveItems(0, repositoryMenu->CountItems(), true); repositoryMenu->AddItem(new BMenuItem(B_TRANSLATE("All depots"), new BMessage(MSG_DEPOT_SELECTED))); repositoryMenu->ItemAt(0)->SetMarked(true); repositoryMenu->AddItem(new BSeparatorItem()); const DepotList& depots = model.Depots(); for (int i = 0; i < depots.CountItems(); i++) { const DepotInfo& depot = depots.ItemAtFast(i); BMessage* message = new BMessage(MSG_DEPOT_SELECTED); message->AddString("name", depot.Name()); BMenuItem* item = new BMenuItem(depot.Name(), message); repositoryMenu->AddItem(item); } BMenu* showMenu = fShowField->Menu(); showMenu->RemoveItems(0, showMenu->CountItems(), true); showMenu->AddItem(new BMenuItem(B_TRANSLATE("All categories"), new BMessage(MSG_CATEGORY_SELECTED))); showMenu->AddItem(new BSeparatorItem()); add_categories_to_menu(model.Categories(), showMenu); showMenu->ItemAt(0)->SetMarked(true); AdoptCheckmarks(model); }
void FilterView::AdoptModel(const Model& model) { // Adopt depots BMenu* repositoryMenu = fRepositoryField->Menu(); repositoryMenu->RemoveItems(0, repositoryMenu->CountItems(), true); repositoryMenu->AddItem(new BMenuItem(B_TRANSLATE("All depots"), new BMessage(MSG_DEPOT_SELECTED))); repositoryMenu->AddItem(new BSeparatorItem()); bool foundSelectedDepot = false; const DepotList& depots = model.Depots(); for (int i = 0; i < depots.CountItems(); i++) { const DepotInfo& depot = depots.ItemAtFast(i); BMessage* message = new BMessage(MSG_DEPOT_SELECTED); message->AddString("name", depot.Name()); BMenuItem* item = new BMenuItem(depot.Name(), message); repositoryMenu->AddItem(item); if (depot.Name() == model.Depot()) { item->SetMarked(true); foundSelectedDepot = true; } } if (!foundSelectedDepot) repositoryMenu->ItemAt(0)->SetMarked(true); // Adopt categories BMenu* showMenu = fShowField->Menu(); showMenu->RemoveItems(0, showMenu->CountItems(), true); showMenu->AddItem(new BMenuItem(B_TRANSLATE("All categories"), new BMessage(MSG_CATEGORY_SELECTED))); showMenu->AddItem(new BSeparatorItem()); add_categories_to_menu(model.Categories(), showMenu); bool foundSelectedCategory = false; for (int32 i = 0; i < showMenu->CountItems(); i++) { BMenuItem* item = showMenu->ItemAt(i); BMessage* message = item->Message(); if (message == NULL) continue; BString category; if (message->FindString("name", &category) == B_OK && model.Category() == category) { item->SetMarked(true); foundSelectedCategory = true; break; } } if (!foundSelectedCategory) showMenu->ItemAt(0)->SetMarked(true); }
PackageInfoRef PackageAction::FindPackageByName(const BString& name) { Model* model = GetModel(); const DepotList& depots = model->Depots(); // TODO: optimize! for (int32 i = 0; i < depots.CountItems(); i++) { const DepotInfo& depot = depots.ItemAtFast(i); const PackageList& packages = depot.Packages(); for (int32 j = 0; j < packages.CountItems(); j++) { PackageInfoRef info = packages.ItemAtFast(j); if (info->Name() == name) return info; } } return PackageInfoRef(); }