/** * @brief Sets associated data of specified index. * @param[in] index item index. * @param[in] data associated data. */ void BeListViewAdapter::SetItemData(SInt32 index, void* data) { BListView* listView = getListView(); BeGenericDataStringItem* listItem = dynamic_cast<BeGenericDataStringItem*>(listView->ItemAt(index)); if (NULL != listItem) { listItem->SetItemData(data); } }
/** * @brief Sets a string at specified index from the control. * @param[in] index index * @param[out] text a string value to set. */ void BeListViewAdapter::SetItemText(SInt32 index, ConstAStr text) { BListView* listView = getListView(); BeGenericDataStringItem* listItem = dynamic_cast<BeGenericDataStringItem*>(listView->ItemAt(index)); if (NULL != listItem) { listItem->SetText(text); } }
BStringItem * GuideWindow::getFocusSelectedItem() { BListView *view; view = getCurrentListView(); int32 sel = view->CurrentSelection(); if(sel >= 0) { return (BStringItem *)view->ItemAt(sel); } return NULL; }
/** * @brief Returns associated data of specified index. * @param[in] index item index. * @return associated data. */ void* BeListViewAdapter::GetItemData(SInt32 index) { BListView* listView = getListView(); BeGenericDataStringItem* listItem = dynamic_cast<BeGenericDataStringItem*>(listView->ItemAt(index)); if (NULL != listItem) { return listItem->GetItemData(); } else { return NULL; } }
/** * @brief Gets a string at specified index from the control. * @param[in] index index * @param[out] text a string value is returned. */ void BeListViewAdapter::GetItemText(SInt32 index, MBCString& text) { BListView* listView = getListView(); BStringItem* listItem = dynamic_cast<BStringItem*>(listView->ItemAt(index)); if (NULL != listItem) { text = listItem->Text(); } else { text.Empty(); } }
void SearchApp::LaunchFile(BMessage *message) { BListView *searchResults ; int32 index ; message->FindPointer("source", (void**)&searchResults) ; message->FindInt32("index", &index) ; BStringItem *result = (BStringItem*)searchResults->ItemAt(index) ; entry_ref ref ; BEntry entry(result->Text()) ; entry.GetRef(&ref) ; be_roster->Launch(&ref) ; }
/** * @brief Makes the control enabled or disabled. * @param[in] doEnable true to enable the control, or false to disable the control. */ void BeListViewAdapter::Enable(bool doEnable) { BListView* listView = getListView(); int32 count = listView->CountItems(); int32 index; for (index = 0; index < count; index++) { BListItem* listItem = listView->ItemAt(index); listItem->SetEnabled(doEnable); } listView->LockLooper(); listView->Invalidate(); listView->UnlockLooper(); isEnabled = doEnable; }
static char* haikuListGetIdValueAttrib(Ihandle* ih, int id) { BView* view = (BView*)ih->handle; BMenuField* menu = dynamic_cast<BMenuField*>(view); if(menu) { UNIMPLEMENTED return NULL; } BListView* listview = iuphaikuGetListView(view); if(listview) { BStringItem* item = (BStringItem*)listview->ItemAt(id - 1); return (char*)item->Text(); } else { fprintf(stderr, "View hierarchy problem\n"); } return NULL; }
void ModulesView::MessageReceived(BMessage* message) { switch (message->what) { case kMsgSaverSelected: { int selection = fScreenSaversListView->CurrentSelection(); if (selection < 0) break; ScreenSaverItem* item = (ScreenSaverItem*)fScreenSaversListView->ItemAt(selection); if (item == NULL) break; if (strcmp(item->Text(), B_TRANSLATE("Blackness")) == 0) fSettings.SetModuleName(""); else fSettings.SetModuleName(item->Text()); SaveState(); _CloseSaver(); _OpenSaver(); fSettings.Save(); break; } case kMsgTestSaver: { SaveState(); fSettings.Save(); _CloseSaver(); be_roster->StartWatching(BMessenger(this, Looper()), B_REQUEST_QUIT); if (be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.Message(), &fScreenSaverTestTeam) == B_OK) { break; } // Try really hard to launch it. It's very likely that this fails // when we run from the CD, and there is only an incomplete mime // database for example... BPath path; if (find_directory(B_SYSTEM_BIN_DIRECTORY, &path) != B_OK || path.Append("screen_blanker") != B_OK) { path.SetTo("/bin/screen_blanker"); } BEntry entry(path.Path()); entry_ref ref; if (entry.GetRef(&ref) == B_OK) { be_roster->Launch(&ref, &fSettings.Message(), &fScreenSaverTestTeam); } break; } case kMsgAddSaver: fFilePanel->Show(); break; case B_SOME_APP_QUIT: { team_id team; if (message->FindInt32("be:team", &team) == B_OK && team == fScreenSaverTestTeam) { be_roster->StopWatching(this); _OpenSaver(); } break; } default: BView::MessageReceived(message); } }
void KeymapWindow::MessageReceived(BMessage* message) { switch (message->what) { case B_SIMPLE_DATA: case B_REFS_RECEIVED: { entry_ref ref; int32 i = 0; while (message->FindRef("refs", i++, &ref) == B_OK) { fCurrentMap.Load(ref); fAppliedMap = fCurrentMap; } fKeyboardLayoutView->SetKeymap(&fCurrentMap); fSystemListView->DeselectAll(); fUserListView->DeselectAll(); break; } case B_SAVE_REQUESTED: { entry_ref ref; const char *name; if (message->FindRef("directory", &ref) == B_OK && message->FindString("name", &name) == B_OK) { BDirectory directory(&ref); BEntry entry(&directory, name); entry.GetRef(&ref); fCurrentMap.SetName(name); fCurrentMap.Save(ref); fAppliedMap = fCurrentMap; _FillUserMaps(); fCurrentMapName = name; _SelectCurrentMap(); } break; } case kMsgMenuFileOpen: fOpenPanel->Show(); break; case kMsgMenuFileSaveAs: fSavePanel->Show(); break; case kChangeKeyboardLayout: { entry_ref ref; BPath path; if (message->FindRef("ref", &ref) == B_OK) path.SetTo(&ref); _SetKeyboardLayout(path.Path()); break; } case kMsgSwitchShortcuts: _SwitchShortcutKeys(); break; case kMsgMenuFontChanged: { BMenuItem *item = fFontMenu->FindMarked(); if (item != NULL) { BFont font; font.SetFamilyAndStyle(item->Label(), NULL); fKeyboardLayoutView->SetFont(font); fTextControl->TextView()->SetFontAndColor(&font); } break; } case kMsgSystemMapSelected: case kMsgUserMapSelected: { BListView* listView; BListView* otherListView; if (message->what == kMsgSystemMapSelected) { listView = fSystemListView; otherListView = fUserListView; } else { listView = fUserListView; otherListView = fSystemListView; } int32 index = listView->CurrentSelection(); if (index < 0) break; // Deselect item in other BListView otherListView->DeselectAll(); if (index == 0 && listView == fUserListView) { // we can safely ignore the "(Current)" item break; } KeymapListItem* item = static_cast<KeymapListItem*>(listView->ItemAt(index)); if (item != NULL) { fCurrentMap.Load(item->EntryRef()); fAppliedMap = fCurrentMap; fKeyboardLayoutView->SetKeymap(&fCurrentMap); _UseKeymap(); _UpdateButtons(); } break; } case kMsgRevertKeymap: _RevertKeymap(); _UpdateButtons(); break; case kMsgKeymapUpdated: _UpdateButtons(); fSystemListView->DeselectAll(); fUserListView->Select(0L); break; case kMsgDeadKeyAcuteChanged: { BMenuItem* item = fAcuteMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyAcute, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyCircumflexChanged: { BMenuItem* item = fCircumflexMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyCircumflex, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyDiaeresisChanged: { BMenuItem* item = fDiaeresisMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyDiaeresis, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyGraveChanged: { BMenuItem* item = fGraveMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyGrave, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyTildeChanged: { BMenuItem* item = fTildeMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyTilde, trigger); fKeyboardLayoutView->Invalidate(); } break; } default: BWindow::MessageReceived(message); break; } }
void KeymapWindow::MessageReceived(BMessage* message) { switch (message->what) { case B_SIMPLE_DATA: case B_REFS_RECEIVED: { entry_ref ref; int32 i = 0; while (message->FindRef("refs", i++, &ref) == B_OK) { fCurrentMap.Load(ref); fAppliedMap = fCurrentMap; } fKeyboardLayoutView->SetKeymap(&fCurrentMap); fSystemListView->DeselectAll(); fUserListView->DeselectAll(); break; } case B_SAVE_REQUESTED: { entry_ref ref; const char* name; if (message->FindRef("directory", &ref) == B_OK && message->FindString("name", &name) == B_OK) { BDirectory directory(&ref); BEntry entry(&directory, name); entry.GetRef(&ref); fCurrentMap.SetName(name); fCurrentMap.Save(ref); fAppliedMap = fCurrentMap; _FillUserMaps(); fCurrentMapName = name; _SelectCurrentMap(); } break; } case kMsgMenuFileOpen: fOpenPanel->Show(); break; case kMsgMenuFileSaveAs: fSavePanel->Show(); break; case kMsgShowModifierKeysWindow: be_app->PostMessage(kMsgShowModifierKeysWindow); break; case kChangeKeyboardLayout: { entry_ref ref; BPath path; if (message->FindRef("ref", &ref) == B_OK) path.SetTo(&ref); _SetKeyboardLayout(path.Path()); break; } case kMsgSwitchShortcuts: _SwitchShortcutKeys(); break; case kMsgMenuFontChanged: { BMenuItem* item = fFontMenu->FindMarked(); if (item != NULL) { BFont font; font.SetFamilyAndStyle(item->Label(), NULL); fKeyboardLayoutView->SetBaseFont(font); fTextControl->TextView()->SetFontAndColor(&font); } break; } case kMsgSystemMapSelected: case kMsgUserMapSelected: { BListView* listView; BListView* otherListView; if (message->what == kMsgSystemMapSelected) { listView = fSystemListView; otherListView = fUserListView; } else { listView = fUserListView; otherListView = fSystemListView; } int32 index = listView->CurrentSelection(); if (index < 0) break; // Deselect item in other BListView otherListView->DeselectAll(); if (index == 0 && listView == fUserListView) { // we can safely ignore the "(Current)" item break; } KeymapListItem* item = static_cast<KeymapListItem*>(listView->ItemAt(index)); if (item != NULL) { fCurrentMap.Load(item->EntryRef()); fAppliedMap = fCurrentMap; fKeyboardLayoutView->SetKeymap(&fCurrentMap); _UseKeymap(); _UpdateButtons(); } break; } case kMsgDefaultKeymap: _DefaultKeymap(); _UpdateButtons(); break; case kMsgRevertKeymap: _RevertKeymap(); _UpdateButtons(); break; case kMsgUpdateNormalKeys: { uint32 keyCode; if (message->FindUInt32("keyCode", &keyCode) != B_OK) break; bool unset; if (message->FindBool("unset", &unset) == B_OK && unset) { fCurrentMap.SetKey(keyCode, modifiers(), 0, "", 0); _UpdateButtons(); fKeyboardLayoutView->SetKeymap(&fCurrentMap); } break; } case kMsgUpdateModifierKeys: { uint32 keyCode; bool unset; if (message->FindBool("unset", &unset) != B_OK) unset = false; if (message->FindUInt32("left_shift_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_SHIFT_KEY); } if (message->FindUInt32("right_shift_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_SHIFT_KEY); } if (message->FindUInt32("left_control_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_CONTROL_KEY); } if (message->FindUInt32("right_control_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_CONTROL_KEY); } if (message->FindUInt32("left_option_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_OPTION_KEY); } if (message->FindUInt32("right_option_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_OPTION_KEY); } if (message->FindUInt32("left_command_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_LEFT_COMMAND_KEY); } if (message->FindUInt32("right_command_key", &keyCode) == B_OK) { fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_RIGHT_COMMAND_KEY); } if (message->FindUInt32("menu_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_MENU_KEY); if (message->FindUInt32("caps_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_CAPS_LOCK); if (message->FindUInt32("num_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_NUM_LOCK); if (message->FindUInt32("scroll_key", &keyCode) == B_OK) fCurrentMap.SetModifier(unset ? 0x00 : keyCode, B_SCROLL_LOCK); _UpdateButtons(); fKeyboardLayoutView->SetKeymap(&fCurrentMap); break; } case kMsgKeymapUpdated: _UpdateButtons(); fSystemListView->DeselectAll(); fUserListView->Select(0L); break; case kMsgDeadKeyAcuteChanged: { BMenuItem* item = fAcuteMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyAcute, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyCircumflexChanged: { BMenuItem* item = fCircumflexMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyCircumflex, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyDiaeresisChanged: { BMenuItem* item = fDiaeresisMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyDiaeresis, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyGraveChanged: { BMenuItem* item = fGraveMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyGrave, trigger); fKeyboardLayoutView->Invalidate(); } break; } case kMsgDeadKeyTildeChanged: { BMenuItem* item = fTildeMenu->FindMarked(); if (item != NULL) { const char* trigger = item->Label(); if (strcmp(trigger, kDeadKeyTriggerNone) == 0) trigger = NULL; fCurrentMap.SetDeadKeyTrigger(kDeadKeyTilde, trigger); fKeyboardLayoutView->Invalidate(); } break; } default: BWindow::MessageReceived(message); break; } }
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; } }
void TEnclosuresView::MessageReceived(BMessage *msg) { switch (msg->what) { case LIST_INVOKED: { BListView *list; msg->FindPointer("source", (void **)&list); if (list) { TListItem *item = (TListItem *) (list->ItemAt(msg->FindInt32("index"))); if (item) { BMessenger tracker("application/x-vnd.Be-TRAK"); if (tracker.IsValid()) { BMessage message(B_REFS_RECEIVED); message.AddRef("refs", item->Ref()); tracker.SendMessage(&message); } } } break; } case M_REMOVE: { int32 index; while ((index = fList->CurrentSelection()) >= 0) { TListItem *item = (TListItem *) fList->ItemAt(index); fList->RemoveItem(index); if (item->Component()) { TMailWindow *window = dynamic_cast<TMailWindow *>(Window()); if (window && window->Mail()) window->Mail()->RemoveComponent(item->Component()); (new BAlert("", TR( "Removing attachments from a forwarded mail is not yet " "implemented!\nIt will not yet work correctly."), TR("OK")))->Go(); } else watch_node(item->NodeRef(), B_STOP_WATCHING, this); delete item; } break; } case M_SELECT: fList->Select(0, fList->CountItems() - 1, true); break; case B_SIMPLE_DATA: case B_REFS_RECEIVED: case REFS_RECEIVED: if (msg->HasRef("refs")) { bool badType = false; int32 index = 0; entry_ref ref; while (msg->FindRef("refs", index++, &ref) == B_NO_ERROR) { BFile file(&ref, O_RDONLY); if (file.InitCheck() == B_OK && file.IsFile()) { TListItem *item; for (int16 loop = 0; loop < fList->CountItems(); loop++) { item = (TListItem *) fList->ItemAt(loop); if (ref == *(item->Ref())) { fList->Select(loop); fList->ScrollToSelection(); continue; } } fList->AddItem(item = new TListItem(&ref)); fList->Select(fList->CountItems() - 1); fList->ScrollToSelection(); watch_node(item->NodeRef(), B_WATCH_NAME, this); } else badType = true; } if (badType) { beep(); (new BAlert("", TR("Only files can be added as attachments."), TR("OK")))->Go(); } } break; case B_NODE_MONITOR: { int32 opcode; if (msg->FindInt32("opcode", &opcode) == B_NO_ERROR) { dev_t device; if (msg->FindInt32("device", &device) < B_OK) break; ino_t inode; if (msg->FindInt64("node", &inode) < B_OK) break; for (int32 index = fList->CountItems();index-- > 0;) { TListItem *item = static_cast<TListItem *>(fList->ItemAt(index)); if (device == item->NodeRef()->device && inode == item->NodeRef()->node) { if (opcode == B_ENTRY_REMOVED) { // don't hide the <missing attachment> item //fList->RemoveItem(index); // //watch_node(item->NodeRef(), B_STOP_WATCHING, this); //delete item; } else if (opcode == B_ENTRY_MOVED) { item->Ref()->device = device; msg->FindInt64("to directory", &item->Ref()->directory); const char *name; msg->FindString("name", &name); item->Ref()->set_name(name); } fList->InvalidateItem(index); break; } } } break; } default: BView::MessageReceived(msg); } }
void LocaleWindow::MessageReceived(BMessage* message) { switch (message->what) { case kMsgDefaults: _Defaults(); break; case kMsgRevert: be_app_messenger.SendMessage(message); _UpdatePreferredFromLocaleRoster(); 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 kMsgCountrySelection: { // 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* countryList = static_cast<BListView*>(listView); LanguageListItem* item = static_cast<LanguageListItem*> (countryList->ItemAt(countryList->CurrentSelection())); BMessage newMessage(kMsgSettingsChanged); newMessage.AddString("country", item->ID()); be_app_messenger.SendMessage(&newMessage); SettingsChanged(); BCountry* country = new BCountry(item->ID()); fFormatView->SetCountry(country); break; } default: BWindow::MessageReceived(message); break; } }