xref: /haiku/headers/private/shared/SettingsMessage.h (revision 20308ad6a7acd17d4a5c93c2b4248497468b2044)
1 /*
2  * Copyright 2008-2010 Stephan Aßmus <superstippi@gmx.de>.
3  * Copyright 1998 Eric Shepherd.
4  * All rights reserved. Distributed under the terms of the Be Sample Code
5  * license.
6  */
7 #ifndef SETTINGS_MESSAGE_H
8 #define SETTINGS_MESSAGE_H
9 
10 
11 #include <FindDirectory.h>
12 #include <Font.h>
13 #include <List.h>
14 #include <Locker.h>
15 #include <Message.h>
16 #include <Path.h>
17 
18 class BMessenger;
19 class BString;
20 
21 
22 enum {
23 	SETTINGS_VALUE_CHANGED = '_svc'
24 };
25 
26 
27 class SettingsMessage : public BMessage, public BLocker {
28 public:
29 								SettingsMessage(directory_which directory,
30 									const char* filename);
31 	virtual  					~SettingsMessage();
32 
33 
34 			status_t			InitCheck() const;
35 			status_t			Load();
36 			status_t			Save() const;
37 
38 			bool				AddListener(const BMessenger& listener);
39 			void				RemoveListener(const BMessenger& listener);
40 
41 			status_t			SetValue(const char* name, bool value);
42 			status_t			SetValue(const char* name, int8 value);
43 			status_t			SetValue(const char* name, int16 value);
44 			status_t			SetValue(const char* name, int32 value);
45 			status_t			SetValue(const char* name, uint32 value);
46 			status_t			SetValue(const char* name, int64 value);
47 			status_t			SetValue(const char* name, float value);
48 			status_t			SetValue(const char* name, double value);
49 			status_t			SetValue(const char* name,
50 									const char* value);
51 			status_t			SetValue(const char* name,
52 									const BString& value);
53 			status_t			SetValue(const char *name,
54 									const BPoint& value);
55 			status_t			SetValue(const char* name, const BRect& value);
56 			status_t			SetValue(const char* name,
57 									const entry_ref& value);
58 			status_t			SetValue(const char* name,
59 									const BMessage& value);
60 			status_t			SetValue(const char* name,
61 									const BFlattenable* value);
62 			status_t			SetValue(const char* name,
63 									const BFont& value);
64 
65 			bool				GetValue(const char* name,
66 									bool defaultValue) const;
67 			int8				GetValue(const char* name,
68 									int8 defaultValue) const;
69 			int16				GetValue(const char* name,
70 									int16 defaultValue) const;
71 			int32				GetValue(const char* name,
72 									int32 defaultValue) const;
73 			uint32				GetValue(const char* name,
74 									uint32 defaultValue) const;
75 			int64				GetValue(const char* name,
76 									int64 defaultValue) const;
77 			float				GetValue(const char* name,
78 									float defaultValue) const;
79 			double				GetValue(const char* name,
80 									double defaultValue) const;
81 			const char*			GetValue(const char* name,
82 									const char* defaultValue) const;
83 			BString				GetValue(const char* name,
84 									const BString& defaultValue) const;
85 			BPoint				GetValue(const char *name,
86 									BPoint defaultValue) const;
87 			BRect				GetValue(const char* name,
88 									BRect defaultValue) const;
89 			entry_ref			GetValue(const char* name,
90 									const entry_ref& defaultValue) const;
91 			BMessage			GetValue(const char* name,
92 									const BMessage& defaultValue) const;
93 			BFont				GetValue(const char* name,
94 									const BFont& defaultValue) const;
95 
96 private:
97 			void				_NotifyValueChanged(const char* name) const;
98 
99 private:
100 			BPath				fPath;
101 			status_t			fStatus;
102 			BList				fListeners;
103 };
104 
105 #endif  // SETTINGS_MESSAGE_H
106