1/*
2 * Copyright 2005-2006, Axel Dörfler, axeld@pinc-software.de
3 * All rights reserved. Distributed under the terms of the MIT License.
4 *
5 * Copyright 2010-2012 Haiku, Inc. All rights reserved.
6 * Distributed under the terms of the MIT License.
7 *
8 * Authors:
9 *      Hamish Morrison, hamish@lavabit.com
10 *      Alexander von Gluck, kallisti5@unixzen.com
11 */
12#ifndef SETTINGS_WINDOW_H
13#define SETTINGS_WINDOW_H
14
15
16#include <MenuItem.h>
17#include <Slider.h>
18#include <StatusBar.h>
19#include <Volume.h>
20#include <Window.h>
21
22#include "Settings.h"
23
24
25class BStringView;
26class BCheckBox;
27class BSlider;
28class BButton;
29class BMenuField;
30
31
32class SizeSlider : public BSlider {
33public:
34							SizeSlider(const char* name, const char* label,
35								BMessage* message, int32 min, int32 max,
36								uint32 flags);
37	virtual 				~SizeSlider() {};
38
39	virtual	const char*		UpdateText() const;
40
41private:
42	mutable	char			fText[128];
43};
44
45
46class VolumeMenuItem : public BMenuItem, public BHandler {
47public:
48							VolumeMenuItem(BVolume volume, BMessage* message);
49	virtual					~VolumeMenuItem() {}
50
51	virtual	BVolume			Volume() { return fVolume; }
52	virtual	void			MessageReceived(BMessage* message);
53	virtual	void			GenerateLabel();
54
55private:
56			BVolume			fVolume;
57};
58
59
60class SettingsWindow : public BWindow {
61public:
62							SettingsWindow();
63	virtual					~SettingsWindow() {};
64
65	virtual void			MessageReceived(BMessage* message);
66	virtual bool			QuitRequested();
67
68private:
69			status_t		_AddVolumeMenuItem(dev_t device);
70			status_t		_RemoveVolumeMenuItem(dev_t device);
71			VolumeMenuItem*	_FindVolumeMenuItem(dev_t device);
72
73			void			_RecordChoices();
74			void			_Update();
75			void			_UpdateSwapInfo();
76
77			BCheckBox*		fSwapEnabledCheckBox;
78			BCheckBox*		fSwapAutomaticCheckBox;
79			BSlider*		fSizeSlider;
80			BButton*		fDefaultsButton;
81			BButton*		fRevertButton;
82			BStringView*	fWarningStringView;
83			BMenuField*		fVolumeMenuField;
84			BStatusBar*		fSwapUsageBar;
85			Settings		fSettings;
86			bool			fSetupComplete;
87};
88
89#endif	/* SETTINGS_WINDOW_H */
90