1 /* 2 * Copyright 2010-2017, Haiku, Inc. All Rights Reserved. 3 * Copyright 2009, Pier Luigi Fiorini. 4 * Distributed under the terms of the MIT License. 5 * 6 * Authors: 7 * Pier Luigi Fiorini, pierluigi.fiorini@gmail.com 8 * Brian Hill, supernova@tycho.email 9 */ 10 11 #include <Catalog.h> 12 #include <CardLayout.h> 13 #include <GroupLayout.h> 14 #include <GroupLayoutBuilder.h> 15 #include <LayoutItem.h> 16 #include <Message.h> 17 #include <Window.h> 18 19 #include "NotificationsView.h" 20 #include "PrefletView.h" 21 #include "SettingsHost.h" 22 23 24 #undef B_TRANSLATION_CONTEXT 25 #define B_TRANSLATION_CONTEXT "PrefletView" 26 27 28 PrefletView::PrefletView(SettingsHost* host) 29 : 30 BTabView("pages", B_WIDTH_FROM_WIDEST) 31 { 32 // Pages 33 fGeneralView = new GeneralView(host); 34 NotificationsView* apps = new NotificationsView(host); 35 36 // Page selector 37 BTab* tab = new BTab(); 38 AddTab(fGeneralView, tab); 39 tab->SetLabel(B_TRANSLATE("General")); 40 41 tab = new BTab(); 42 AddTab(apps, tab); 43 tab->SetLabel(B_TRANSLATE("Applications")); 44 } 45 46 47 BView* 48 PrefletView::CurrentPage() 49 { 50 return PageAt(FocusTab()); 51 } 52 53 54 BView* 55 PrefletView::PageAt(int32 index) 56 { 57 return TabAt(index)->View(); 58 } 59 60 61 void 62 PrefletView::Select(int32 index) 63 { 64 if (index == Selection()) 65 return; 66 67 BTabView::Select(index); 68 69 SettingsPane* pane = dynamic_cast<SettingsPane*>(PageAt(index)); 70 bool showButtons = (pane != NULL) && pane->UseDefaultRevertButtons(); 71 BMessage showMessage(kShowButtons); 72 showMessage.AddBool(kShowButtonsKey, showButtons); 73 Window()->PostMessage(&showMessage); 74 } 75