xref: /haiku/src/preferences/backgrounds/Backgrounds.cpp (revision 4eb0cbb044cf538f18c0d252934a5bcaa33bfd34)
1cd2d1ffdSAxel Dörfler /*
2dca191e9SJonas Sundström  * Copyright 2002-2009, Haiku, Inc. All Rights Reserved.
3cd2d1ffdSAxel Dörfler  * Distributed under the terms of the MIT License.
4cd2d1ffdSAxel Dörfler  *
5cd2d1ffdSAxel Dörfler  * Authors:
6cd2d1ffdSAxel Dörfler  *		Jerome Duval (jerome.duval@free.fr)
7cd2d1ffdSAxel Dörfler  *		Axel Dörfler, axeld@pinc-software.de
8cd2d1ffdSAxel Dörfler  */
9cd2d1ffdSAxel Dörfler 
10cd2d1ffdSAxel Dörfler 
11cd2d1ffdSAxel Dörfler #include <Application.h>
12c93e2c43SJonas Sundström #include <Catalog.h>
13eb32e334SJonas Sundström #include <LayoutBuilder.h>
14c93e2c43SJonas Sundström #include <Locale.h>
1591147eefSJonas Sundström #include <TrackerAddOnAppLaunch.h>
16cd2d1ffdSAxel Dörfler #include <Window.h>
17cd2d1ffdSAxel Dörfler 
18dca191e9SJonas Sundström #include "BackgroundsView.h"
19dca191e9SJonas Sundström 
20cd2d1ffdSAxel Dörfler 
21*4eb0cbb0SMatt Madia #define B_TRANSLATE_CONTEXT "Main Window"
22c93e2c43SJonas Sundström 
23c93e2c43SJonas Sundström 
2475c92c56SRyan Leavengood static const char* kSignature = "application/x-vnd.Haiku-Backgrounds";
25cd2d1ffdSAxel Dörfler 
26cd2d1ffdSAxel Dörfler 
27cd2d1ffdSAxel Dörfler class BackgroundsWindow : public BWindow {
28cd2d1ffdSAxel Dörfler public:
29eb32e334SJonas Sundström 							BackgroundsWindow();
30eb32e334SJonas Sundström 
31eb32e334SJonas Sundström 			void			RefsReceived(BMessage* message);
32cd2d1ffdSAxel Dörfler 
33cd2d1ffdSAxel Dörfler protected:
34cd2d1ffdSAxel Dörfler 	virtual	bool			QuitRequested();
35529ff59fSJonas Sundström 	virtual	void			WorkspaceActivated(int32 oldWorkspaces,
36529ff59fSJonas Sundström 								bool active);
37cd2d1ffdSAxel Dörfler 
38cd2d1ffdSAxel Dörfler 			BackgroundsView*	fBackgroundsView;
39eb32e334SJonas Sundström };
40eb32e334SJonas Sundström 
41eb32e334SJonas Sundström 
42eb32e334SJonas Sundström class BackgroundsApplication : public BApplication {
43eb32e334SJonas Sundström public:
44eb32e334SJonas Sundström 							BackgroundsApplication();
45529ff59fSJonas Sundström 	virtual	void			MessageReceived(BMessage* message);
46eb32e334SJonas Sundström 	virtual	void			RefsReceived(BMessage* message);
47eb32e334SJonas Sundström 
48eb32e334SJonas Sundström private:
49eb32e334SJonas Sundström 			BackgroundsWindow*	fWindow;
50306bee96SJonas Sundström 			BCatalog			fCatalog;
51cd2d1ffdSAxel Dörfler };
52cd2d1ffdSAxel Dörfler 
53cd2d1ffdSAxel Dörfler 
54cd2d1ffdSAxel Dörfler //	#pragma mark -
55cd2d1ffdSAxel Dörfler 
56cd2d1ffdSAxel Dörfler 
57cd2d1ffdSAxel Dörfler BackgroundsApplication::BackgroundsApplication()
58eb32e334SJonas Sundström 	:
59eb32e334SJonas Sundström 	BApplication(kSignature),
60306bee96SJonas Sundström 	fWindow(NULL)
61cd2d1ffdSAxel Dörfler {
62306bee96SJonas Sundström 	be_locale->GetAppCatalog(&fCatalog);
63306bee96SJonas Sundström 	fWindow = new BackgroundsWindow();
64eb32e334SJonas Sundström 	fWindow->Show();
65cd2d1ffdSAxel Dörfler }
66cd2d1ffdSAxel Dörfler 
67cd2d1ffdSAxel Dörfler 
680a74004cSRyan Leavengood void
69529ff59fSJonas Sundström BackgroundsApplication::MessageReceived(BMessage* message)
70529ff59fSJonas Sundström {
71529ff59fSJonas Sundström 	switch (message->what) {
72529ff59fSJonas Sundström 		case B_SILENT_RELAUNCH:
73529ff59fSJonas Sundström 			fWindow->Activate();
74529ff59fSJonas Sundström 			break;
75763bb428SRene Gollent 		default:
76529ff59fSJonas Sundström 			BApplication::MessageReceived(message);
77529ff59fSJonas Sundström 			break;
78529ff59fSJonas Sundström 	}
79529ff59fSJonas Sundström }
80529ff59fSJonas Sundström 
81529ff59fSJonas Sundström 
82529ff59fSJonas Sundström void
830a74004cSRyan Leavengood BackgroundsApplication::RefsReceived(BMessage* message)
840a74004cSRyan Leavengood {
85eb32e334SJonas Sundström 	fWindow->RefsReceived(message);
860a74004cSRyan Leavengood }
870a74004cSRyan Leavengood 
88dca191e9SJonas Sundström 
89cd2d1ffdSAxel Dörfler //	#pragma mark -
90cd2d1ffdSAxel Dörfler 
91cd2d1ffdSAxel Dörfler 
92eb32e334SJonas Sundström BackgroundsWindow::BackgroundsWindow()
93eb32e334SJonas Sundström 	:
94ea8a1f58SMatt Madia 	BWindow(BRect(0, 0, 0, 0), B_TRANSLATE("Backgrounds"), B_TITLED_WINDOW,
95eb32e334SJonas Sundström 		B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS,
96eb32e334SJonas Sundström 		B_ALL_WORKSPACES)
97cd2d1ffdSAxel Dörfler {
98eb32e334SJonas Sundström 	fBackgroundsView = new BackgroundsView();
99eb32e334SJonas Sundström 
100eb32e334SJonas Sundström 	BLayoutBuilder::Group<>(this)
101eb32e334SJonas Sundström 		.AddGroup(B_HORIZONTAL, 0)
102eb32e334SJonas Sundström 			.Add(fBackgroundsView)
103eb32e334SJonas Sundström 			.End()
104eb32e334SJonas Sundström 		.End();
105eb32e334SJonas Sundström 
106eb32e334SJonas Sundström 	if (!fBackgroundsView->FoundPositionSetting())
107eb32e334SJonas Sundström 		CenterOnScreen();
108eb32e334SJonas Sundström }
109eb32e334SJonas Sundström 
110eb32e334SJonas Sundström 
111eb32e334SJonas Sundström void
112eb32e334SJonas Sundström BackgroundsWindow::RefsReceived(BMessage* message)
113eb32e334SJonas Sundström {
114eb32e334SJonas Sundström 	fBackgroundsView->RefsReceived(message);
115529ff59fSJonas Sundström 	Activate();
116cd2d1ffdSAxel Dörfler }
117cd2d1ffdSAxel Dörfler 
118cd2d1ffdSAxel Dörfler 
119cd2d1ffdSAxel Dörfler bool
120cd2d1ffdSAxel Dörfler BackgroundsWindow::QuitRequested()
121cd2d1ffdSAxel Dörfler {
122cd2d1ffdSAxel Dörfler 	fBackgroundsView->SaveSettings();
123cd2d1ffdSAxel Dörfler 	be_app->PostMessage(B_QUIT_REQUESTED);
124cd2d1ffdSAxel Dörfler 
125cd2d1ffdSAxel Dörfler 	return true;
126cd2d1ffdSAxel Dörfler }
127cd2d1ffdSAxel Dörfler 
128cd2d1ffdSAxel Dörfler 
129cd2d1ffdSAxel Dörfler void
130cd2d1ffdSAxel Dörfler BackgroundsWindow::WorkspaceActivated(int32 oldWorkspaces, bool active)
131cd2d1ffdSAxel Dörfler {
132cd2d1ffdSAxel Dörfler 	fBackgroundsView->WorkspaceActivated(oldWorkspaces, active);
133cd2d1ffdSAxel Dörfler }
134cd2d1ffdSAxel Dörfler 
135cd2d1ffdSAxel Dörfler 
136cd2d1ffdSAxel Dörfler //	#pragma mark -
137cd2d1ffdSAxel Dörfler 
138cd2d1ffdSAxel Dörfler 
139cd2d1ffdSAxel Dörfler int
140cd2d1ffdSAxel Dörfler main(int argc, char** argv)
141cd2d1ffdSAxel Dörfler {
142c93e2c43SJonas Sundström 	BackgroundsApplication app;
143c93e2c43SJonas Sundström 	app.Run();
144cd2d1ffdSAxel Dörfler 	return 0;
145cd2d1ffdSAxel Dörfler }
146cd2d1ffdSAxel Dörfler 
147