1cd2d1ffdSAxel Dörfler /* 2*0a669f8cSJohn 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 7*0a669f8cSJohn 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 54*0a669f8cSJohn Scipione // #pragma mark - BackgroundsApplication 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 fWindow = new BackgroundsWindow(); 63eb32e334SJonas Sundström fWindow->Show(); 64cd2d1ffdSAxel Dörfler } 65cd2d1ffdSAxel Dörfler 66cd2d1ffdSAxel Dörfler 670a74004cSRyan Leavengood void 68529ff59fSJonas Sundström BackgroundsApplication::MessageReceived(BMessage* message) 69529ff59fSJonas Sundström { 70529ff59fSJonas Sundström switch (message->what) { 71529ff59fSJonas Sundström case B_SILENT_RELAUNCH: 72529ff59fSJonas Sundström fWindow->Activate(); 73529ff59fSJonas Sundström break; 74763bb428SRene Gollent default: 75529ff59fSJonas Sundström BApplication::MessageReceived(message); 76529ff59fSJonas Sundström break; 77529ff59fSJonas Sundström } 78529ff59fSJonas Sundström } 79529ff59fSJonas Sundström 80529ff59fSJonas Sundström 81529ff59fSJonas Sundström void 820a74004cSRyan Leavengood BackgroundsApplication::RefsReceived(BMessage* message) 830a74004cSRyan Leavengood { 84eb32e334SJonas Sundström fWindow->RefsReceived(message); 850a74004cSRyan Leavengood } 860a74004cSRyan Leavengood 87dca191e9SJonas Sundström 88*0a669f8cSJohn Scipione // #pragma mark - BackgroundsWindow 89cd2d1ffdSAxel Dörfler 90cd2d1ffdSAxel Dörfler 91eb32e334SJonas Sundström BackgroundsWindow::BackgroundsWindow() 92eb32e334SJonas Sundström : 93560ff447SJonas Sundström BWindow(BRect(0, 0, 0, 0), B_TRANSLATE_SYSTEM_NAME("Backgrounds"), 94d374a272SJonas Sundström B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE 95d374a272SJonas Sundström | 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 136*0a669f8cSJohn Scipione // #pragma mark - main method 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 } 146