1/* 2 * Copyright (c) 2007-2014, Haiku, Inc. 3 * Distributed under the terms of the MIT license. 4 * 5 * Author: 6 * ��ukasz 'Sil2100' Zemczak <sil2100@vexillium.org> 7 * Stephan A��mus <superstippi@gmx.de> 8 */ 9 10 11#include "PackageTextViewer.h" 12 13#include <Button.h> 14#include <Catalog.h> 15#include <LayoutBuilder.h> 16#include <Locale.h> 17#include <ScrollView.h> 18 19 20enum { 21 P_MSG_ACCEPT = 'pmac', 22 P_MSG_DECLINE 23}; 24 25#undef B_TRANSLATION_CONTEXT 26#define B_TRANSLATION_CONTEXT "PackageTextViewer" 27 28 29PackageTextViewer::PackageTextViewer(const char *text, bool disclaimer) 30 : 31 BlockingWindow(BRect(125, 125, 675, 475), B_TRANSLATE("Disclaimer"), 32 B_AUTO_UPDATE_SIZE_LIMITS) 33{ 34 _InitView(text, disclaimer); 35 CenterOnScreen(); 36} 37 38 39void 40PackageTextViewer::MessageReceived(BMessage* message) 41{ 42 switch (message->what) { 43 case P_MSG_ACCEPT: 44 ReleaseSem(1); 45 break; 46 47 case P_MSG_DECLINE: 48 ReleaseSem(0); 49 break; 50 51 default: 52 BWindow::MessageReceived(message); 53 break; 54 } 55} 56 57 58// #pragma mark - 59 60 61void 62PackageTextViewer::_InitView(const char* text, bool disclaimer) 63{ 64 BTextView* textView = new BTextView("text_view"); 65 textView->MakeEditable(false); 66 textView->MakeSelectable(true); 67 float margin = ceilf(be_plain_font->Size()); 68 textView->SetInsets(margin, margin, margin, margin); 69 BScrollView* scrollView = new BScrollView("scroll_view", textView, 0, false, 70 true); 71 72 BButton* defaultButton; 73 74 if (disclaimer) { 75 defaultButton = new BButton("accept", B_TRANSLATE("Accept"), 76 new BMessage(P_MSG_ACCEPT)); 77 78 BButton* decline = new BButton("decline", B_TRANSLATE("Decline"), 79 new BMessage(P_MSG_DECLINE)); 80 81 BLayoutBuilder::Group<>(this, B_VERTICAL) 82 .Add(scrollView) 83 .AddGroup(B_HORIZONTAL) 84 .AddGlue() 85 .Add(defaultButton) 86 .Add(decline) 87 .End() 88 .SetInsets(B_USE_WINDOW_INSETS) 89 ; 90 } else { 91 defaultButton = new BButton("accept", B_TRANSLATE("Continue"), 92 new BMessage(P_MSG_ACCEPT)); 93 94 BLayoutBuilder::Group<>(this, B_VERTICAL) 95 .Add(scrollView) 96 .AddGroup(B_HORIZONTAL) 97 .AddGlue() 98 .Add(defaultButton) 99 .End() 100 .SetInsets(B_USE_WINDOW_INSETS) 101 ; 102 } 103 104 defaultButton->MakeDefault(true); 105 106 textView->SetText(text); 107} 108 109