xref: /haiku/src/preferences/notifications/PrefletView.cpp (revision 1e60bdeab63fa7a57bc9a55b032052e95a18bd2c)
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