1/*
2 * Copyright 2005-2009, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Axel D��rfler, axeld@pinc-software.de
7 */
8#ifndef WORKSPACE_PRIVATE_H
9#define WORKSPACE_PRIVATE_H
10
11
12#include "ScreenConfigurations.h"
13#include "WindowList.h"
14#include "Workspace.h"
15
16#include <Accelerant.h>
17#include <ObjectList.h>
18#include <String.h>
19
20
21struct display_info {
22	BString			identifier;
23	BPoint			origin;
24	display_mode	mode;
25};
26
27
28class Workspace::Private {
29public:
30								Private();
31								~Private();
32
33			int32				Index() const { return fWindows.Index(); }
34
35			WindowList&			Windows() { return fWindows; }
36
37			// displays
38
39			void				SetDisplaysFromDesktop(Desktop* desktop);
40
41			int32				CountDisplays() const
42									{ return fDisplays.CountItems(); }
43			const display_info*	DisplayAt(int32 index) const
44									{ return fDisplays.ItemAt(index); }
45
46			// configuration
47
48			const rgb_color&	Color() const { return fColor; }
49			void				SetColor(const rgb_color& color);
50
51			ScreenConfigurations& CurrentScreenConfiguration()
52									{ return fCurrentScreenConfiguration; }
53			ScreenConfigurations& StoredScreenConfiguration()
54									{ return fStoredScreenConfiguration; }
55
56			void				RestoreConfiguration(const BMessage& settings);
57			void				StoreConfiguration(BMessage& settings);
58
59private:
60			void				_SetDefaults();
61
62			WindowList			fWindows;
63
64			BObjectList<display_info> fDisplays;
65
66			ScreenConfigurations fStoredScreenConfiguration;
67			ScreenConfigurations fCurrentScreenConfiguration;
68			rgb_color			fColor;
69};
70
71#endif	/* WORKSPACE_PRIVATE_H */
72