xref: /haiku/src/apps/autoraise/settings.cpp (revision 90ca02568835b140b0e59de496a7f1f1d3513f67)
1 #include "settings.h"
2 #include <iostream.h>
3 
4 #define CONF_ADDPROP(_type, _name) \
5 void AutoRaiseSettings::Set##_name(_type value)\
6 {\
7 	_conf##_name = value;\
8 }\
9 \
10 _type AutoRaiseSettings::##_name()\
11 {\
12 	return _conf##_name;\
13 }\
14 
15 
16 CONF_ADDPROP(bool, Active)
17 CONF_ADDPROP(bigtime_t, Delay)
18 CONF_ADDPROP(int32, Mode)
19 //CONF_ADDPROP(BPath, AppPath)
20 CONF_ADDPROP(entry_ref, AppPath)
21 #undef CONF_ADDPROP
22 
23 AutoRaiseSettings::AutoRaiseSettings()
24 {
25 	_confActive = false;
26 	_confDelay = DEFAULT_DELAY;
27 	_confMode = Mode_All;
28 	BPath prefPath;
29 
30 	find_directory(B_USER_SETTINGS_DIRECTORY, &prefPath);
31 	prefPath.Append(SETTINGS_FILE);
32 
33 	_settingsFile.SetTo(prefPath.Path(), B_READ_WRITE | B_CREATE_FILE);
34 
35 	if (_settingsMessage.Unflatten(&_settingsFile) == B_OK){
36 
37 		if (_settingsMessage.FindBool(AR_ACTIVE, &_confActive) != B_OK)
38 			printf("AutoRaiseSettings::AutoRaiseSettings();\tFailed to load active boolean from settings file. Using default\n");
39 
40 		if (_settingsMessage.FindInt64(AR_DELAY, &_confDelay) != B_OK)
41 			printf("AutoRaiseSettings::AutoRaiseSettings();\tFailed to load delay from settings file. Using default\n");
42 
43 		if (_settingsMessage.FindInt32(AR_MODE, &_confMode) != B_OK)
44 			printf("AutoRaiseSettings::AutoRaiseSettings();\tFailed to load mode from settings file. Using default\n");
45 
46 //		if (_settingsMessage.FindFlat(AR_APP_PATH, (BFlattenable *) &_appPath) != B_OK)
47 //			printf("AutoRaiseSettings::AutoRaiseSettings();\tFailed to load application path.\n");
48 
49 		if (_settingsMessage.FindRef(AR_APP_PATH, &_confAppPath) != B_OK)
50 			printf("AutoRaiseSettings::AutoRaiseSettings();\tFailed to load application path.\n");
51 	}
52 	else
53 	{
54 		printf("AutoRaiseSettings::AutoRaiseSettings()\nUnable to open settings file (either corrupted or doesn't exist), using defaults.\n");
55 	}
56 
57 	_settingsFile.Unset();
58 }
59 
60 AutoRaiseSettings::~AutoRaiseSettings()
61 {
62 	BPath prefPath;
63 	find_directory(B_USER_SETTINGS_DIRECTORY, &prefPath);
64 	prefPath.Append(SETTINGS_FILE);
65 
66 	//clobber existing settings and write in new ones
67 	_settingsFile.SetTo(prefPath.Path(), B_READ_WRITE | B_ERASE_FILE);
68 
69 
70 	//empty message and refill it with whatever has been set
71 	_settingsMessage.MakeEmpty();
72 
73 	_settingsMessage.AddBool(AR_ACTIVE, _confActive);
74 	_settingsMessage.AddInt64(AR_DELAY, _confDelay);
75 	_settingsMessage.AddInt32(AR_MODE, _confMode);
76 //	_settingsMessage.AddFlat(AR_APP_PATH, &_appPath);
77 	_settingsMessage.AddRef(AR_APP_PATH, &_confAppPath);
78 
79 	//write message to settings file
80 	if (_settingsMessage.Flatten(&_settingsFile) != B_OK)
81 		printf("Error occurred writing settings\n");
82 
83 	_settingsFile.Unset();
84 }
85 
86