1 #include <Application.h>
2 #include <ChannelSlider.h>
3 #include <Window.h>
4
5 #include <string>
6
7
8 struct limit_label {
9 std::string min_label;
10 std::string max_label;
11 };
12
13
14 const 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
21 class MainWindow : public BWindow {
22 public:
MainWindow()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
QuitRequested()67 virtual bool QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return BWindow::QuitRequested() ; }
68 };
69
70
71 class App : public BApplication {
72 public:
App()73 App() : BApplication("application/x-vnd.channelslidertest")
74 {
75 }
76
ReadyToRun()77 virtual void ReadyToRun()
78 {
79 (new MainWindow())->Show();
80 }
81
82 };
83
main()84 int main()
85 {
86 App app;
87
88 app.Run();
89
90 return 0;
91 }
92