xref: /haiku/src/apps/mediaplayer/settings/Settings.h (revision 3248de3de47011137e0c667a7247dd424c827bd7)
14d3ebaccSStephan Aßmus /*
2a178983dSAxel Dörfler  * Copyright 2008-2011, 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  */
826e9cdb7SStephan Aßmus #ifndef SETTINGS_H
926e9cdb7SStephan Aßmus #define SETTINGS_H
104d3ebaccSStephan Aßmus 
11a178983dSAxel Dörfler 
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 
18a178983dSAxel Dörfler 
19a178983dSAxel Dörfler #define SETTINGS_FILENAME "MediaPlayer"
20a178983dSAxel Dörfler 
21a178983dSAxel Dörfler 
224d3ebaccSStephan Aßmus struct mpSettings {
23e65a6eb2SStephan Aßmus 			enum {
24e65a6eb2SStephan Aßmus 				SUBTITLE_SIZE_SMALL = 0,
25e65a6eb2SStephan Aßmus 				SUBTITLE_SIZE_MEDIUM = 1,
26e65a6eb2SStephan Aßmus 				SUBTITLE_SIZE_LARGE = 2
27e65a6eb2SStephan Aßmus 			};
28e65a6eb2SStephan Aßmus 			enum {
29e65a6eb2SStephan Aßmus 				SUBTITLE_PLACEMENT_BOTTOM_OF_VIDEO = 0,
30e65a6eb2SStephan Aßmus 				SUBTITLE_PLACEMENT_BOTTOM_OF_SCREEN = 1
31e65a6eb2SStephan Aßmus 			};
32e65a6eb2SStephan Aßmus 			enum {
33e65a6eb2SStephan Aßmus 				BG_MOVIES_FULL_VOLUME = 0,
34e65a6eb2SStephan Aßmus 				BG_MOVIES_HALF_VLUME = 1,
35e65a6eb2SStephan Aßmus 				BG_MOVIES_MUTED = 2
36e65a6eb2SStephan Aßmus 			};
37*3248de3dSJulien Lepiller 			enum {
38*3248de3dSJulien Lepiller 				RESUME_NEVER = 0,
39*3248de3dSJulien Lepiller 				RESUME_ASK = 1,
40*3248de3dSJulien Lepiller 				RESUME_ALWAYS = 2
41*3248de3dSJulien Lepiller 			};
42e65a6eb2SStephan Aßmus 
4326e9cdb7SStephan Aßmus 			bool				autostart;
4426e9cdb7SStephan Aßmus 			bool				closeWhenDonePlayingMovie;
4526e9cdb7SStephan Aßmus 			bool				closeWhenDonePlayingSound;
4626e9cdb7SStephan Aßmus 			bool				loopMovie;
4726e9cdb7SStephan Aßmus 			bool				loopSound;
4826e9cdb7SStephan Aßmus 			bool				useOverlays;
4926e9cdb7SStephan Aßmus 			bool				scaleBilinear;
50341ea11eSStephan Aßmus 			bool				scaleFullscreenControls;
51*3248de3dSJulien Lepiller 			uint32				resume;
52e65a6eb2SStephan Aßmus 			uint32				subtitleSize;
53e65a6eb2SStephan Aßmus 			uint32				subtitlePlacement;
5426e9cdb7SStephan Aßmus 			uint32				backgroundMovieVolumeMode;
55ac6b0fc9SStephan Aßmus 			entry_ref			filePanelFolder;
56613ecaf5SStephan Aßmus 
57613ecaf5SStephan Aßmus 			bool				operator!=(const mpSettings& other) const;
58f907fa59SStephan Aßmus 
59f907fa59SStephan Aßmus 			BRect				audioPlayerWindowFrame;
604d3ebaccSStephan Aßmus };
614d3ebaccSStephan Aßmus 
624d3ebaccSStephan Aßmus 
63613ecaf5SStephan Aßmus class Settings : public BLocker, public Notifier {
644d3ebaccSStephan Aßmus public:
6526e9cdb7SStephan Aßmus 								Settings(
6626e9cdb7SStephan Aßmus 									const char* filename = SETTINGS_FILENAME);
674d3ebaccSStephan Aßmus 
68a178983dSAxel Dörfler 			void				Get(mpSettings& settings) const;
69a178983dSAxel Dörfler 			void				Update(const mpSettings& settings);
704d3ebaccSStephan Aßmus 
71a178983dSAxel Dörfler 			entry_ref			FilePanelFolder() const;
72a178983dSAxel Dörfler 			void				SetFilePanelFolder(const entry_ref& ref);
73a178983dSAxel Dörfler 
74a178983dSAxel Dörfler 			BRect				AudioPlayerWindowFrame() const;
75a178983dSAxel Dörfler 			void				SetAudioPlayerWindowFrame(BRect frame);
76a178983dSAxel Dörfler 
7726e9cdb7SStephan Aßmus 	static	Settings*			Default();
784d3ebaccSStephan Aßmus 
7926e9cdb7SStephan Aßmus private:
8026e9cdb7SStephan Aßmus 			SettingsMessage		fSettingsMessage;
81613ecaf5SStephan Aßmus 			BList				fListeners;
8226e9cdb7SStephan Aßmus 
8326e9cdb7SStephan Aßmus 	static	Settings			sGlobalInstance;
844d3ebaccSStephan Aßmus };
854d3ebaccSStephan Aßmus 
86a178983dSAxel Dörfler 
8726e9cdb7SStephan Aßmus #endif  // SETTINGS_H
88