xref: /haiku/src/apps/mediaplayer/settings/Settings.h (revision e65a6eb2e02c3b50ee594733f16b313562eaaf9c)
14d3ebaccSStephan Aßmus /*
24d3ebaccSStephan Aßmus  * Copyright 2008, Haiku. All rights reserved.
34d3ebaccSStephan Aßmus  * Distributed under the terms of the MIT License.
44d3ebaccSStephan Aßmus  *
54d3ebaccSStephan Aßmus  * Authors:
64d3ebaccSStephan Aßmus  *		Fredrik Modéen <fredrik@modeen.se>
74d3ebaccSStephan Aßmus  */
84d3ebaccSStephan Aßmus 
926e9cdb7SStephan Aßmus #ifndef SETTINGS_H
1026e9cdb7SStephan Aßmus #define SETTINGS_H
114d3ebaccSStephan Aßmus 
12ac6b0fc9SStephan Aßmus #include <Entry.h>
1326e9cdb7SStephan Aßmus #include <Locker.h>
144d3ebaccSStephan Aßmus 
15613ecaf5SStephan Aßmus #include "Notifier.h"
1626e9cdb7SStephan Aßmus #include "SettingsMessage.h"
174d3ebaccSStephan Aßmus 
184d3ebaccSStephan Aßmus struct mpSettings {
19*e65a6eb2SStephan Aßmus 			enum {
20*e65a6eb2SStephan Aßmus 				SUBTITLE_SIZE_SMALL = 0,
21*e65a6eb2SStephan Aßmus 				SUBTITLE_SIZE_MEDIUM = 1,
22*e65a6eb2SStephan Aßmus 				SUBTITLE_SIZE_LARGE = 2
23*e65a6eb2SStephan Aßmus 			};
24*e65a6eb2SStephan Aßmus 			enum {
25*e65a6eb2SStephan Aßmus 				SUBTITLE_PLACEMENT_BOTTOM_OF_VIDEO = 0,
26*e65a6eb2SStephan Aßmus 				SUBTITLE_PLACEMENT_BOTTOM_OF_SCREEN = 1
27*e65a6eb2SStephan Aßmus 			};
28*e65a6eb2SStephan Aßmus 			enum {
29*e65a6eb2SStephan Aßmus 				BG_MOVIES_FULL_VOLUME = 0,
30*e65a6eb2SStephan Aßmus 				BG_MOVIES_HALF_VLUME = 1,
31*e65a6eb2SStephan Aßmus 				BG_MOVIES_MUTED = 2
32*e65a6eb2SStephan Aßmus 			};
33*e65a6eb2SStephan Aßmus 
3426e9cdb7SStephan Aßmus 			bool				autostart;
3526e9cdb7SStephan Aßmus 			bool				closeWhenDonePlayingMovie;
3626e9cdb7SStephan Aßmus 			bool				closeWhenDonePlayingSound;
3726e9cdb7SStephan Aßmus 			bool				loopMovie;
3826e9cdb7SStephan Aßmus 			bool				loopSound;
3926e9cdb7SStephan Aßmus 			bool				useOverlays;
4026e9cdb7SStephan Aßmus 			bool				scaleBilinear;
41341ea11eSStephan Aßmus 			bool				scaleFullscreenControls;
42*e65a6eb2SStephan Aßmus 			uint32				subtitleSize;
43*e65a6eb2SStephan Aßmus 			uint32				subtitlePlacement;
4426e9cdb7SStephan Aßmus 			uint32				backgroundMovieVolumeMode;
45ac6b0fc9SStephan Aßmus 			entry_ref			filePanelFolder;
46613ecaf5SStephan Aßmus 
47613ecaf5SStephan Aßmus 			bool				operator!=(const mpSettings& other) const;
48f907fa59SStephan Aßmus 
49f907fa59SStephan Aßmus 			BRect				audioPlayerWindowFrame;
504d3ebaccSStephan Aßmus };
514d3ebaccSStephan Aßmus 
52ac6b0fc9SStephan Aßmus #define SETTINGS_FILENAME "MediaPlayer"
534d3ebaccSStephan Aßmus 
54613ecaf5SStephan Aßmus class Settings : public BLocker, public Notifier {
554d3ebaccSStephan Aßmus public:
5626e9cdb7SStephan Aßmus 								Settings(
5726e9cdb7SStephan Aßmus 									const char* filename = SETTINGS_FILENAME);
584d3ebaccSStephan Aßmus 
5926e9cdb7SStephan Aßmus 			void				LoadSettings(mpSettings& settings) const;
604d3ebaccSStephan Aßmus 			void				SaveSettings(const mpSettings& settings);
614d3ebaccSStephan Aßmus 
6226e9cdb7SStephan Aßmus 	static	mpSettings			CurrentSettings();
6326e9cdb7SStephan Aßmus 	static	Settings*			Default();
644d3ebaccSStephan Aßmus 
6526e9cdb7SStephan Aßmus private:
6626e9cdb7SStephan Aßmus 			SettingsMessage		fSettingsMessage;
67613ecaf5SStephan Aßmus 			BList				fListeners;
6826e9cdb7SStephan Aßmus 
6926e9cdb7SStephan Aßmus 	static	Settings			sGlobalInstance;
704d3ebaccSStephan Aßmus };
714d3ebaccSStephan Aßmus 
7226e9cdb7SStephan Aßmus #endif  // SETTINGS_H
73