xref: /haiku/src/tests/kits/interface/CheckBoxTest.cpp (revision aed75ba2f668d1b5b53f994faedbd1b51c95e077)
18bdf4008SAxel Dörfler /*
28bdf4008SAxel Dörfler  * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
38bdf4008SAxel Dörfler  * Distributed under the terms of the MIT License.
48bdf4008SAxel Dörfler  */
58bdf4008SAxel Dörfler 
68bdf4008SAxel Dörfler 
78bdf4008SAxel Dörfler #include <Application.h>
88bdf4008SAxel Dörfler #include <Window.h>
98bdf4008SAxel Dörfler #include <Box.h>
108bdf4008SAxel Dörfler #include <StringView.h>
118bdf4008SAxel Dörfler 
128bdf4008SAxel Dörfler // include Be's and our version (see Jamfile)
138bdf4008SAxel Dörfler #include <CheckBox.h>
148bdf4008SAxel Dörfler #define BCheckBox HCheckBox
158bdf4008SAxel Dörfler #undef _CHECK_BOX_H
168bdf4008SAxel Dörfler #include <CheckBox.h>
178bdf4008SAxel Dörfler #undef BCheckBox
188bdf4008SAxel Dörfler 
198bdf4008SAxel Dörfler #include <stdio.h>
208bdf4008SAxel Dörfler 
218bdf4008SAxel Dörfler 
228bdf4008SAxel Dörfler class DividedBackgroundView : public BView {
238bdf4008SAxel Dörfler 	public:
248bdf4008SAxel Dörfler 		DividedBackgroundView(BRect rect);
258bdf4008SAxel Dörfler 
268bdf4008SAxel Dörfler 		virtual void Draw(BRect updateRect);
278bdf4008SAxel Dörfler };
288bdf4008SAxel Dörfler 
298bdf4008SAxel Dörfler 
DividedBackgroundView(BRect rect)308bdf4008SAxel Dörfler DividedBackgroundView::DividedBackgroundView(BRect rect)
318bdf4008SAxel Dörfler 	: BView(rect, NULL, B_FOLLOW_NONE, B_WILL_DRAW)
328bdf4008SAxel Dörfler {
338bdf4008SAxel Dörfler 	SetViewColor(80, 120, 80);
348bdf4008SAxel Dörfler }
358bdf4008SAxel Dörfler 
368bdf4008SAxel Dörfler 
378bdf4008SAxel Dörfler void
Draw(BRect updateRect)388bdf4008SAxel Dörfler DividedBackgroundView::Draw(BRect updateRect)
398bdf4008SAxel Dörfler {
408bdf4008SAxel Dörfler 	PushState();
418bdf4008SAxel Dörfler 
428bdf4008SAxel Dörfler 	BRect bounds = Bounds();
438bdf4008SAxel Dörfler 	BRect rect = bounds;
448bdf4008SAxel Dörfler 	rect.right = rect.left + bounds.Width() / 2;
458bdf4008SAxel Dörfler 
468bdf4008SAxel Dörfler 	SetLowColor(120, 0, 0);
478bdf4008SAxel Dörfler 	FillRect(rect, B_SOLID_LOW);
488bdf4008SAxel Dörfler 
498bdf4008SAxel Dörfler 	rect.left = rect.right + 1;
508bdf4008SAxel Dörfler 	rect.right = bounds.right;
518bdf4008SAxel Dörfler 
528bdf4008SAxel Dörfler 	SetLowColor(0, 0, 120);
538bdf4008SAxel Dörfler 	FillRect(rect, B_SOLID_LOW);
548bdf4008SAxel Dörfler }
558bdf4008SAxel Dörfler 
568bdf4008SAxel Dörfler 
578bdf4008SAxel Dörfler //	#pragma mark -
588bdf4008SAxel Dörfler 
598bdf4008SAxel Dörfler 
608bdf4008SAxel Dörfler class Window : public BWindow {
618bdf4008SAxel Dörfler 	public:
628bdf4008SAxel Dörfler 		Window();
638bdf4008SAxel Dörfler 
648bdf4008SAxel Dörfler 		virtual bool QuitRequested();
658bdf4008SAxel Dörfler };
668bdf4008SAxel Dörfler 
678bdf4008SAxel Dörfler 
Window()688bdf4008SAxel Dörfler Window::Window()
698bdf4008SAxel Dörfler 	: BWindow(BRect(100, 100, 520, 430), "CheckBox-Test",
708bdf4008SAxel Dörfler 			B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
718bdf4008SAxel Dörfler {
728bdf4008SAxel Dörfler 	BRect rect(20, 10, 200, 30);
738bdf4008SAxel Dörfler 	BStringView *stringView = new BStringView(rect, NULL, "Be's BCheckBox");
748bdf4008SAxel Dörfler 	stringView->SetFont(be_bold_font);
758bdf4008SAxel Dörfler 	AddChild(stringView);
768bdf4008SAxel Dörfler 
778bdf4008SAxel Dörfler 	rect.OffsetBy(0, 40);
788bdf4008SAxel Dörfler 	BView *checkBox = new BCheckBox(rect, NULL, "Test 1", NULL);
798bdf4008SAxel Dörfler 	AddChild(checkBox);
808bdf4008SAxel Dörfler 
818bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
828bdf4008SAxel Dörfler 	BView *view = new BView(rect.InsetByCopy(-15, -15), NULL, B_FOLLOW_NONE, B_WILL_DRAW);
838bdf4008SAxel Dörfler 	view->SetViewColor(240, 180, 20);
848bdf4008SAxel Dörfler 	AddChild(view);
858bdf4008SAxel Dörfler 
868bdf4008SAxel Dörfler 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 2", NULL);
878bdf4008SAxel Dörfler 	view->AddChild(checkBox);
88*aed75ba2SAxel Dörfler 	checkBox->SetViewColor(220, 170, 20);
898bdf4008SAxel Dörfler 
908bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
918bdf4008SAxel Dörfler 	BBox *box = new BBox(rect.InsetByCopy(-15, -15), NULL);
928bdf4008SAxel Dörfler 	AddChild(box);
938bdf4008SAxel Dörfler 
948bdf4008SAxel Dörfler 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 3", NULL);
95*aed75ba2SAxel Dörfler 	checkBox->SetViewColor(220, 170, 20);
96*aed75ba2SAxel Dörfler 		// is ignored...
978bdf4008SAxel Dörfler 	box->AddChild(checkBox);
988bdf4008SAxel Dörfler 
998bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
1008bdf4008SAxel Dörfler 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
1018bdf4008SAxel Dörfler 	AddChild(view);
1028bdf4008SAxel Dörfler 
1038bdf4008SAxel Dörfler 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 4", NULL);
1048bdf4008SAxel Dörfler 	view->AddChild(checkBox);
1058bdf4008SAxel Dörfler 
1068bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
1078bdf4008SAxel Dörfler 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
1088bdf4008SAxel Dörfler 	AddChild(view);
1098bdf4008SAxel Dörfler 
1108bdf4008SAxel Dörfler 	checkBox = new BCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 5", NULL);
1118bdf4008SAxel Dörfler 	checkBox->ResizeToPreferred();
1128bdf4008SAxel Dörfler 	view->AddChild(checkBox);
1138bdf4008SAxel Dörfler 
1148bdf4008SAxel Dörfler 	// Haiku's BCheckBox
1158bdf4008SAxel Dörfler 
1168bdf4008SAxel Dörfler 	rect.Set(240, 10, 400, 30);
1178bdf4008SAxel Dörfler 	stringView = new BStringView(rect, NULL, "Haiku's BCheckBox");
1188bdf4008SAxel Dörfler 	stringView->SetFont(be_bold_font);
1198bdf4008SAxel Dörfler 	AddChild(stringView);
1208bdf4008SAxel Dörfler 
1218bdf4008SAxel Dörfler 	rect.OffsetBy(0, 40);
1228bdf4008SAxel Dörfler 	checkBox = new HCheckBox(rect, NULL, "Test 1", NULL);
1238bdf4008SAxel Dörfler 	AddChild(checkBox);
1248bdf4008SAxel Dörfler 
1258bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
1268bdf4008SAxel Dörfler 	view = new BView(rect.InsetByCopy(-15, -15), NULL, B_FOLLOW_NONE, B_WILL_DRAW);
1278bdf4008SAxel Dörfler 	view->SetViewColor(240, 180, 20);
1288bdf4008SAxel Dörfler 	AddChild(view);
1298bdf4008SAxel Dörfler 
1308bdf4008SAxel Dörfler 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 2", NULL);
1318bdf4008SAxel Dörfler 	view->AddChild(checkBox);
132*aed75ba2SAxel Dörfler 	checkBox->SetViewColor(220, 170, 20);
1338bdf4008SAxel Dörfler 
1348bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
1358bdf4008SAxel Dörfler 	box = new BBox(rect.InsetByCopy(-15, -15), NULL);
1368bdf4008SAxel Dörfler 	AddChild(box);
1378bdf4008SAxel Dörfler 
1388bdf4008SAxel Dörfler 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 3", NULL);
139*aed75ba2SAxel Dörfler 	checkBox->SetViewColor(220, 170, 20);
140*aed75ba2SAxel Dörfler 		// is ignored...
1418bdf4008SAxel Dörfler 	box->AddChild(checkBox);
1428bdf4008SAxel Dörfler 
1438bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
1448bdf4008SAxel Dörfler 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
1458bdf4008SAxel Dörfler 	AddChild(view);
1468bdf4008SAxel Dörfler 
1478bdf4008SAxel Dörfler 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 4", NULL);
1488bdf4008SAxel Dörfler 	view->AddChild(checkBox);
1498bdf4008SAxel Dörfler 
1508bdf4008SAxel Dörfler 	rect.OffsetBy(0, 60);
1518bdf4008SAxel Dörfler 	view = new DividedBackgroundView(rect.InsetByCopy(-15, -15));
1528bdf4008SAxel Dörfler 	AddChild(view);
1538bdf4008SAxel Dörfler 
1548bdf4008SAxel Dörfler 	checkBox = new HCheckBox(rect.OffsetToCopy(15, 15), NULL, "Test 5", NULL);
1558bdf4008SAxel Dörfler 	checkBox->ResizeToPreferred();
1568bdf4008SAxel Dörfler 	view->AddChild(checkBox);
1578bdf4008SAxel Dörfler }
1588bdf4008SAxel Dörfler 
1598bdf4008SAxel Dörfler 
1608bdf4008SAxel Dörfler bool
QuitRequested()1618bdf4008SAxel Dörfler Window::QuitRequested()
1628bdf4008SAxel Dörfler {
1638bdf4008SAxel Dörfler 	be_app->PostMessage(B_QUIT_REQUESTED);
1648bdf4008SAxel Dörfler 	return true;
1658bdf4008SAxel Dörfler }
1668bdf4008SAxel Dörfler 
1678bdf4008SAxel Dörfler 
1688bdf4008SAxel Dörfler //	#pragma mark -
1698bdf4008SAxel Dörfler 
1708bdf4008SAxel Dörfler 
1718bdf4008SAxel Dörfler class Application : public BApplication {
1728bdf4008SAxel Dörfler 	public:
1738bdf4008SAxel Dörfler 		Application();
1748bdf4008SAxel Dörfler 
1758bdf4008SAxel Dörfler 		virtual void ReadyToRun(void);
1768bdf4008SAxel Dörfler };
1778bdf4008SAxel Dörfler 
1788bdf4008SAxel Dörfler 
Application()1798bdf4008SAxel Dörfler Application::Application()
1808bdf4008SAxel Dörfler 	: BApplication("application/x-vnd.obos-test")
1818bdf4008SAxel Dörfler {
1828bdf4008SAxel Dörfler }
1838bdf4008SAxel Dörfler 
1848bdf4008SAxel Dörfler 
1858bdf4008SAxel Dörfler void
ReadyToRun(void)1868bdf4008SAxel Dörfler Application::ReadyToRun(void)
1878bdf4008SAxel Dörfler {
1888bdf4008SAxel Dörfler 	BWindow *window = new Window();
1898bdf4008SAxel Dörfler 	window->Show();
1908bdf4008SAxel Dörfler }
1918bdf4008SAxel Dörfler 
1928bdf4008SAxel Dörfler 
1938bdf4008SAxel Dörfler //	#pragma mark -
1948bdf4008SAxel Dörfler 
1958bdf4008SAxel Dörfler 
1968bdf4008SAxel Dörfler int
main(int argc,char ** argv)1978bdf4008SAxel Dörfler main(int argc, char **argv)
1988bdf4008SAxel Dörfler {
1998bdf4008SAxel Dörfler 	Application app;
2008bdf4008SAxel Dörfler 
2018bdf4008SAxel Dörfler 	app.Run();
2028bdf4008SAxel Dörfler 	return 0;
2038bdf4008SAxel Dörfler }
2048bdf4008SAxel Dörfler 
205