1cd2d1ffdSAxel Dörfler /*
20a669f8cSJohn Scipione * 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 * Axel Dörfler, axeld@pinc-software.de
70a669f8cSJohn Scipione * Jerome Duval, jerome.duval@free.fr
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
21546208a5SOliver Tappe #undef B_TRANSLATION_CONTEXT
22546208a5SOliver Tappe #define B_TRANSLATION_CONTEXT "Main Window"
23c93e2c43SJonas Sundström
24c93e2c43SJonas Sundström
2575c92c56SRyan Leavengood static const char* kSignature = "application/x-vnd.Haiku-Backgrounds";
26cd2d1ffdSAxel Dörfler
27cd2d1ffdSAxel Dörfler
28cd2d1ffdSAxel Dörfler class BackgroundsWindow : public BWindow {
29cd2d1ffdSAxel Dörfler public:
30eb32e334SJonas Sundström BackgroundsWindow();
31eb32e334SJonas Sundström
32eb32e334SJonas Sundström void RefsReceived(BMessage* message);
33cd2d1ffdSAxel Dörfler
34cd2d1ffdSAxel Dörfler protected:
35cd2d1ffdSAxel Dörfler virtual bool QuitRequested();
36529ff59fSJonas Sundström virtual void WorkspaceActivated(int32 oldWorkspaces,
37529ff59fSJonas Sundström bool active);
38cd2d1ffdSAxel Dörfler
39cd2d1ffdSAxel Dörfler BackgroundsView* fBackgroundsView;
40eb32e334SJonas Sundström };
41eb32e334SJonas Sundström
42eb32e334SJonas Sundström
43eb32e334SJonas Sundström class BackgroundsApplication : public BApplication {
44eb32e334SJonas Sundström public:
45eb32e334SJonas Sundström BackgroundsApplication();
46529ff59fSJonas Sundström virtual void MessageReceived(BMessage* message);
47eb32e334SJonas Sundström virtual void RefsReceived(BMessage* message);
48eb32e334SJonas Sundström
49eb32e334SJonas Sundström private:
50eb32e334SJonas Sundström BackgroundsWindow* fWindow;
51cd2d1ffdSAxel Dörfler };
52cd2d1ffdSAxel Dörfler
53cd2d1ffdSAxel Dörfler
540a669f8cSJohn Scipione // #pragma mark - BackgroundsApplication
55cd2d1ffdSAxel Dörfler
56cd2d1ffdSAxel Dörfler
BackgroundsApplication()57cd2d1ffdSAxel Dörfler BackgroundsApplication::BackgroundsApplication()
58eb32e334SJonas Sundström :
59eb32e334SJonas Sundström BApplication(kSignature),
60306bee96SJonas Sundström fWindow(NULL)
61cd2d1ffdSAxel Dörfler {
62306bee96SJonas Sundström fWindow = new BackgroundsWindow();
63eb32e334SJonas Sundström fWindow->Show();
64cd2d1ffdSAxel Dörfler }
65cd2d1ffdSAxel Dörfler
66cd2d1ffdSAxel Dörfler
670a74004cSRyan Leavengood void
MessageReceived(BMessage * message)68529ff59fSJonas Sundström BackgroundsApplication::MessageReceived(BMessage* message)
69529ff59fSJonas Sundström {
7027c555cbSMarkus Himmel const void *data;
7127c555cbSMarkus Himmel ssize_t size;
72*1ad18684SJanus
7327c555cbSMarkus Himmel if (message->WasDropped() && message->FindData("RGBColor", B_RGB_COLOR_TYPE,
7427c555cbSMarkus Himmel &data, &size) == B_OK) {
7527c555cbSMarkus Himmel // This is the desktop telling us that it was changed by a color drop
7627c555cbSMarkus Himmel BMessenger(fWindow).SendMessage(message);
7727c555cbSMarkus Himmel return;
7827c555cbSMarkus Himmel }
79529ff59fSJonas Sundström switch (message->what) {
80529ff59fSJonas Sundström case B_SILENT_RELAUNCH:
81529ff59fSJonas Sundström fWindow->Activate();
82529ff59fSJonas Sundström break;
83763bb428SRene Gollent default:
84529ff59fSJonas Sundström BApplication::MessageReceived(message);
85529ff59fSJonas Sundström break;
86529ff59fSJonas Sundström }
87529ff59fSJonas Sundström }
88529ff59fSJonas Sundström
89529ff59fSJonas Sundström
90529ff59fSJonas Sundström void
RefsReceived(BMessage * message)910a74004cSRyan Leavengood BackgroundsApplication::RefsReceived(BMessage* message)
920a74004cSRyan Leavengood {
93eb32e334SJonas Sundström fWindow->RefsReceived(message);
940a74004cSRyan Leavengood }
950a74004cSRyan Leavengood
96dca191e9SJonas Sundström
970a669f8cSJohn Scipione // #pragma mark - BackgroundsWindow
98cd2d1ffdSAxel Dörfler
99cd2d1ffdSAxel Dörfler
BackgroundsWindow()100eb32e334SJonas Sundström BackgroundsWindow::BackgroundsWindow()
101eb32e334SJonas Sundström :
102560ff447SJonas Sundström BWindow(BRect(0, 0, 0, 0), B_TRANSLATE_SYSTEM_NAME("Backgrounds"),
103d374a272SJonas Sundström B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE
104d374a272SJonas Sundström | B_AUTO_UPDATE_SIZE_LIMITS,
105eb32e334SJonas Sundström B_ALL_WORKSPACES)
106cd2d1ffdSAxel Dörfler {
107eb32e334SJonas Sundström fBackgroundsView = new BackgroundsView();
108eb32e334SJonas Sundström
109eb32e334SJonas Sundström BLayoutBuilder::Group<>(this)
110eb32e334SJonas Sundström .AddGroup(B_HORIZONTAL, 0)
111eb32e334SJonas Sundström .Add(fBackgroundsView)
112eb32e334SJonas Sundström .End()
113eb32e334SJonas Sundström .End();
114eb32e334SJonas Sundström
115eb32e334SJonas Sundström if (!fBackgroundsView->FoundPositionSetting())
116eb32e334SJonas Sundström CenterOnScreen();
117eb32e334SJonas Sundström }
118eb32e334SJonas Sundström
119eb32e334SJonas Sundström
120eb32e334SJonas Sundström void
RefsReceived(BMessage * message)121eb32e334SJonas Sundström BackgroundsWindow::RefsReceived(BMessage* message)
122eb32e334SJonas Sundström {
123eb32e334SJonas Sundström fBackgroundsView->RefsReceived(message);
124529ff59fSJonas Sundström Activate();
125cd2d1ffdSAxel Dörfler }
126cd2d1ffdSAxel Dörfler
127cd2d1ffdSAxel Dörfler
128cd2d1ffdSAxel Dörfler bool
QuitRequested()129cd2d1ffdSAxel Dörfler BackgroundsWindow::QuitRequested()
130cd2d1ffdSAxel Dörfler {
131cd2d1ffdSAxel Dörfler fBackgroundsView->SaveSettings();
132cd2d1ffdSAxel Dörfler be_app->PostMessage(B_QUIT_REQUESTED);
133cd2d1ffdSAxel Dörfler
134cd2d1ffdSAxel Dörfler return true;
135cd2d1ffdSAxel Dörfler }
136cd2d1ffdSAxel Dörfler
137cd2d1ffdSAxel Dörfler
138cd2d1ffdSAxel Dörfler void
WorkspaceActivated(int32 oldWorkspaces,bool active)139cd2d1ffdSAxel Dörfler BackgroundsWindow::WorkspaceActivated(int32 oldWorkspaces, bool active)
140cd2d1ffdSAxel Dörfler {
141cd2d1ffdSAxel Dörfler fBackgroundsView->WorkspaceActivated(oldWorkspaces, active);
142cd2d1ffdSAxel Dörfler }
143cd2d1ffdSAxel Dörfler
144cd2d1ffdSAxel Dörfler
1450a669f8cSJohn Scipione // #pragma mark - main method
146cd2d1ffdSAxel Dörfler
147cd2d1ffdSAxel Dörfler
148cd2d1ffdSAxel Dörfler int
main(int argc,char ** argv)149cd2d1ffdSAxel Dörfler main(int argc, char** argv)
150cd2d1ffdSAxel Dörfler {
151c93e2c43SJonas Sundström BackgroundsApplication app;
152c93e2c43SJonas Sundström app.Run();
153cd2d1ffdSAxel Dörfler return 0;
154cd2d1ffdSAxel Dörfler }
155