1/*
2 * Copyright 2002-2011, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		DarkWyrm (darkwyrm@earthlink.net)
7 *		Alexander von Gluck, kallisti5@unixzen.com
8 *		Stephan Aßmus <superstippi@gmx.de>
9 */
10
11
12#include "APRWindow.h"
13
14#include <Button.h>
15#include <Catalog.h>
16#include <LayoutBuilder.h>
17#include <Locale.h>
18#include <Messenger.h>
19#include <SeparatorView.h>
20#include <TabView.h>
21
22#include "AntialiasingSettingsView.h"
23#include "APRView.h"
24#include "defs.h"
25#include "FontView.h"
26#include "LookAndFeelSettingsView.h"
27
28
29#undef B_TRANSLATION_CONTEXT
30#define B_TRANSLATION_CONTEXT "APRWindow"
31
32
33static const uint32 kMsgSetDefaults = 'dflt';
34static const uint32 kMsgRevert = 'rvrt';
35
36
37APRWindow::APRWindow(BRect frame)
38	:
39	BWindow(frame, B_TRANSLATE_SYSTEM_NAME("Appearance"), B_TITLED_WINDOW,
40		B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS
41			| B_QUIT_ON_WINDOW_CLOSE, B_ALL_WORKSPACES)
42{
43	fDefaultsButton = new BButton("defaults", B_TRANSLATE("Defaults"),
44		new BMessage(kMsgSetDefaults), B_WILL_DRAW);
45
46	fRevertButton = new BButton("revert", B_TRANSLATE("Revert"),
47		new BMessage(kMsgRevert), B_WILL_DRAW);
48
49	BTabView* tabView = new BTabView("tabview", B_WIDTH_FROM_LABEL);
50
51	fFontSettings = new FontView(B_TRANSLATE("Fonts"));
52
53	fColorsView = new APRView(B_TRANSLATE("Colors"));
54
55	fLookAndFeelSettings = new LookAndFeelSettingsView(
56		B_TRANSLATE("Look and feel"));
57
58	fAntialiasingSettings = new AntialiasingSettingsView(
59		B_TRANSLATE("Antialiasing"));
60
61	tabView->AddTab(fFontSettings);
62	tabView->AddTab(fColorsView);
63	tabView->AddTab(fLookAndFeelSettings);
64	tabView->AddTab(fAntialiasingSettings);
65	tabView->SetBorder(B_NO_BORDER);
66
67	_UpdateButtons();
68
69	BLayoutBuilder::Group<>(this, B_VERTICAL, 0)
70		.SetInsets(0, B_USE_DEFAULT_SPACING, 0, B_USE_DEFAULT_SPACING)
71		.Add(tabView)
72		.Add(new BSeparatorView(B_HORIZONTAL))
73		.AddGroup(B_HORIZONTAL)
74			.Add(fDefaultsButton)
75			.Add(fRevertButton)
76			.SetInsets(B_USE_WINDOW_SPACING, B_USE_DEFAULT_SPACING,
77				B_USE_DEFAULT_SPACING, 0)
78			.AddGlue();
79}
80
81
82void
83APRWindow::MessageReceived(BMessage *message)
84{
85	switch (message->what) {
86		case kMsgUpdate:
87			_UpdateButtons();
88			break;
89
90		case kMsgSetDefaults:
91			fFontSettings->SetDefaults();
92			fColorsView->SetDefaults();
93			fLookAndFeelSettings->SetDefaults();
94			fAntialiasingSettings->SetDefaults();
95
96			_UpdateButtons();
97			break;
98
99		case kMsgRevert:
100			fFontSettings->Revert();
101			fColorsView->Revert();
102			fLookAndFeelSettings->Revert();
103			fAntialiasingSettings->Revert();
104
105			_UpdateButtons();
106			break;
107
108		default:
109			BWindow::MessageReceived(message);
110			break;
111	}
112}
113
114
115void
116APRWindow::_UpdateButtons()
117{
118	fDefaultsButton->SetEnabled(_IsDefaultable());
119	fRevertButton->SetEnabled(_IsRevertable());
120}
121
122
123bool
124APRWindow::_IsDefaultable() const
125{
126//	printf("fonts defaultable: %d\n", fFontSettings->IsDefaultable());
127//	printf("colors defaultable: %d\n", fColorsView->IsDefaultable());
128//	printf("AA defaultable: %d\n", fAntialiasingSettings->IsDefaultable());
129//	printf("decor defaultable: %d\n", fLookAndFeelSettings->IsDefaultable());
130	return fFontSettings->IsDefaultable()
131		|| fColorsView->IsDefaultable()
132		|| fLookAndFeelSettings->IsDefaultable()
133		|| fAntialiasingSettings->IsDefaultable();
134}
135
136
137bool
138APRWindow::_IsRevertable() const
139{
140//	printf("fonts revertable: %d\n", fFontSettings->IsRevertable());
141//	printf("colors revertable: %d\n", fColorsView->IsRevertable());
142//	printf("AA revertable: %d\n", fAntialiasingSettings->IsRevertable());
143//	printf("decor revertable: %d\n", fLookAndFeelSettings->IsRevertable());
144	return fFontSettings->IsRevertable()
145		|| fColorsView->IsRevertable()
146		|| fLookAndFeelSettings->IsRevertable()
147		|| fAntialiasingSettings->IsRevertable();
148}
149