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