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