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*07f82a07SWim van der Meer #undef B_TRANSLATE_CONTEXT 224eb0cbb0SMatt Madia #define B_TRANSLATE_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; 51306bee96SJonas Sundström BCatalog fCatalog; 52cd2d1ffdSAxel Dörfler }; 53cd2d1ffdSAxel Dörfler 54cd2d1ffdSAxel Dörfler 55cd2d1ffdSAxel Dörfler // #pragma mark - 56cd2d1ffdSAxel Dörfler 57cd2d1ffdSAxel Dörfler 58cd2d1ffdSAxel Dörfler BackgroundsApplication::BackgroundsApplication() 59eb32e334SJonas Sundström : 60eb32e334SJonas Sundström BApplication(kSignature), 61306bee96SJonas Sundström fWindow(NULL) 62cd2d1ffdSAxel Dörfler { 63306bee96SJonas Sundström be_locale->GetAppCatalog(&fCatalog); 64306bee96SJonas Sundström fWindow = new BackgroundsWindow(); 65eb32e334SJonas Sundström fWindow->Show(); 66cd2d1ffdSAxel Dörfler } 67cd2d1ffdSAxel Dörfler 68cd2d1ffdSAxel Dörfler 690a74004cSRyan Leavengood void 70529ff59fSJonas Sundström BackgroundsApplication::MessageReceived(BMessage* message) 71529ff59fSJonas Sundström { 72529ff59fSJonas Sundström switch (message->what) { 73529ff59fSJonas Sundström case B_SILENT_RELAUNCH: 74529ff59fSJonas Sundström fWindow->Activate(); 75529ff59fSJonas Sundström break; 76763bb428SRene Gollent default: 77529ff59fSJonas Sundström BApplication::MessageReceived(message); 78529ff59fSJonas Sundström break; 79529ff59fSJonas Sundström } 80529ff59fSJonas Sundström } 81529ff59fSJonas Sundström 82529ff59fSJonas Sundström 83529ff59fSJonas Sundström void 840a74004cSRyan Leavengood BackgroundsApplication::RefsReceived(BMessage* message) 850a74004cSRyan Leavengood { 86eb32e334SJonas Sundström fWindow->RefsReceived(message); 870a74004cSRyan Leavengood } 880a74004cSRyan Leavengood 89dca191e9SJonas Sundström 90cd2d1ffdSAxel Dörfler // #pragma mark - 91cd2d1ffdSAxel Dörfler 92cd2d1ffdSAxel Dörfler 93eb32e334SJonas Sundström BackgroundsWindow::BackgroundsWindow() 94eb32e334SJonas Sundström : 95ea8a1f58SMatt Madia BWindow(BRect(0, 0, 0, 0), B_TRANSLATE("Backgrounds"), B_TITLED_WINDOW, 96eb32e334SJonas Sundström B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AUTO_UPDATE_SIZE_LIMITS, 97eb32e334SJonas Sundström B_ALL_WORKSPACES) 98cd2d1ffdSAxel Dörfler { 99eb32e334SJonas Sundström fBackgroundsView = new BackgroundsView(); 100eb32e334SJonas Sundström 101eb32e334SJonas Sundström BLayoutBuilder::Group<>(this) 102eb32e334SJonas Sundström .AddGroup(B_HORIZONTAL, 0) 103eb32e334SJonas Sundström .Add(fBackgroundsView) 104eb32e334SJonas Sundström .End() 105eb32e334SJonas Sundström .End(); 106eb32e334SJonas Sundström 107eb32e334SJonas Sundström if (!fBackgroundsView->FoundPositionSetting()) 108eb32e334SJonas Sundström CenterOnScreen(); 109eb32e334SJonas Sundström } 110eb32e334SJonas Sundström 111eb32e334SJonas Sundström 112eb32e334SJonas Sundström void 113eb32e334SJonas Sundström BackgroundsWindow::RefsReceived(BMessage* message) 114eb32e334SJonas Sundström { 115eb32e334SJonas Sundström fBackgroundsView->RefsReceived(message); 116529ff59fSJonas Sundström Activate(); 117cd2d1ffdSAxel Dörfler } 118cd2d1ffdSAxel Dörfler 119cd2d1ffdSAxel Dörfler 120cd2d1ffdSAxel Dörfler bool 121cd2d1ffdSAxel Dörfler BackgroundsWindow::QuitRequested() 122cd2d1ffdSAxel Dörfler { 123cd2d1ffdSAxel Dörfler fBackgroundsView->SaveSettings(); 124cd2d1ffdSAxel Dörfler be_app->PostMessage(B_QUIT_REQUESTED); 125cd2d1ffdSAxel Dörfler 126cd2d1ffdSAxel Dörfler return true; 127cd2d1ffdSAxel Dörfler } 128cd2d1ffdSAxel Dörfler 129cd2d1ffdSAxel Dörfler 130cd2d1ffdSAxel Dörfler void 131cd2d1ffdSAxel Dörfler BackgroundsWindow::WorkspaceActivated(int32 oldWorkspaces, bool active) 132cd2d1ffdSAxel Dörfler { 133cd2d1ffdSAxel Dörfler fBackgroundsView->WorkspaceActivated(oldWorkspaces, active); 134cd2d1ffdSAxel Dörfler } 135cd2d1ffdSAxel Dörfler 136cd2d1ffdSAxel Dörfler 137cd2d1ffdSAxel Dörfler // #pragma mark - 138cd2d1ffdSAxel Dörfler 139cd2d1ffdSAxel Dörfler 140cd2d1ffdSAxel Dörfler int 141cd2d1ffdSAxel Dörfler main(int argc, char** argv) 142cd2d1ffdSAxel Dörfler { 143c93e2c43SJonas Sundström BackgroundsApplication app; 144c93e2c43SJonas Sundström app.Run(); 145cd2d1ffdSAxel Dörfler return 0; 146cd2d1ffdSAxel Dörfler } 147cd2d1ffdSAxel Dörfler 148