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