void TBarApp::MessageReceived(BMessage* message) { switch (message->what) { case 'gloc': case 'sloc': case 'gexp': case 'sexp': case 'info': case 'exst': case 'cwnt': case 'icon': case 'remv': case 'adon': // pass any BDeskbar originating messages on to the window fBarWindow->PostMessage(message); break; case kConfigShow: ShowPreferencesWindow(); break; case kConfigQuit: QuitPreferencesWindow(); break; case kStateChanged: if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kStateChanged); break; case kShowDeskbarMenu: if (fBarWindow->Lock()) { fBarWindow->ShowDeskbarMenu(); fBarWindow->Unlock(); } break; case kShowTeamMenu: if (fBarWindow->Lock()) { fBarWindow->ShowTeamMenu(); fBarWindow->Unlock(); } break; case kUpdateRecentCounts: int32 count; bool enabled; if (message->FindInt32("applications", &count) == B_OK) fSettings.recentAppsCount = count; if (message->FindBool("applicationsEnabled", &enabled) == B_OK) fSettings.recentAppsEnabled = enabled && count > 0; if (message->FindInt32("folders", &count) == B_OK) fSettings.recentFoldersCount = count; if (message->FindBool("foldersEnabled", &enabled) == B_OK) fSettings.recentFoldersEnabled = enabled && count > 0; if (message->FindInt32("documents", &count) == B_OK) fSettings.recentDocsCount = count; if (message->FindBool("documentsEnabled", &enabled) == B_OK) fSettings.recentDocsEnabled = enabled && count > 0; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); break; case B_SOME_APP_LAUNCHED: { team_id team = -1; message->FindInt32("be:team", &team); uint32 flags = 0; message->FindInt32("be:flags", (int32*)&flags); const char* signature = NULL; message->FindString("be:signature", &signature); entry_ref ref; message->FindRef("be:ref", &ref); AddTeam(team, flags, signature, &ref); break; } case B_SOME_APP_QUIT: { team_id team = -1; message->FindInt32("be:team", &team); RemoveTeam(team); break; } case B_ARCHIVED_OBJECT: // TODO: what's this??? message->AddString("special", "Alex Osadzinski"); fStatusViewMessenger.SendMessage(message); break; case kToggleDraggers: if (BDragger::AreDraggersDrawn()) BDragger::HideAllDraggers(); else BDragger::ShowAllDraggers(); break; case kAlwaysTop: fSettings.alwaysOnTop = !fSettings.alwaysOnTop; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); fBarWindow->SetFeel(fSettings.alwaysOnTop ? B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL); break; case kAutoRaise: fSettings.autoRaise = fSettings.alwaysOnTop ? false : !fSettings.autoRaise; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); break; case kAutoHide: fSettings.autoHide = !fSettings.autoHide; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); fBarWindow->Lock(); fBarView->HideDeskbar(fSettings.autoHide); fBarWindow->Unlock(); break; case kTrackerFirst: fSettings.trackerAlwaysFirst = !fSettings.trackerAlwaysFirst; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); fBarView->SaveExpandedItems(); fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); break; case kSortRunningApps: fSettings.sortRunningApps = !fSettings.sortRunningApps; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); fBarView->SaveExpandedItems(); fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); break; case kUnsubscribe: { BMessenger messenger; if (message->FindMessenger("messenger", &messenger) == B_OK) Unsubscribe(messenger); break; } case kSuperExpando: fSettings.superExpando = !fSettings.superExpando; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); fBarView->SaveExpandedItems(); fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); break; case kExpandNewTeams: fSettings.expandNewTeams = !fSettings.expandNewTeams; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); fBarView->SaveExpandedItems(); fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); break; case kHideLabels: fSettings.hideLabels = !fSettings.hideLabels; if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); fBarView->SaveExpandedItems(); fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); break; case kResizeTeamIcons: { int32 oldIconSize = fSettings.iconSize; int32 iconSize; if (message->FindInt32("be:value", &iconSize) != B_OK) break; fSettings.iconSize = iconSize * kIconSizeInterval; // pin icon size between min and max values if (fSettings.iconSize < kMinimumIconSize) fSettings.iconSize = kMinimumIconSize; else if (fSettings.iconSize > kMaximumIconSize) fSettings.iconSize = kMaximumIconSize; // don't resize if icon size hasn't changed if (fSettings.iconSize == oldIconSize) break; ResizeTeamIcons(); if (fPreferencesWindow != NULL) fPreferencesWindow->PostMessage(kUpdatePreferences); // if mini mode we don't need to update the view if (fBarView->MiniState()) break; fBarWindow->Lock(); fBarView->SaveExpandedItems(); if (!fBarView->Vertical()) { // Must also resize the Deskbar menu and replicant tray in // horizontal mode fBarView->PlaceDeskbarMenu(); fBarView->PlaceTray(false, false); } fBarView->PlaceApplicationBar(); fBarWindow->Unlock(); break; } case 'TASK': fSwitcherMessenger.SendMessage(message); break; case kSuspendSystem: // TODO: Call BRoster? break; case kRebootSystem: case kShutdownSystem: { bool reboot = (message->what == kRebootSystem); bool confirm; message->FindBool("confirm", &confirm); BRoster roster; BRoster::Private rosterPrivate(roster); status_t error = rosterPrivate.ShutDown(reboot, confirm, false); if (error != B_OK) fprintf(stderr, "Shutdown failed: %s\n", strerror(error)); break; } case kShowSplash: run_be_about(); break; case kRestartTracker: { BRoster roster; roster.Launch(kTrackerSignature); break; } case B_LOCALE_CHANGED: { BLocaleRoster::Default()->Refresh(); bool localize; if (message->FindBool("filesys", &localize) == B_OK) gLocalizedNamePreferred = localize; } // fall-through case kShowHideTime: case kShowSeconds: case kShowDayOfWeek: case kShowTimeZone: case kGetClockSettings: fStatusViewMessenger.SendMessage(message); // Notify the replicant tray (through BarView) that the time // interval has changed and it should update the time view // and reflow the tray icons. break; default: BApplication::MessageReceived(message); break; } }
void TBarApp::MessageReceived(BMessage* message) { switch (message->what) { case 'gloc': case 'sloc': case 'gexp': case 'sexp': case 'info': case 'exst': case 'cwnt': case 'icon': case 'remv': case 'adon': // pass any BDeskbar originating messages on to the window fBarWindow->PostMessage(message); break; case kConfigShow: ShowPreferencesWindow(); break; case kStateChanged: fPreferencesWindow->PostMessage(kStateChanged); break; case kShowBeMenu: if (fBarWindow->Lock()) { fBarWindow->ShowBeMenu(); fBarWindow->Unlock(); } break; case kShowTeamMenu: if (fBarWindow->Lock()) { fBarWindow->ShowTeamMenu(); fBarWindow->Unlock(); } break; case kUpdateRecentCounts: int32 count; bool enabled; if (message->FindInt32("applications", &count) == B_OK) fSettings.recentAppsCount = count; if (message->FindBool("applicationsEnabled", &enabled) == B_OK) fSettings.recentAppsEnabled = enabled && count > 0; if (message->FindInt32("folders", &count) == B_OK) fSettings.recentFoldersCount = count; if (message->FindBool("foldersEnabled", &enabled) == B_OK) fSettings.recentFoldersEnabled = enabled && count > 0; if (message->FindInt32("documents", &count) == B_OK) fSettings.recentDocsCount = count; if (message->FindBool("documentsEnabled", &enabled) == B_OK) fSettings.recentDocsEnabled = enabled && count > 0; break; case kConfigClose: fPreferencesWindow = NULL; break; case B_SOME_APP_LAUNCHED: { team_id team = -1; message->FindInt32("be:team", &team); uint32 flags = 0; message->FindInt32("be:flags", (long*)&flags); const char* sig = NULL; message->FindString("be:signature", &sig); entry_ref ref; message->FindRef("be:ref", &ref); AddTeam(team, flags, sig, &ref); break; } case B_SOME_APP_QUIT: { team_id team = -1; message->FindInt32("be:team", &team); RemoveTeam(team); break; } case B_ARCHIVED_OBJECT: // TODO: what's this??? message->AddString("special", "Alex Osadzinski"); fStatusViewMessenger.SendMessage(message); break; case kToggleDraggers: if (BDragger::AreDraggersDrawn()) BDragger::HideAllDraggers(); else BDragger::ShowAllDraggers(); break; case kAlwaysTop: fSettings.alwaysOnTop = !fSettings.alwaysOnTop; fBarWindow->SetFeel(fSettings.alwaysOnTop ? B_FLOATING_ALL_WINDOW_FEEL : B_NORMAL_WINDOW_FEEL); fPreferencesWindow->PostMessage(kStateChanged); break; case kAutoRaise: fSettings.autoRaise = fSettings.alwaysOnTop ? false : !fSettings.autoRaise; fBarWindow->Lock(); BarView()->UpdateEventMask(); fBarWindow->Unlock(); break; case kAutoHide: fSettings.autoHide = !fSettings.autoHide; fBarWindow->Lock(); BarView()->UpdateEventMask(); BarView()->HideDeskbar(fSettings.autoHide); fBarWindow->Unlock(); break; case kTrackerFirst: fSettings.trackerAlwaysFirst = !fSettings.trackerAlwaysFirst; fBarWindow->Lock(); BarView()->UpdatePlacement(); fBarWindow->Unlock(); break; case kSortRunningApps: fSettings.sortRunningApps = !fSettings.sortRunningApps; fBarWindow->Lock(); BarView()->UpdatePlacement(); fBarWindow->Unlock(); break; case kUnsubscribe: { BMessenger messenger; if (message->FindMessenger("messenger", &messenger) == B_OK) Unsubscribe(messenger); break; } case kSuperExpando: fSettings.superExpando = !fSettings.superExpando; fBarWindow->Lock(); BarView()->UpdatePlacement(); fBarWindow->Unlock(); break; case kExpandNewTeams: fSettings.expandNewTeams = !fSettings.expandNewTeams; fBarWindow->Lock(); BarView()->UpdatePlacement(); fBarWindow->Unlock(); break; case 'TASK': fSwitcherMessenger.SendMessage(message); break; case kSuspendSystem: // TODO: Call BRoster? break; case kRebootSystem: case kShutdownSystem: { bool reboot = (message->what == kRebootSystem); bool confirm; message->FindBool("confirm", &confirm); BRoster roster; BRoster::Private rosterPrivate(roster); status_t error = rosterPrivate.ShutDown(reboot, confirm, false); if (error != B_OK) fprintf(stderr, "Shutdown failed: %s\n", strerror(error)); break; } case kShowSplash: run_be_about(); break; case kRestartTracker: { BRoster roster; roster.Launch(kTrackerSignature); break; } case B_LOCALE_CHANGED: { BLocaleRoster::Default()->Refresh(); bool localize; if (message->FindBool("filesys", &localize) == B_OK) gLocalizedNamePreferred = localize; BMessenger(fBarWindow->FindView("_deskbar_tv_")).SendMessage( message); // Notify the TimeView that the format has changed and it should // recompute its size break; } default: BApplication::MessageReceived(message); break; } }