xref: /haiku/src/tests/servers/app/stacktile/main.cpp (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 
6 #include <Application.h>
7 #include <OS.h>
8 #include <Window.h>
9 #include <WindowStack.h>
10 
11 
12 static BRect* sFrames = NULL;
13 static uint32 sNumFrames = 0;
14 
15 
16 class TestApp : public BApplication {
17 public:
18 								TestApp(uint32 numWindows);
19 	virtual						~TestApp();
20 
21 private:
22 			void				_CreateFrames(uint32 numWindows);
23 			int32				_WindowCreator();
24 			static int32		_ThreadStarter(void* data);
25 
26 private:
27 			uint32				fFrameNum;
28 			uint32				fNumWindows;
29 			uint32				fMaxWindows;
30 };
31 
32 
33 class TestWindow : public BWindow {
34 public:
35 						TestWindow(BRect frame);
36 	virtual				~TestWindow();
37 
38 	virtual	void		DispatchMessage(BMessage* message, BHandler* handler);
39 };
40 
41 
42 TestApp::TestApp(uint32 numWindows)
43 	:
44 	BApplication("application/x.vnd-Haiku.stack-tile"),
45 	fNumWindows(0),
46 	fMaxWindows(numWindows)
47 {
48 	_CreateFrames(numWindows);
49 }
50 
51 
52 TestApp::~TestApp()
53 {
54 	delete[] sFrames;
55 }
56 
57 
58 void
59 TestApp::_CreateFrames(uint32 numWindows)
60 {
61 	BWindowStack* stack = NULL;
62 	while (fNumWindows < fMaxWindows) {
63 		if (fFrameNum >= sNumFrames)
64 			fFrameNum = 0;
65 
66 		BWindow* window = new TestWindow(BRect(20, 20, 300, 200));
67 
68 		if (!stack) stack = new BWindowStack(window);
69 		else stack->AddWindow(window);
70 
71 		window->Show();
72 		fNumWindows++;
73 	}
74 }
75 
76 
77 TestWindow::TestWindow(BRect frame)
78 	:
79 	BWindow(frame, "Test", B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
80 {
81 }
82 
83 
84 TestWindow::~TestWindow()
85 {
86 }
87 
88 
89 void
90 TestWindow::DispatchMessage(BMessage* message, BHandler* handler)
91 {
92 	BWindow::DispatchMessage(message, handler);
93 
94 	int a = rand();
95 	char buf[32];
96 	sprintf(buf, "%d", a);
97 	SetTitle(buf);
98 }
99 
100 
101 int
102 main(int argc, char** argv)
103 {
104 	uint32 numWindows = 2;
105 	if (argc > 1)
106 		numWindows = atoi(argv[1]);
107 
108 	TestApp app(numWindows);
109 	app.Run();
110 
111 	return 0;
112 }
113