void TTracker::MessageReceived(BMessage *message) { if (HandleScriptingMessage(message)) return; switch (message->what) { case kGetInfo: OpenInfoWindows(message); break; case kMoveToTrash: MoveRefsToTrash(message); break; case kCloseWindowAndChildren: { const node_ref *itemNode; int32 bytes; message->FindData("node_ref", B_RAW_TYPE, (const void **)&itemNode, &bytes); CloseWindowAndChildren(itemNode); break; } case kCloseAllWindows: CloseAllWindows(); break; case kCloseAllInWorkspace: CloseAllInWorkspace(); break; case kFindButton: (new FindWindow())->Show(); break; case kEditQuery: EditQueries(message); break; case kShowSplash: run_be_about(); break; case kAddPrinter: // show the addprinter window run_add_printer_panel(); break; case kMakeActivePrinter: // get the current selection SetDefaultPrinter(message); break; #ifdef MOUNT_MENU_IN_DESKBAR case 'gmtv': { // Someone (probably the deskbar) has requested a list of // mountable volumes. BMessage reply; AutoMounterLoop()->EachMountableItemAndFloppy(&AddMountableItemToMessage, &reply); message->SendReply(&reply); break; } #endif case kUnmountVolume: // When the user attempts to unmount a volume from the mount // context menu, this is where the message gets received. // Save pose locations and forward this to the automounter SaveAllPoseLocations(); // Fall through... case kMountVolume: case kMountAllNow: MountServer().SendMessage(message); break; case kRunAutomounterSettings: AutomountSettingsDialog::RunAutomountSettings(MountServer()); break; case kRestoreBackgroundImage: { BDeskWindow *desktop = GetDeskWindow(); AutoLock<BWindow> lock(desktop); desktop->UpdateDesktopBackgroundImages(); break; } case kShowSettingsWindow: ShowSettingsWindow(); break; case kFavoriteCountChangedExternally: SendNotices(kFavoriteCountChangedExternally, message); break; case kStartWatchClipboardRefs: { BMessenger messenger; message->FindMessenger("target", &messenger); if (messenger.IsValid()) fClipboardRefsWatcher->AddToNotifyList(messenger); break; } case kStopWatchClipboardRefs: { BMessenger messenger; message->FindMessenger("target", &messenger); if (messenger.IsValid()) fClipboardRefsWatcher->RemoveFromNotifyList(messenger); break; } case kFSClipboardChanges: fClipboardRefsWatcher->UpdatePoseViews(message); break; case kShowVolumeSpaceBar: case kSpaceBarColorChanged: gPeriodicUpdatePoses.DoPeriodicUpdate(true); break; case B_LOCALE_CHANGED: { BLocaleRoster::Default()->Refresh(); bool localize; if (message->FindBool("filesys", &localize) == B_OK) gLocalizedNamePreferred = localize; break; } default: _inherited::MessageReceived(message); break; } }
void TTracker::MessageReceived(BMessage *message) { if (HandleScriptingMessage(message)) return; switch (message->what) { case kGetInfo: OpenInfoWindows(message); break; case kMoveToTrash: MoveRefsToTrash(message); break; case kCloseWindowAndChildren: { const node_ref *itemNode; int32 bytes; message->FindData("node_ref", B_RAW_TYPE, (const void **)&itemNode, &bytes); CloseWindowAndChildren(itemNode); break; } case kCloseAllWindows: CloseAllWindows(); break; case kFindButton: (new FindWindow())->Show(); break; case kEditQuery: EditQueries(message); break; case kUnmountVolume: // When the user attempts to unmount a volume from the mount // context menu, this is where the message gets received. Save // pose locations and forward this to the automounter SaveAllPoseLocations(); fAutoMounter->PostMessage(message); break; case kRunAutomounterSettings: AutomountSettingsDialog::RunAutomountSettings(fAutoMounter); break; case kShowSplash: { // The AboutWindow was moved out of the Tracker in preparation // for when we open source it. The AboutBox contains important // credit and license issues that shouldn't be modified, and // therefore shouldn't be open sourced. However, there is a public // API for 3rd party apps to tell the Tracker to open the AboutBox. run_be_about(); break; } case kAddPrinter: // show the addprinter window run_add_printer_panel(); break; case kMakeActivePrinter: // get the current selection SetDefaultPrinter(message); break; #ifdef MOUNT_MENU_IN_DESKBAR case 'gmtv': { // Someone (probably the deskbar) has requested a list of // mountable volumes. BMessage reply; AutoMounterLoop()->EachMountableItemAndFloppy(&AddMountableItemToMessage, &reply); message->SendReply(&reply); break; } #endif case kMountVolume: case kMountAllNow: AutoMounterLoop()->PostMessage(message); break; case kRestoreBackgroundImage: { BDeskWindow *desktop = GetDeskWindow(); AutoLock<BWindow> lock(desktop); desktop->UpdateDesktopBackgroundImages(); } break; case kShowSettingsWindow: ShowSettingsWindow(); break; case kFavoriteCountChangedExternally: SendNotices(kFavoriteCountChangedExternally, message); break; case kStartWatchClipboardRefs: { BMessenger messenger; message->FindMessenger("target", &messenger); if (messenger.IsValid()) fClipboardRefsWatcher->AddToNotifyList(messenger); break; } case kStopWatchClipboardRefs: { BMessenger messenger; message->FindMessenger("target", &messenger); if (messenger.IsValid()) fClipboardRefsWatcher->RemoveFromNotifyList(messenger); break; } default: _inherited::MessageReceived(message); break; } }
status_t PrintServerApp::async_thread(void* data) { AsyncThreadParams* p = (AsyncThreadParams*)data; Printer* printer = p->printer; BMessage* msg = p->AcquireMessage(); { AutoReply sender(msg, 'stop'); switch (msg->what) { // Handle showing the config dialog case PSRV_SHOW_PAGE_SETUP: { case PSRV_SHOW_PRINT_SETUP: if (printer) { if (p->app->fUseConfigWindow) { config_setup_kind kind = kJobSetup; if (msg->what == PSRV_SHOW_PAGE_SETUP) kind = kPageSetup; ConfigWindow* w = new ConfigWindow(kind, printer, msg, &sender); w->Go(); } else { BMessage reply(*msg); status_t status = B_ERROR; if (msg->what == PSRV_SHOW_PAGE_SETUP) status = printer->ConfigurePage(reply); else status = printer->ConfigureJob(reply); if (status == B_OK) sender.SetReply(&reply); } } else { // If no default printer is set, give user // choice of aborting or setting up a printer int32 count = Printer::CountPrinters(); BString alertText( B_TRANSLATE("There are no printers set up.")); if (count > 0) alertText.SetTo(B_TRANSLATE( "There is no default printer set up.")); alertText.Append(" "); alertText.Append( B_TRANSLATE("Would you like to set one up now?")); BAlert* alert = new BAlert("Info", alertText.String(), B_TRANSLATE("No"), B_TRANSLATE("Yes")); alert->SetShortcut(0, B_ESCAPE); if (alert->Go() == 1) { if (count == 0) run_add_printer_panel(); else run_select_printer_panel(); } } } break; // Retrieve default configuration message from printer add-on case PSRV_GET_DEFAULT_SETTINGS: { if (printer) { BMessage reply; if (printer->GetDefaultSettings(reply) == B_OK) { sender.SetReply(&reply); break; } } } break; // Create a new printer case PSRV_MAKE_PRINTER: { BString driverName; BString printerName; BString transportName; BString transportPath; if (msg->FindString("driver", &driverName) == B_OK && msg->FindString("transport", &transportName) == B_OK && msg->FindString("transport path", &transportPath) == B_OK && msg->FindString("printer name", &printerName) == B_OK) { BString connection; if (msg->FindString("connection", &connection) != B_OK) connection = "Local"; // then create the actual printer if (p->app->CreatePrinter(printerName.String(), driverName.String(), connection.String(), transportName.String(), transportPath.String()) == B_OK) { // If printer was created ok, // ask if it needs to be the default BString text(B_TRANSLATE("Would you like to make @ " "the default printer?")); text.ReplaceFirst("@", printerName.String()); BAlert* alert = new BAlert("", text.String(), B_TRANSLATE("No"), B_TRANSLATE("Yes")); alert->SetShortcut(0, B_ESCAPE); if (alert->Go() == 1) p->app->SelectPrinter(printerName.String()); } } } break; } } delete p; return B_OK; }