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