xref: /haiku/src/tests/kits/interface/CheckBoxTest.cpp (revision aed75ba2f668d1b5b53f994faedbd1b51c95e077)
1 /*
2  * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include <Application.h>
8 #include <Window.h>
9 #include <Box.h>
10 #include <StringView.h>
11 
12 // include Be's and our version (see Jamfile)
13 #include <CheckBox.h>
14 #define BCheckBox HCheckBox
15 #undef _CHECK_BOX_H
16 #include <CheckBox.h>
17 #undef BCheckBox
18 
19 #include <stdio.h>
20 
21 
22 class DividedBackgroundView : public BView {
23 	public:
24 		DividedBackgroundView(BRect rect);
25 
26 		virtual void Draw(BRect updateRect);
27 };
28 
29 
DividedBackgroundView(BRect rect)30 DividedBackgroundView::DividedBackgroundView(BRect rect)
31 	: BView(rect, NULL, B_FOLLOW_NONE, B_WILL_DRAW)
32 {
33 	SetViewColor(80, 120, 80);
34 }
35 
36 
37 void
Draw(BRect updateRect)38 DividedBackgroundView::Draw(BRect updateRect)
39 {
40 	PushState();
41 
42 	BRect bounds = Bounds();
43 	BRect rect = bounds;
44 	rect.right = rect.left + bounds.Width() / 2;
45 
46 	SetLowColor(120, 0, 0);
47 	FillRect(rect, B_SOLID_LOW);
48 
49 	rect.left = rect.right + 1;
50 	rect.right = bounds.right;
51 
52 	SetLowColor(0, 0, 120);
53 	FillRect(rect, B_SOLID_LOW);
54 }
55 
56 
57 //	#pragma mark -
58 
59 
60 class Window : public BWindow {
61 	public:
62 		Window();
63 
64 		virtual bool QuitRequested();
65 };
66 
67 
Window()68 Window::Window()
69 	: BWindow(BRect(100, 100, 520, 430), "CheckBox-Test",
70 			B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
71 {
72 	BRect rect(20, 10, 200, 30);
73 	BStringView *stringView = new BStringView(rect, NULL, "Be's BCheckBox");
74 	stringView->SetFont(be_bold_font);
75 	AddChild(stringView);
76 
77 	rect.OffsetBy(0, 40);
78 	BView *checkBox = new BCheckBox(rect, NULL, "Test 1", NULL);
79 	AddChild(checkBox);
80 
81 	rect.OffsetBy(0, 60);
82 	BView *view = new BView(rect.InsetByCopy(-15, -15), NULL, B_FOLLOW_NONE, B_WILL_DRAW);
83 	view->SetViewColor(240, 180, 20);
84 	AddChild(view);
85 
86 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 2", NULL);
87 	view->AddChild(checkBox);
88 	checkBox->SetViewColor(220, 170, 20);
89 
90 	rect.OffsetBy(0, 60);
91 	BBox *box = new BBox(rect.InsetByCopy(-15, -15), NULL);
92 	AddChild(box);
93 
94 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 3", NULL);
95 	checkBox->SetViewColor(220, 170, 20);
96 		// is ignored...
97 	box->AddChild(checkBox);
98 
99 	rect.OffsetBy(0, 60);
100 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
101 	AddChild(view);
102 
103 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 4", NULL);
104 	view->AddChild(checkBox);
105 
106 	rect.OffsetBy(0, 60);
107 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
108 	AddChild(view);
109 
110 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 5", NULL);
111 	checkBox->ResizeToPreferred();
112 	view->AddChild(checkBox);
113 
114 	// Haiku's BCheckBox
115 
116 	rect.Set(240, 10, 400, 30);
117 	stringView = new BStringView(rect, NULL, "Haiku's BCheckBox");
118 	stringView->SetFont(be_bold_font);
119 	AddChild(stringView);
120 
121 	rect.OffsetBy(0, 40);
122 	checkBox = new HCheckBox(rect, NULL, "Test 1", NULL);
123 	AddChild(checkBox);
124 
125 	rect.OffsetBy(0, 60);
126 	view = new BView(rect.InsetByCopy(-15, -15), NULL, B_FOLLOW_NONE, B_WILL_DRAW);
127 	view->SetViewColor(240, 180, 20);
128 	AddChild(view);
129 
130 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 2", NULL);
131 	view->AddChild(checkBox);
132 	checkBox->SetViewColor(220, 170, 20);
133 
134 	rect.OffsetBy(0, 60);
135 	box = new BBox(rect.InsetByCopy(-15, -15), NULL);
136 	AddChild(box);
137 
138 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 3", NULL);
139 	checkBox->SetViewColor(220, 170, 20);
140 		// is ignored...
141 	box->AddChild(checkBox);
142 
143 	rect.OffsetBy(0, 60);
144 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
145 	AddChild(view);
146 
147 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 4", NULL);
148 	view->AddChild(checkBox);
149 
150 	rect.OffsetBy(0, 60);
151 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
152 	AddChild(view);
153 
154 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 5", NULL);
155 	checkBox->ResizeToPreferred();
156 	view->AddChild(checkBox);
157 }
158 
159 
160 bool
QuitRequested()161 Window::QuitRequested()
162 {
163 	be_app->PostMessage(B_QUIT_REQUESTED);
164 	return true;
165 }
166 
167 
168 //	#pragma mark -
169 
170 
171 class Application : public BApplication {
172 	public:
173 		Application();
174 
175 		virtual void ReadyToRun(void);
176 };
177 
178 
Application()179 Application::Application()
180 	: BApplication("application/x-vnd.obos-test")
181 {
182 }
183 
184 
185 void
ReadyToRun(void)186 Application::ReadyToRun(void)
187 {
188 	BWindow *window = new Window();
189 	window->Show();
190 }
191 
192 
193 //	#pragma mark -
194 
195 
196 int
main(int argc,char ** argv)197 main(int argc, char **argv)
198 {
199 	Application app;
200 
201 	app.Run();
202 	return 0;
203 }
204 
205