1 /*
2 * Copyright 2016, Adrien Destugues, pulkomandy@pulkomandy.tk
3 * Distributed under terms of the MIT license.
4 */
5
6
7 #include "CustomRateWindow.h"
8
9 #include "SerialApp.h"
10
11 #include <Button.h>
12 #include <Catalog.h>
13 #include <GroupLayoutBuilder.h>
14 #include <Spinner.h>
15
16
17 #define B_TRANSLATION_CONTEXT "Custom baudrate window"
18
19
20 static const uint32 kOkButtonMsg = 'ok';
21
CustomRateWindow(int baudrate)22 CustomRateWindow::CustomRateWindow(int baudrate)
23 : BWindow(BRect(100, 100, 200, 150), B_TRANSLATE("Custom baudrate"),
24 B_FLOATING_WINDOW, B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_CLOSE_ON_ESCAPE
25 | B_AUTO_UPDATE_SIZE_LIMITS)
26 {
27 BGroupLayout* layout = new BGroupLayout(B_HORIZONTAL);
28 SetLayout(layout);
29
30 BGroupView* root = new BGroupView(B_VERTICAL);
31 AddChild(root);
32
33 BGroupLayoutBuilder(root)
34 .SetInsets(B_USE_WINDOW_SPACING, B_USE_WINDOW_SPACING,
35 B_USE_WINDOW_SPACING, B_USE_WINDOW_SPACING)
36 .AddGroup(B_HORIZONTAL)
37 .Add(fSpinner = new BSpinner("spin", B_TRANSLATE("Baudrate:"), NULL))
38 .End()
39 .AddGroup(B_HORIZONTAL)
40 .AddGlue()
41 .Add(new BButton("ok", B_TRANSLATE("OK"), new BMessage(kOkButtonMsg)))
42 .Add(new BButton("cancel", B_TRANSLATE("Cancel"),
43 new BMessage(B_QUIT_REQUESTED)))
44 .End()
45 .End();
46
47 fSpinner->SetMinValue(50);
48 fSpinner->SetMaxValue(3000000);
49 fSpinner->SetValue(baudrate);
50
51 CenterOnScreen();
52 }
53
54
55 void
MessageReceived(BMessage * message)56 CustomRateWindow::MessageReceived(BMessage* message)
57 {
58 if (message->what == kOkButtonMsg)
59 {
60 BMessage* settings = new BMessage(kMsgSettings);
61 settings->AddInt32("baudrate", fSpinner->Value());
62 be_app->PostMessage(settings);
63 Quit();
64 return;
65 }
66
67 BWindow::MessageReceived(message);
68 }
69