1#include <Application.h>
2#include <ChannelSlider.h>
3#include <Window.h>
4
5#include <string>
6
7
8struct limit_label {
9	std::string min_label;
10	std::string max_label;
11};
12
13
14const struct limit_label kLabels[] = {
15	{ "min_label_1", "max_label_1" },
16	{ "min_label_2", "max_label_2" },
17	{ "min_label_3", "max_label_3" },
18};
19
20
21class MainWindow : public BWindow {
22public:
23	MainWindow()
24		:BWindow(BRect(50, 50, 250, 360), "window", B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS)
25	{
26		BChannelSlider *slider = new BChannelSlider(BRect(10, 10, 20, 20),
27			"vertical slider", "Verticalp", new BMessage('test'), 4);
28		slider->SetOrientation(B_VERTICAL);
29		AddChild(slider);
30		slider->ResizeToPreferred();
31
32		slider = new BChannelSlider(BRect(10, 10, 20, 20), "vertical slider",
33			"Verticalp", new BMessage('test'), B_VERTICAL,  4);
34		AddChild(slider);
35		slider->SetLimitLabels("Wminp", "Wmaxp");
36		slider->ResizeToPreferred();
37		slider->MoveBy(slider->Bounds().Width() + 10.0, 0.0);
38
39		BChannelSlider *horizontal = new BChannelSlider(BRect(150, 10, 160, 20),
40			 "horizontal slider", "Horizontal", new BMessage('test'), 3);
41		AddChild(horizontal);
42		horizontal->ResizeToPreferred();
43
44		horizontal = new BChannelSlider(BRect(150, 10, 160, 20),
45			 "horizontal slider", "Horizontalp", new BMessage('test'),
46			 B_HORIZONTAL, 3);
47		AddChild(horizontal);
48		horizontal->SetLimitLabels("Wminp", "Wmaxp");
49		horizontal->ResizeToPreferred();
50		horizontal->MoveBy(0.0, horizontal->Bounds().Height() + 10.0);
51
52		ResizeTo(horizontal->Frame().right + 10, slider->Frame().bottom + 10);
53
54		for (int32 i = 0; i < horizontal->CountChannels(); i++) {
55			horizontal->SetLimitLabelsFor(i, kLabels[i].min_label.c_str(),
56												kLabels[i].max_label.c_str());
57		}
58
59		for (int32 i = 0; i < horizontal->CountChannels(); i++) {
60			if (strcmp(horizontal->MinLimitLabelFor(i), kLabels[i].min_label.c_str()) != 0)
61				printf("wrong min label for channel %ld\n", i);
62			if (strcmp(horizontal->MaxLimitLabelFor(i), kLabels[i].max_label.c_str()) != 0)
63				printf("wrong max label for channel %ld\n", i);
64		}
65	}
66
67	virtual bool QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return BWindow::QuitRequested() ; }
68};
69
70
71class App : public BApplication {
72public:
73	App() : BApplication("application/x-vnd.channelslidertest")
74	{
75	}
76
77	virtual void ReadyToRun()
78	{
79		(new MainWindow())->Show();
80	}
81
82};
83
84int main()
85{
86	App app;
87
88	app.Run();
89
90	return 0;
91}
92