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
16class BBox;
17class BButton;
18class BFilePanel;
19class BMediaFile;
20class BMenuField;
21class BSlider;
22class BStringView;
23class BTextControl;
24class MediaFileInfoView;
25class MediaFileListView;
26class StatusView;
27
28class MediaConverterWindow : public BWindow {
29public:
30								MediaConverterWindow(BRect frame);
31	virtual						~MediaConverterWindow();
32
33protected:
34	virtual	void				MessageReceived(BMessage* message);
35	virtual	bool				QuitRequested();
36
37public:
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
77private:
78			void				_UpdateLabels();
79			void				_UpdateBBoxLayoutInsets(BBox* box);
80			void				_CreateMenu();
81			void				_DestroyMenu();
82			void				_SetOutputFolder(BEntry entry);
83
84private:
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