BListItem* NetworkWindow::_CreateItem(const char* label) { BListItem* item = new TitleItem(label); item->SetExpanded(true); fListView->AddItem(item); return item; }
bool BrowseView::NextInList(BOutlineListView *list, const char *nameToSearch, BListItem *afterThis) { myItem = afterThis; notYet = (afterThis!=NULL); myStr = nameToSearch; list->FullListDoForEach(&iterate,(void*)this); if ((myItem == NULL) || (myItem == afterThis)) { // un item suivant n'a pas été trouvé if (afterThis == NULL) // ben ya vraiment rien return false; // on peut peut être en trouver un avant myItem = NULL; list->FullListDoForEach(&iterate,(void*)this); if ((myItem == NULL) || (myItem == afterThis)) // ça veut vraiment pas! return false; } // on a donc un nouvel item à sélectionner BListItem *iterate = list->Superitem(myItem), *oldIterate = NULL; while (iterate != NULL) { iterate->SetExpanded(true); oldIterate = iterate; iterate = list->Superitem(iterate); } // ce petit truc de Collapse/Expand permet d'être sûr que la outlinelist est mise à jour // j'ai fait comme ça parce que BOutlineListView::Expand() ne marche pas sur un item // qui n'est pas encore visible. BListItem::SetExpanded marche mais ne met pas à jour // l'affichage if (oldIterate != NULL) { list->Collapse(oldIterate); list->Expand(oldIterate); } // maintenant l'item devrait être visible unsigned int n = list->IndexOf(myItem); if (n<0) return false; // ben non! list->Select(n); list->ScrollToSelection(); return true; }
void LocaleWindow::_Defaults() { BMessage preferredLanguages; preferredLanguages.AddString("language", "en"); MutableLocaleRoster::Default()->SetPreferredLanguages(&preferredLanguages); _SetPreferredLanguages(preferredLanguages); BFormattingConventions conventions("en_US"); MutableLocaleRoster::Default()->SetDefaultFormattingConventions( conventions); fConventionsListView->DeselectAll(); if (fDefaultConventionsItem != NULL) { BListItem* superitem = fConventionsListView->Superitem(fDefaultConventionsItem); if (superitem != NULL && !superitem->IsExpanded()) superitem->SetExpanded(true); fConventionsListView->Select(fConventionsListView->IndexOf( fDefaultConventionsItem)); fConventionsListView->ScrollToSelection(); } }
void LocaleWindow::MessageReceived(BMessage* message) { switch (message->what) { case kMsgDefaults: _Defaults(); break; case kMsgRevert: { _Revert(); fFormatView->Revert(); fConventionsListView->DeselectAll(); if (fInitialConventionsItem != NULL) { BListItem* superitem = fConventionsListView->Superitem(fInitialConventionsItem); if (superitem != NULL) superitem->SetExpanded(true); fConventionsListView->Select(fConventionsListView->IndexOf( fInitialConventionsItem)); fConventionsListView->ScrollToSelection(); } _SettingsReverted(); break; } case kMsgSettingsChanged: _SettingsChanged(); break; case kMsgLanguageDragged: { void* target = NULL; if (message->FindPointer("drop_target", &target) != B_OK || target != fPreferredListView) break; // Add from available languages to preferred languages int32 dropIndex; if (message->FindInt32("drop_index", &dropIndex) != B_OK) dropIndex = fPreferredListView->CountItems(); int32 index = 0; for (int32 i = 0; message->FindInt32("index", i, &index) == B_OK; i++) { LanguageListItem* item = static_cast<LanguageListItem*>( fLanguageListView->FullListItemAt(index)); _InsertPreferredLanguage(item, dropIndex++); } break; } case kMsgLanguageInvoked: { int32 index = 0; for (int32 i = 0; message->FindInt32("index", i, &index) == B_OK; i++) { LanguageListItem* item = static_cast<LanguageListItem*>( fLanguageListView->ItemAt(index)); _InsertPreferredLanguage(item); } break; } case kMsgPreferredLanguageDragged: { void* target = NULL; if (fPreferredListView->CountItems() == 1 || message->FindPointer("drop_target", &target) != B_OK) break; if (target == fPreferredListView) { // change ordering int32 dropIndex = message->FindInt32("drop_index"); int32 index = 0; if (message->FindInt32("index", &index) == B_OK && dropIndex != index) { BListItem* item = fPreferredListView->RemoveItem(index); if (dropIndex > index) index--; fPreferredListView->AddItem(item, dropIndex); _PreferredLanguagesChanged(); } break; } // supposed to fall through - remove item } case kMsgPreferredLanguageDeleted: case kMsgPreferredLanguageInvoked: { if (fPreferredListView->CountItems() == 1) break; // Remove from preferred languages int32 index = 0; if (message->FindInt32("index", &index) == B_OK) { delete fPreferredListView->RemoveItem(index); _PreferredLanguagesChanged(); if (message->what == kMsgPreferredLanguageDeleted) fPreferredListView->Select(index); } break; } case kMsgConventionsSelection: { // Country selection changed. // Get the new selected country from the ListView and send it to the // main app event handler. void* listView; if (message->FindPointer("source", &listView) != B_OK) break; BListView* conventionsList = static_cast<BListView*>(listView); if (conventionsList == NULL) break; LanguageListItem* item = static_cast<LanguageListItem*> (conventionsList->ItemAt(conventionsList->CurrentSelection())); if (item == NULL) break; BFormattingConventions conventions(item->ID()); MutableLocaleRoster::Default()->SetDefaultFormattingConventions( conventions); _SettingsChanged(); fFormatView->Refresh(); break; } case kMsgFilesystemTranslationChanged: { MutableLocaleRoster::Default()->SetFilesystemTranslationPreferred( fFilesystemTranslationCheckbox->Value()); BAlert* alert = new BAlert(B_TRANSLATE("Locale"), B_TRANSLATE("Deskbar and Tracker need to be restarted for this " "change to take effect. Would you like to restart them now?"), B_TRANSLATE("Cancel"), B_TRANSLATE("Restart"), NULL, B_WIDTH_FROM_WIDEST, B_IDEA_ALERT); alert->SetShortcut(0, B_ESCAPE); alert->Go(new BInvoker(new BMessage(kMsgRestartTrackerAndDeskbar), NULL, be_app)); break; } default: BWindow::MessageReceived(message); break; } }