1 // Copyright 1999, Be Incorporated. All Rights Reserved. 2 // Copyright 2000-2004, Jun Suzuki. All Rights Reserved. 3 // Copyright 2007, Stephan Aßmus. All Rights Reserved. 4 // Copyright 2010-2013, Haiku, Inc. All Rights Reserved. 5 // This file may be used under the terms of the Be Sample Code License. 6 #ifndef MEDIA_CONVERTER_WINDOW_H 7 #define MEDIA_CONVERTER_WINDOW_H 8 9 10 #include <Directory.h> 11 #include <MediaDefs.h> 12 #include <MediaFormats.h> 13 #include <Window.h> 14 15 16 class BBox; 17 class BButton; 18 class BFilePanel; 19 class BMediaFile; 20 class BMenuField; 21 class BSlider; 22 class BStringView; 23 class BTextControl; 24 class MediaFileInfoView; 25 class MediaFileListView; 26 class StatusView; 27 28 class MediaConverterWindow : public BWindow { 29 public: 30 MediaConverterWindow(BRect frame); 31 virtual ~MediaConverterWindow(); 32 33 protected: 34 virtual void MessageReceived(BMessage* message); 35 virtual bool QuitRequested(); 36 37 public: 38 void LanguageChanged(); 39 40 void BuildFormatMenu(); 41 void BuildAudioVideoMenus(); 42 void GetSelectedFormatInfo( 43 media_file_format** _format, 44 media_codec_info** _audio, 45 media_codec_info** _video); 46 47 void SetStatusMessage(const char *message); 48 void SetFileMessage(const char *message); 49 50 bool AddSourceFile(BMediaFile* file, 51 const entry_ref& ref); 52 void RemoveSourceFile(int32 index); 53 int32 CountSourceFiles(); 54 status_t GetSourceFileAt(int32 index, BMediaFile** _file, 55 entry_ref* ref); 56 57 void SourceFileSelectionChanged(); 58 59 void SetEnabled(bool enabled, bool convertEnabled); 60 bool IsEnabled(); 61 62 const char* StartDuration() const; 63 const char* EndDuration() const; 64 65 int32 AudioQuality() const 66 { return fAudioQuality; } 67 int32 VideoQuality() const 68 { return fVideoQuality; } 69 70 void SetAudioQualityLabel(const char* label); 71 void SetVideoQualityLabel(const char* label); 72 73 BDirectory OutputDirectory() const; 74 75 void TruncateOutputFolderPath(); 76 77 private: 78 void _UpdateLabels(); 79 void _UpdateBBoxLayoutInsets(BBox* box); 80 void _CreateMenu(); 81 void _DestroyMenu(); 82 void _SetOutputFolder(BEntry entry); 83 84 private: 85 BButton* fConvertButton; 86 87 BButton* fDestButton; 88 BButton* fPreviewButton; 89 BBox* fSourcesBox; 90 BBox* fInfoBox; 91 BBox* fOutputBox; 92 93 BMenuBar* fMenuBar; 94 BMenuField* fFormatMenu; 95 BMenuField* fVideoMenu; 96 BMenuField* fAudioMenu; 97 BStringView* fFileStatus; 98 BStringView* fStatus; 99 MediaFileListView* fListView; 100 MediaFileInfoView* fInfoView; 101 BStringView* fOutputFolder; 102 BTextControl* fStartDurationTC; 103 BTextControl* fEndDurationTC; 104 105 BSlider* fVideoQualitySlider; 106 BSlider* fAudioQualitySlider; 107 108 int32 fVideoQuality; 109 int32 fAudioQuality; 110 111 BFilePanel* fSaveFilePanel; 112 BFilePanel* fOpenFilePanel; 113 114 BDirectory fOutputDir; 115 bool fOutputDirSpecified; 116 117 bool fEnabled; 118 bool fConverting; 119 bool fCancelling; 120 }; 121 122 #endif // MEDIA_CONVERTER_WINDOW_H 123 124 125