void XFE_FolderDropdown::selectFolder(MSG_FolderInfo *info, Boolean notify) { int i; if (m_foldersHaveChanged) { m_foldersHaveChanged = FALSE; resyncDropdown(); } for (i = 0; i < m_numinfos; i ++) { if (info == m_infos[i]) { if ( notify ) folderSelect(i); else { m_lastSelectedPosition = i; } XtVaSetValues(m_widget, XmNselectedPosition, i, 0); return; } } /* we might really want to know if the folder isn't there in the list, but this actually can happen frequently if the user deletes folders */ //XP_ASSERT(0); }
void AudioBrowserScreen::selectFolderPlus() { folderSelect(true); }
void AudioBrowserScreen::selectFolder() { folderSelect(false); }
void MediaConverterWindow::MessageReceived(BMessage* message) { entry_ref inRef; char buffer[40]; BEntry inEntry; switch (message->what) { #if B_BEOS_VERSION <= B_BEOS_VERSION_6 case B_LANGUAGE_CHANGED: LanguageChanged(); break; #endif case INIT_FORMAT_MENUS: BuildFormatMenu(); if (CountSourceFiles() == 0) SetEnabled(false, false); break; case B_SIMPLE_DATA: if (message->WasDropped()) { DetachCurrentMessage(); message->what = B_REFS_RECEIVED; BMessenger(be_app).SendMessage(message); delete message; } break; case FORMAT_SELECT_MESSAGE: BuildAudioVideoMenus(); break; case AUDIO_CODEC_SELECT_MESSAGE: break; case VIDEO_CODEC_SELECT_MESSAGE: break; case CONVERT_BUTTON_MESSAGE: if (!fConverting) { fConvertButton->SetLabel(B_TRANSLATE("Cancel")); fConverting = true; SetStatusMessage(B_TRANSLATE("Convert")); SetEnabled(false, true); BMessenger(be_app).SendMessage(START_CONVERSION_MESSAGE); } else if (!fCancelling) { fCancelling = true; SetStatusMessage(B_TRANSLATE("Cancelling" B_UTF8_ELLIPSIS)); BMessenger(be_app).SendMessage(CANCEL_CONVERSION_MESSAGE); } break; case CONVERSION_DONE_MESSAGE: { SetStatusMessage(fCancelling ? B_TRANSLATE("Conversion cancelled") : B_TRANSLATE("Conversion completed")); fConverting = false; fCancelling = false; bool enable = CountSourceFiles() > 0; SetEnabled(enable, enable); fConvertButton->SetLabel(B_TRANSLATE("Convert")); break; } case OUTPUT_FOLDER_MESSAGE: // Execute Save Panel if (fSaveFilePanel == NULL) { BButton* selectThisDir; BMessage folderSelect(FOLDER_SELECT_MESSAGE); fSaveFilePanel = new BFilePanel(B_OPEN_PANEL, NULL, NULL, B_DIRECTORY_NODE, true, &folderSelect, NULL, false, true); fSaveFilePanel->SetButtonLabel(B_DEFAULT_BUTTON, B_TRANSLATE("Select")); fSaveFilePanel->SetTarget(this); fSaveFilePanel->Window()->Lock(); fSaveFilePanel->Window()->SetTitle( B_TRANSLATE("MediaConverter+:SaveDirectory")); BRect buttonRect = fSaveFilePanel->Window()->ChildAt(0)->FindView( "cancel button")->Frame(); buttonRect.right = buttonRect.left - 20; buttonRect.left = buttonRect.right - 130; selectThisDir = new BButton(buttonRect, NULL, B_TRANSLATE("Select this folder"), new BMessage(SELECT_THIS_DIR_MESSAGE), B_FOLLOW_BOTTOM | B_FOLLOW_RIGHT); selectThisDir->SetTarget(this); fSaveFilePanel->Window()->ChildAt(0)->AddChild(selectThisDir); fSaveFilePanel->Window()->Unlock(); fSaveFilePanel->SetRefFilter(new DirectoryFilter); } fSaveFilePanel->Show(); break; case FOLDER_SELECT_MESSAGE: // "SELECT" Button at Save Panel Pushed fSaveFilePanel->GetNextSelectedRef(&inRef); inEntry.SetTo(&inRef, true); _SetOutputFolder(inEntry); fOutputDirSpecified = true; fSaveFilePanel->Rewind(); break; case SELECT_THIS_DIR_MESSAGE: // "THIS DIR" Button at Save Panel Pushed fSaveFilePanel->GetPanelDirectory(&inRef); fSaveFilePanel->Hide(); inEntry.SetTo(&inRef, true); _SetOutputFolder(inEntry); fOutputDirSpecified = true; break; case OPEN_FILE_MESSAGE: // Execute Open Panel if (!fOpenFilePanel) { fOpenFilePanel = new BFilePanel(B_OPEN_PANEL, NULL, NULL, B_FILE_NODE, true, NULL, NULL, false, true); fOpenFilePanel->SetTarget(this); } fOpenFilePanel->Show(); break; case B_REFS_RECEIVED: // Media Files Seleced by Open Panel DetachCurrentMessage(); message->what = B_REFS_RECEIVED; BMessenger(be_app).SendMessage(message); // fall through case B_CANCEL: break; case QUIT_MESSAGE: MediaConverterWindow::QuitRequested(); break; case PREVIEW_MESSAGE: { // Build the command line to launch the preview application. // TODO: Launch the default app instead of hardcoded MediaPlayer! int32 srcIndex = fListView->CurrentSelection(); BMediaFile* inFile = NULL; status_t status = GetSourceFileAt(srcIndex, &inFile, &inRef); const char* argv[3]; BString startPosString; BPath path; if (status == B_OK) { argv[0] = "-pos"; // NOTE: -pos argument is currently not supported by Haiku // MediaPlayer. startPosString << fStartDurationTC->Text(); startPosString << "000"; argv[1] = startPosString.String(); status = inEntry.SetTo(&inRef); } if (status == B_OK) { status = inEntry.GetPath(&path); if (status == B_OK) argv[2] = path.Path(); } if (status == B_OK) { status = be_roster->Launch( "application/x-vnd.Haiku-MediaPlayer", 3, (char**)argv, NULL); } if (status != B_OK && status != B_ALREADY_RUNNING) { BString errorString(B_TRANSLATE("Error launching: %strError%")); errorString.ReplaceFirst("%strError%", strerror(status)); BAlert* alert = new BAlert(B_TRANSLATE("Error"), errorString.String(), B_TRANSLATE("OK")); alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(); } break; } case VIDEO_QUALITY_CHANGED_MESSAGE: { int32 value; message->FindInt32("be:value", &value); snprintf(buffer, sizeof(buffer), B_TRANSLATE("Video quality: %3d%%"), (int8)value); fVideoQualitySlider->SetLabel(buffer); fVideoQuality = value; break; } case AUDIO_QUALITY_CHANGED_MESSAGE: { int32 value; message->FindInt32("be:value", &value); snprintf(buffer, sizeof(buffer), B_TRANSLATE("Audio quality: %3d%%"), (int8)value); fAudioQualitySlider->SetLabel(buffer); fAudioQuality = value; break; } default: BWindow::MessageReceived(message); } }