xref: /haiku/src/apps/mediaconverter/MediaConverterWindow.h (revision 1e60bdeab63fa7a57bc9a55b032052e95a18bd2c)
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