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