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 <Slider.h>
10#include <StringView.h>
11
12#include <stdio.h>
13
14
15class Window : public BWindow {
16	public:
17		Window();
18
19		virtual bool QuitRequested();
20};
21
22
23void
24downBy(BRect &rect, BView* view)
25{
26	rect.bottom = rect.top + view->Bounds().Height() + 10;
27	rect.OffsetBy(0, rect.Height());
28}
29
30
31void
32rightBy(BRect &rect, BView* view)
33{
34	rect.right = rect.left + view->Bounds().Width() + 10;
35	rect.OffsetBy(rect.Width(), 0);
36}
37
38
39//	#pragma mark -
40
41
42Window::Window()
43	: BWindow(BRect(100, 100, 600, 400), "Slider-Test",
44			B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
45{
46	BRect rect = Bounds();
47	BView* view = new BView(rect, NULL, B_FOLLOW_ALL, B_WILL_DRAW);
48	view->SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
49	AddChild(view);
50
51	// horizontal sliders
52
53	rect.InsetBy(10, 10);
54	rect.right = rect.left + 250;
55	rect.bottom = rect.top + 30;
56
57	BSlider* slider = new BSlider(rect, "Slider1", "Test 1", NULL, 0, 100);
58	slider->ResizeToPreferred();
59	view->AddChild(slider);
60
61	downBy(rect, slider);
62
63	slider = new BSlider(rect, "Slider2", "Test 2", NULL, 0, 100, B_TRIANGLE_THUMB);
64	slider->ResizeToPreferred();
65	view->AddChild(slider);
66
67	downBy(rect, slider);
68
69	slider = new BSlider(rect, "Slider3", "Test 3", NULL, 0, 100);
70	rgb_color color = { 200, 80, 80, 255 };
71	slider->UseFillColor(true, &color);
72	slider->SetHashMarks(B_HASH_MARKS_BOTTOM);
73	slider->SetHashMarkCount(11);
74	slider->SetLimitLabels("0", "100");
75	slider->SetBarThickness(12.0);
76	slider->ResizeToPreferred();
77	view->AddChild(slider);
78
79	downBy(rect, slider);
80
81	slider = new BSlider(rect, "Slider4", "Test 4", NULL, 0, 100, B_TRIANGLE_THUMB);
82	slider->SetLimitLabels("0", "100");
83	slider->UseFillColor(true, &color);
84	slider->SetBarThickness(20.0);
85	slider->SetHashMarks(B_HASH_MARKS_BOTH);
86	slider->SetHashMarkCount(21);
87	slider->ResizeToPreferred();
88	view->AddChild(slider);
89
90	downBy(rect, slider);
91	rect.right = rect.left + 100;
92	rect.bottom = rect.top + 100;
93
94	slider = new BSlider(rect, "SliderA", "Test A", NULL, 0, 100);
95	slider->SetLimitLabels("0", "100");
96	slider->UseFillColor(true, &color);
97	slider->SetHashMarks(B_HASH_MARKS_BOTH);
98	slider->SetHashMarkCount(5);
99	view->AddChild(slider);
100
101	// vertical sliders
102
103	rect.left = 270;
104	rect.right = rect.left + 30;
105	rect.top = 10;
106	rect.bottom = view->Bounds().Height() - 20;
107
108	slider = new BSlider(rect, "Slider5", "Test 5", NULL, 0, 100);
109	slider->SetOrientation(B_VERTICAL);
110	slider->SetBarThickness(12.0);
111	slider->SetHashMarks(B_HASH_MARKS_RIGHT);
112	slider->SetHashMarkCount(5);
113	slider->ResizeToPreferred();
114	view->AddChild(slider);
115
116	rightBy(rect, slider);
117
118	slider = new BSlider(rect, "Slider6", "Test 6", NULL, 0, 100, B_TRIANGLE_THUMB);
119	slider->SetOrientation(B_VERTICAL);
120	slider->ResizeToPreferred();
121	view->AddChild(slider);
122
123	rightBy(rect, slider);
124
125	slider = new BSlider(rect, "Slider7", "Test 7", NULL, 0, 100);
126	slider->SetOrientation(B_VERTICAL);
127	slider->UseFillColor(true, &color);
128	slider->SetHashMarks(B_HASH_MARKS_BOTH);
129	slider->SetBarThickness(6.0);
130	slider->SetHashMarkCount(11);
131	slider->SetLimitLabels("0", "100");
132	slider->ResizeToPreferred();
133	view->AddChild(slider);
134
135	rightBy(rect, slider);
136
137	slider = new BSlider(rect, "Slider8", "Test 8", NULL, 0, 100, B_TRIANGLE_THUMB);
138	slider->SetOrientation(B_VERTICAL);
139	slider->UseFillColor(true, &color);
140	slider->SetBarThickness(20.0);
141	slider->SetHashMarks(B_HASH_MARKS_BOTH);
142	slider->SetHashMarkCount(21);
143	slider->SetLimitLabels("0", "100");
144	slider->ResizeToPreferred();
145	view->AddChild(slider);
146}
147
148
149bool
150Window::QuitRequested()
151{
152	be_app->PostMessage(B_QUIT_REQUESTED);
153	return true;
154}
155
156
157//	#pragma mark -
158
159
160class Application : public BApplication {
161	public:
162		Application();
163
164		virtual void ReadyToRun(void);
165};
166
167
168Application::Application()
169	: BApplication("application/x-vnd.haiku-test")
170{
171}
172
173
174void
175Application::ReadyToRun(void)
176{
177	BWindow *window = new Window();
178	window->Show();
179}
180
181
182//	#pragma mark -
183
184
185int
186main(int argc, char **argv)
187{
188	Application app;
189
190	app.Run();
191	return 0;
192}
193
194