master chld/haikuprg / decor / MacDecorator / includes / DesktopSettings.h
  1/*
  2 * Copyright 2001-2015, Haiku.
  3 * Distributed under the terms of the MIT License.
  4 *
  5 * Authors:
  6 *		Axel Dörfler, axeld@pinc-software.de
  7 *		Andrej Spielmann, <andrej.spielmann@seh.ox.ac.uk>
  8 *		Joseph Groover <looncraz@looncraz.net>
  9 */
 10#ifndef DESKTOP_SETTINGS_H
 11#define DESKTOP_SETTINGS_H
 12
 13
 14#include <InterfaceDefs.h>
 15#include <Menu.h>
 16#include <Message.h>
 17
 18#include <ServerProtocolStructs.h>
 19
 20
 21class Desktop;
 22class DesktopSettingsPrivate;
 23class ServerFont;
 24
 25
 26static const int32 kMaxWorkspaces = 32;
 27
 28enum {
 29	kAllSettings		= 0xff,
 30	kWorkspacesSettings	= 0x01,
 31	kFontSettings		= 0x02,
 32	kAppearanceSettings	= 0x04,
 33	kMouseSettings		= 0x08,
 34	kDraggerSettings	= 0x10,
 35};
 36
 37
 38class DesktopSettings {
 39public:
 40								DesktopSettings(Desktop* desktop);
 41
 42			status_t			Save(uint32 mask = kAllSettings);
 43
 44			void				GetDefaultPlainFont(ServerFont& font) const;
 45			void				GetDefaultBoldFont(ServerFont& font) const;
 46			void				GetDefaultFixedFont(ServerFont& font) const;
 47
 48			void				GetScrollBarInfo(scroll_bar_info& info) const;
 49			void				GetMenuInfo(menu_info& info) const;
 50
 51			mode_mouse			MouseMode() const;
 52			mode_focus_follows_mouse FocusFollowsMouseMode() const;
 53
 54			bool				NormalMouse() const
 55									{ return MouseMode() == B_NORMAL_MOUSE; }
 56			bool				FocusFollowsMouse() const
 57									{ return MouseMode()
 58										== B_FOCUS_FOLLOWS_MOUSE; }
 59			bool				ClickToFocusMouse() const
 60									{ return MouseMode()
 61										== B_CLICK_TO_FOCUS_MOUSE; }
 62
 63			bool				AcceptFirstClick() const;
 64
 65			bool				ShowAllDraggers() const;
 66
 67			int32				WorkspacesCount() const;
 68			int32				WorkspacesColumns() const;
 69			int32				WorkspacesRows() const;
 70			const BMessage*		WorkspacesMessage(int32 index) const;
 71
 72			rgb_color			UIColor(color_which which) const;
 73
 74			bool				SubpixelAntialiasing() const;
 75			uint8				Hinting() const;
 76			uint8				SubpixelAverageWeight() const;
 77			bool				IsSubpixelOrderingRegular() const;
 78
 79			const BString&		ControlLook() const;
 80
 81protected:
 82			DesktopSettingsPrivate*	fSettings;
 83};
 84
 85
 86class LockedDesktopSettings : public DesktopSettings {
 87public:
 88								LockedDesktopSettings(Desktop* desktop);
 89								~LockedDesktopSettings();
 90
 91			void				SetDefaultPlainFont(const ServerFont& font);
 92			void				SetDefaultBoldFont(const ServerFont& font);
 93			void				SetDefaultFixedFont(const ServerFont& font);
 94
 95			void				SetScrollBarInfo(const scroll_bar_info& info);
 96			void				SetMenuInfo(const menu_info& info);
 97
 98			void				SetMouseMode(mode_mouse mode);
 99			void				SetFocusFollowsMouseMode(
100									mode_focus_follows_mouse mode);
101			void				SetAcceptFirstClick(bool acceptFirstClick);
102
103			void				SetShowAllDraggers(bool show);
104
105			void				SetUIColors(const BMessage& colors,
106									bool* changed = NULL);
107
108			void				SetSubpixelAntialiasing(bool subpix);
109			void				SetHinting(uint8 hinting);
110			void				SetSubpixelAverageWeight(uint8 averageWeight);
111			void				SetSubpixelOrderingRegular(
112									bool subpixelOrdering);
113
114			status_t			SetControlLook(const char* path);
115
116private:
117			Desktop*			fDesktop;
118};
119
120
121#endif	/* DESKTOP_SETTINGS_H */