1 /* 2 * Copyright 2006, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stephan Aßmus <superstippi@gmx.de> 7 */ 8 9 #include "TextInputValueView.h" 10 11 #include <stdio.h> 12 13 #include <Message.h> 14 #include <String.h> 15 16 #include "NummericalTextView.h" 17 #include "PropertyItemView.h" 18 19 enum { 20 MSG_VALUE_CHANGED = 'vchd', 21 }; 22 23 // constructor 24 TextInputValueView::TextInputValueView() 25 : PropertyEditorView() 26 { 27 } 28 29 // destructor 30 TextInputValueView::~TextInputValueView() 31 { 32 } 33 34 // AttachedToWindow 35 void 36 TextInputValueView::AttachedToWindow() 37 { 38 TextView()->SetMessage(new BMessage(MSG_VALUE_CHANGED)); 39 TextView()->SetTarget(this); 40 } 41 42 // Draw 43 void 44 TextInputValueView::Draw(BRect updateRect) 45 { 46 BRect b(Bounds()); 47 if (TextView()->IsFocus()) 48 SetLowColor(ui_color(B_KEYBOARD_NAVIGATION_COLOR)); 49 StrokeRect(b, B_SOLID_LOW); 50 } 51 52 // FrameResized 53 void 54 TextInputValueView::FrameResized(float width, float height) 55 { 56 BRect b(Bounds()); 57 b.InsetBy(1.0, 1.0); 58 TextView()->MoveTo(b.LeftTop()); 59 TextView()->ResizeTo(b.Width(), b.Height()); 60 BRect tr(TextView()->Bounds()); 61 tr.InsetBy(4.0, 1.0); 62 TextView()->SetTextRect(tr); 63 } 64 65 // MakeFocus 66 void 67 TextInputValueView::MakeFocus(bool focused) 68 { 69 TextView()->MakeFocus(focused); 70 } 71 72 // MessageReceived 73 void 74 TextInputValueView::MessageReceived(BMessage* message) 75 { 76 switch (message->what) { 77 case MSG_VALUE_CHANGED: 78 ValueChanged(); 79 break; 80 default: 81 PropertyEditorView::MessageReceived(message); 82 } 83 } 84 85 // SetEnabled 86 void 87 TextInputValueView::SetEnabled(bool enabled) 88 { 89 TextView()->MakeEditable(enabled); 90 91 rgb_color textColor = TextView()->LowColor(); 92 if (enabled) 93 textColor = tint_color(textColor, B_DARKEN_MAX_TINT); 94 else 95 textColor = tint_color(textColor, B_DISABLED_LABEL_TINT); 96 TextView()->SetFontAndColor(NULL, 0, &textColor); 97 } 98 99 // IsFocused 100 bool 101 TextInputValueView::IsFocused() const 102 { 103 return TextView()->IsFocus(); 104 } 105 106 107