1/* 2 * Copyright 2008, Haiku Inc. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel D��rfler, axeld@pinc-software.de 7 */ 8 9 10#include <Application.h> 11#include <String.h> 12#include <Window.h> 13#include <View.h> 14 15#include <stdio.h> 16 17 18class Application : public BApplication { 19public: 20 Application(); 21 22 virtual void ReadyToRun(); 23}; 24 25class Window : public BWindow { 26public: 27 Window(); 28 virtual ~Window(); 29 30 virtual void WorkspaceActivated(int32 workspace, bool active); 31 virtual bool QuitRequested(); 32}; 33 34class View : public BView { 35public: 36 View(BRect rect); 37 virtual ~View(); 38 39 virtual void Draw(BRect updateRect); 40}; 41 42 43View::View(BRect rect) 44 : BView(rect, "workspace", B_FOLLOW_ALL, B_WILL_DRAW) 45{ 46} 47 48 49View::~View() 50{ 51} 52 53 54void 55View::Draw(BRect updateRect) 56{ 57 BFont font; 58 font.SetSize(200); 59 60 font_height fontHeight; 61 font.GetHeight(&fontHeight); 62 63 SetFont(&font); 64 MovePenTo(20, ceilf(20 + fontHeight.ascent)); 65 66 BString current; 67 current << current_workspace(); 68 69 DrawString(current.String()); 70} 71 72 73// #pragma mark - 74 75 76Window::Window() 77 : BWindow(BRect(100, 100, 400, 400), "WorkspaceActivated-Test", 78 B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS) 79{ 80 BView *view = new View(BRect(10, 10, 290, 290)); 81 AddChild(view); 82} 83 84 85Window::~Window() 86{ 87} 88 89 90void 91Window::WorkspaceActivated(int32 workspace, bool active) 92{ 93 printf("Workspace %ld (%ld), active %d\n", 94 workspace, current_workspace(), active); 95} 96 97 98bool 99Window::QuitRequested() 100{ 101 be_app->PostMessage(B_QUIT_REQUESTED); 102 return true; 103} 104 105 106// #pragma mark - 107 108 109Application::Application() 110 : BApplication("application/x-vnd.haiku-workspace_activated") 111{ 112} 113 114 115void 116Application::ReadyToRun() 117{ 118 Window *window = new Window(); 119 window->Show(); 120} 121 122 123// #pragma mark - 124 125 126int 127main(int argc, char** argv) 128{ 129 Application app; 130 131 app.Run(); 132 return 0; 133} 134