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); }
void AmBankChangeView::SetTrackRef(AmTrackRef trackRef) { mTrackRef = trackRef; BMenu* menu = Menu(); if (!menu) return; if (menu->RemoveItems(0, menu->CountItems(), true) ) return; if (!mTrackRef.IsValid() ) return; // READ TRACK BLOCK #ifdef AM_TRACE_LOCKS printf("AmProgramChangeView::SetTrackRef() read lock\n"); #endif const AmSong* song = mSongRef.ReadLock(); const AmTrack* track = song ? song->Track(mTrackRef) : NULL; if (track) BuildMenu(track, menu); mSongRef.ReadUnlock(song); // END READ TRACK BLOCK }
void AmProgramChangeView::SetTrackRef(AmTrackRef trackRef) { mTrackRef = trackRef; BMenu* menu = Menu(); if (!menu) return; int32 oldIndex = -1; BMenuItem* item = menu->FindMarked(); if (item) oldIndex = menu->IndexOf(item); menu->RemoveItems(0, menu->CountItems(), true); if (!mTrackRef.IsValid() ) return; // READ TRACK BLOCK #ifdef AM_TRACE_LOCKS printf("AmProgramChangeView::SetTrackRef() read lock\n"); #endif const AmSong* song = ReadLock(); const AmTrack* track = song ? song->Track( mTrackRef ) : 0; if (track) BuildMenu(track, menu, oldIndex); ReadUnlock(song); // END READ TRACK BLOCK }
void EthernetSettingsView::_ShowConfiguration(Settings* settings) { fCurrentSettings = settings; // Clear the inputs. fIPTextControl->SetText(""); fGatewayTextControl->SetText(""); fNetMaskTextControl->SetText(""); fPrimaryDNSTextControl->SetText(""); fSecondaryDNSTextControl->SetText(""); fDomainTextControl->SetText(""); fDeviceMenuField->SetEnabled(settings != NULL); fTypeMenuField->SetEnabled(settings != NULL); bool enableControls = false; BMenuItem* item; if (settings == NULL || settings->IsDisabled()) item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("Disabled")); else if (settings->AutoConfigure()) item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("DHCP")); else { item = fTypeMenuField->Menu()->FindItem(B_TRANSLATE("Static")); enableControls = true; } if (item != NULL) item->SetMarked(true); if (settings == NULL) { if (!fNetworkMenuField->IsHidden(fNetworkMenuField)) fNetworkMenuField->Hide(); _EnableTextControls(false); return; } // Show/hide networks menu BNetworkDevice device(settings->Name()); if (fNetworkMenuField->IsHidden(fNetworkMenuField) && device.IsWireless()) { fNetworkMenuField->Show(); Window()->InvalidateLayout(); } else if (!fNetworkMenuField->IsHidden(fNetworkMenuField) && !device.IsWireless()) { fNetworkMenuField->Hide(); Window()->InvalidateLayout(); } if (device.IsWireless()) { // Rebuild network menu BMenu* menu = fNetworkMenuField->Menu(); menu->RemoveItems(0, menu->CountItems(), true); wireless_network network; int32 count = 0; uint32 cookie = 0; while (device.GetNextNetwork(cookie, network) == B_OK) { BMessage* message = new BMessage(kMsgNetwork); message->AddString("device", device.Name()); message->AddString("name", network.name); BMenuItem* item = new WirelessNetworkMenuItem(network.name, network.signal_strength, (network.flags & B_NETWORK_IS_ENCRYPTED) != 0, message); if (fCurrentSettings->WirelessNetwork() == network.name) item->SetMarked(true); menu->AddItem(item); count++; } if (count == 0) { BMenuItem* item = new BMenuItem( B_TRANSLATE("<no wireless networks found>"), NULL); item->SetEnabled(false); menu->AddItem(item); } else { BMenuItem* item = new BMenuItem( B_TRANSLATE("Choose automatically"), NULL); if (menu->FindMarked() == NULL) item->SetMarked(true); menu->AddItem(item, 0); menu->AddItem(new BSeparatorItem(), 1); } menu->SetTargetForItems(this); } item = fDeviceMenuField->Menu()->FindItem(settings->Name()); if (item != NULL) item->SetMarked(true); fIPTextControl->SetText(settings->IP()); fGatewayTextControl->SetText(settings->Gateway()); fNetMaskTextControl->SetText(settings->Netmask()); if (settings->NameServers().CountItems() >= 2) { fSecondaryDNSTextControl->SetText( settings->NameServers().ItemAt(1)->String()); } if (settings->NameServers().CountItems() >= 1) { fPrimaryDNSTextControl->SetText( settings->NameServers().ItemAt(0)->String()); } fDomainTextControl->SetText(settings->Domain()); _EnableTextControls(enableControls); }
status_t InterfaceHardwareView::Update() { // Populate fields with current settings if (fSettings->HasLink()) { if (fSettings->IsWireless()) { BString network = fSettings->WirelessNetwork(); network.Prepend(" ("); network.Prepend(B_TRANSLATE("connected")); network.Append(")"); fStatusField->SetText(network.String()); } else { fStatusField->SetText(B_TRANSLATE("connected")); } } else fStatusField->SetText(B_TRANSLATE("disconnected")); fMacAddressField->SetText(fSettings->HardwareAddress()); // TODO : Find how to get link speed fLinkSpeedField->SetText("100 Mb/s"); // Update Link stats ifreq_stats stats; char buffer[100]; fSettings->Stats(&stats); string_for_size(stats.send.bytes, buffer, sizeof(buffer)); fLinkTxField->SetText(buffer); string_for_size(stats.receive.bytes, buffer, sizeof(buffer)); fLinkRxField->SetText(buffer); // TODO move the wireless info to a separate tab. We should have a // BListView of available networks, rather than a menu, to make them more // readable and easier to browse and select. if (fNetworkMenuField->IsHidden(fNetworkMenuField) && fSettings->IsWireless()) { fNetworkMenuField->Show(); } else if (!fNetworkMenuField->IsHidden(fNetworkMenuField) && !fSettings->IsWireless()) { fNetworkMenuField->Hide(); } if (fSettings->IsWireless()) { // Rebuild network menu BMenu* menu = fNetworkMenuField->Menu(); menu->RemoveItems(0, menu->CountItems(), true); std::set<BNetworkAddress> associated; BNetworkAddress address; uint32 cookie = 0; while (fSettings->GetNextAssociatedNetwork(cookie, address) == B_OK) associated.insert(address); wireless_network network; int32 count = 0; cookie = 0; while (fSettings->GetNextNetwork(cookie, network) == B_OK) { BMessage* message = new BMessage(kMsgNetwork); message->AddString("device", fSettings->Name()); message->AddString("name", network.name); BMenuItem* item = new WirelessNetworkMenuItem(network.name, network.signal_strength, network.authentication_mode, message); if (associated.find(network.address) != associated.end()) item->SetMarked(true); menu->AddItem(item); count++; } if (count == 0) { BMenuItem* item = new BMenuItem( B_TRANSLATE("<no wireless networks found>"), NULL); item->SetEnabled(false); menu->AddItem(item); } else { BMenuItem* item = new BMenuItem( B_TRANSLATE("Choose automatically"), NULL); if (menu->FindMarked() == NULL) item->SetMarked(true); menu->AddItem(item, 0); menu->AddItem(new BSeparatorItem(), 1); } menu->SetTargetForItems(this); } fRenegotiate->SetEnabled(!fSettings->IsDisabled()); fOnOff->SetLabel(fSettings->IsDisabled() ? "Enable" : "Disable"); return B_OK; }