void SettingsWindow::_ChooseDownloadFolder(const BMessage* message) { if (fOpenFilePanel == NULL) { BMessenger target(this); fOpenFilePanel = new (std::nothrow) BFilePanel(B_OPEN_PANEL, &target, NULL, B_DIRECTORY_NODE); } BMessage panelMessage(MSG_HANDLE_DOWNLOAD_FOLDER); fOpenFilePanel->SetMessage(&panelMessage); fOpenFilePanel->Show(); }
void MainApp::_ShowFilePanel(BFilePanel* panel, uint32 command, const BMessage* message, const char* defaultTitle, const char* defaultLabel) { // printf("_ShowFilePanel()\n"); // message->PrintToStream(); BMessage panelMessage(command); if (message != NULL) { BMessage targetMessage; if (message->FindMessage("message", &targetMessage) == B_OK) panelMessage.AddMessage("message", &targetMessage); BMessenger target; if (message->FindMessenger("target", &target) == B_OK) panelMessage.AddMessenger("target", target); const char* panelTitle; if (message->FindString("title", &panelTitle) != B_OK) panelTitle = defaultTitle; { BString finalPanelTitle = "MediaPlayer: "; finalPanelTitle << panelTitle; BAutolock lock(panel->Window()); panel->Window()->SetTitle(finalPanelTitle.String()); } const char* buttonLabel; if (message->FindString("label", &buttonLabel) != B_OK) buttonLabel = defaultLabel; panel->SetButtonLabel(B_DEFAULT_BUTTON, buttonLabel); } // panelMessage.PrintToStream(); panel->SetMessage(&panelMessage); if (fLastFilePanelFolder != entry_ref()) { panel->SetPanelDirectory(&fLastFilePanelFolder); } panel->Show(); }