125184Sjkh/*
225184Sjkh * Copyright 2005-2006, Axel D��rfler, axeld@pinc-software.de
332382Salex * All rights reserved. Distributed under the terms of the MIT License.
425184Sjkh *
525184Sjkh * Copyright 2010-2012 Haiku, Inc. All rights reserved.
625184Sjkh * Distributed under the terms of the MIT License.
725184Sjkh *
825184Sjkh * Authors:
925184Sjkh *      Hamish Morrison, hamish@lavabit.com
1025184Sjkh *      Alexander von Gluck, kallisti5@unixzen.com
1125184Sjkh */
1225184Sjkh#ifndef SETTINGS_WINDOW_H
1325184Sjkh#define SETTINGS_WINDOW_H
1425184Sjkh
1525184Sjkh
1625184Sjkh#include <MenuItem.h>
1725184Sjkh#include <Slider.h>
1825184Sjkh#include <StatusBar.h>
1925184Sjkh#include <Volume.h>
2025184Sjkh#include <Window.h>
2125184Sjkh
2225184Sjkh#include "Settings.h"
2325184Sjkh
2425184Sjkh
2525184Sjkhclass BStringView;
2625184Sjkhclass BCheckBox;
2725184Sjkhclass BSlider;
2825184Sjkhclass BButton;
2925184Sjkhclass BMenuField;
3025184Sjkh
3125184Sjkh
3225184Sjkhclass SizeSlider : public BSlider {
3325184Sjkhpublic:
3425184Sjkh							SizeSlider(const char* name, const char* label,
3525184Sjkh								BMessage* message, int32 min, int32 max,
3625184Sjkh								uint32 flags);
3725184Sjkh	virtual 				~SizeSlider() {};
3825184Sjkh
3925184Sjkh	virtual	const char*		UpdateText() const;
4025184Sjkh
4125184Sjkhprivate:
4225184Sjkh	mutable	char			fText[128];
4325184Sjkh};
4425184Sjkh
4525184Sjkh
4625184Sjkhclass VolumeMenuItem : public BMenuItem, public BHandler {
4725184Sjkhpublic:
4825184Sjkh							VolumeMenuItem(BVolume volume, BMessage* message);
4925184Sjkh	virtual					~VolumeMenuItem() {}
5025184Sjkh
5125184Sjkh	virtual	BVolume			Volume() { return fVolume; }
5225184Sjkh	virtual	void			MessageReceived(BMessage* message);
5325184Sjkh	virtual	void			GenerateLabel();
5425184Sjkh
5525184Sjkhprivate:
5625184Sjkh			BVolume			fVolume;
5729300Sdanny};
5829300Sdanny
5929300Sdanny
6029300Sdannyclass SettingsWindow : public BWindow {
6132382Salexpublic:
6232382Salex							SettingsWindow();
6332382Salex	virtual					~SettingsWindow() {};
6429300Sdanny
6529300Sdanny	virtual void			MessageReceived(BMessage* message);
6629300Sdanny	virtual bool			QuitRequested();
6729300Sdanny
6829300Sdannyprivate:
6929300Sdanny			status_t		_AddVolumeMenuItem(dev_t device);
7029300Sdanny			status_t		_RemoveVolumeMenuItem(dev_t device);
7129300Sdanny			VolumeMenuItem*	_FindVolumeMenuItem(dev_t device);
7229300Sdanny
7329300Sdanny			void			_RecordChoices();
7429300Sdanny			void			_Update();
7529300Sdanny			void			_UpdateSwapInfo();
7629300Sdanny
7729300Sdanny			BCheckBox*		fSwapEnabledCheckBox;
7829300Sdanny			BCheckBox*		fSwapAutomaticCheckBox;
7929300Sdanny			BSlider*		fSizeSlider;
8029300Sdanny			BButton*		fDefaultsButton;
8125364Sjkh			BButton*		fRevertButton;
8229300Sdanny			BStringView*	fWarningStringView;
8329300Sdanny			BMenuField*		fVolumeMenuField;
8429300Sdanny			BStatusBar*		fSwapUsageBar;
8529300Sdanny			Settings		fSettings;
8629300Sdanny			bool			fSetupComplete;
8725184Sjkh};
8825184Sjkh
8929300Sdanny#endif	/* SETTINGS_WINDOW_H */
9029300Sdanny