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 20static const uint32 kOkButtonMsg = 'ok'; 21 22CustomRateWindow::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 55void 56CustomRateWindow::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