1/*
2 * Copyright 2009 Haiku, Inc.
3 * All Rights Reserved. Distributed under the terms of the MIT License.
4 */
5#ifndef _PREFERENCES_WINDOW_H
6#define _PREFERENCES_WINDOW_H
7
8
9#include <Window.h>
10
11#include "BarSettings.h"
12
13
14const uint32 kConfigShow			= 'PrSh';
15const uint32 kConfigQuit			= 'PrQt';
16const uint32 kUpdateRecentCounts	= 'upct';
17const uint32 kEditInTracker			= 'etrk';
18
19const uint32 kTrackerFirst			= 'TkFt';
20const uint32 kSortRunningApps		= 'SAps';
21const uint32 kSuperExpando			= 'SprE';
22const uint32 kExpandNewTeams		= 'ExTm';
23const uint32 kHideLabels			= 'hLbs';
24const uint32 kResizeTeamIcons		= 'RTIs';
25const uint32 kAutoRaise				= 'AtRs';
26const uint32 kAutoHide				= 'AtHd';
27
28const uint32 kDefaults				= 'dflt';
29const uint32 kRevert				= 'rvrt';
30
31
32class BCheckBox;
33class BFile;
34class BMessage;
35class BRadioButton;
36class BSlider;
37class BSpinner;
38
39class PreferencesWindow : public BWindow
40{
41public:
42							PreferencesWindow(BRect frame);
43							~PreferencesWindow();
44
45	virtual	void			MessageReceived(BMessage* message);
46	virtual	bool			QuitRequested();
47	virtual	void			Show();
48
49private:
50			void			_EnableDisableDependentItems();
51
52			bool			_IsDefaultable();
53			bool			_IsRevertable();
54
55			status_t		_InitSettingsFile(BFile* file, bool write);
56			status_t		_LoadSettings(BMessage* settings);
57			status_t		_SaveSettings(BMessage* settings);
58
59			void			_SetInitialSettings();
60
61			void			_UpdateButtons();
62			void			_UpdatePreferences(desk_settings* settings);
63			void			_UpdateRecentCounts();
64
65private:
66			BCheckBox*		fMenuRecentDocuments;
67			BCheckBox*		fMenuRecentApplications;
68			BCheckBox*		fMenuRecentFolders;
69
70			BSpinner*		fMenuRecentDocumentCount;
71			BSpinner*		fMenuRecentApplicationCount;
72			BSpinner*		fMenuRecentFolderCount;
73
74			BCheckBox*		fAppsSort;
75			BCheckBox*		fAppsSortTrackerFirst;
76			BCheckBox*		fAppsShowExpanders;
77			BCheckBox*		fAppsExpandNew;
78			BCheckBox*		fAppsHideLabels;
79			BSlider*		fAppsIconSizeSlider;
80
81			BCheckBox*		fWindowAlwaysOnTop;
82			BCheckBox*		fWindowAutoRaise;
83			BCheckBox*		fWindowAutoHide;
84
85			BButton*		fDefaultsButton;
86			BButton*		fRevertButton;
87
88private:
89			desk_settings	fSettings;
90};
91
92
93#endif	// _PREFERENCES_WINDOW_H
94