164d80db6SStephan Aßmus /*
264d80db6SStephan Aßmus * Copyright 2006, Haiku.
364d80db6SStephan Aßmus * Distributed under the terms of the MIT License.
464d80db6SStephan Aßmus *
564d80db6SStephan Aßmus * Authors:
664d80db6SStephan Aßmus * Stephan Aßmus <superstippi@gmx.de>
764d80db6SStephan Aßmus */
864d80db6SStephan Aßmus
964d80db6SStephan Aßmus #include "TextInputValueView.h"
1064d80db6SStephan Aßmus
1164d80db6SStephan Aßmus #include <stdio.h>
1264d80db6SStephan Aßmus
1364d80db6SStephan Aßmus #include <Message.h>
1464d80db6SStephan Aßmus #include <String.h>
1564d80db6SStephan Aßmus
1664d80db6SStephan Aßmus #include "NummericalTextView.h"
1764d80db6SStephan Aßmus #include "PropertyItemView.h"
1864d80db6SStephan Aßmus
1964d80db6SStephan Aßmus enum {
2064d80db6SStephan Aßmus MSG_VALUE_CHANGED = 'vchd',
2164d80db6SStephan Aßmus };
2264d80db6SStephan Aßmus
2364d80db6SStephan Aßmus // constructor
TextInputValueView()24*e2a31283SStephan Aßmus TextInputValueView::TextInputValueView()
25*e2a31283SStephan Aßmus : PropertyEditorView()
2664d80db6SStephan Aßmus {
2764d80db6SStephan Aßmus }
2864d80db6SStephan Aßmus
2964d80db6SStephan Aßmus // destructor
~TextInputValueView()3064d80db6SStephan Aßmus TextInputValueView::~TextInputValueView()
3164d80db6SStephan Aßmus {
3264d80db6SStephan Aßmus }
3364d80db6SStephan Aßmus
3464d80db6SStephan Aßmus // AttachedToWindow
3564d80db6SStephan Aßmus void
AttachedToWindow()3664d80db6SStephan Aßmus TextInputValueView::AttachedToWindow()
3764d80db6SStephan Aßmus {
3864d80db6SStephan Aßmus TextView()->SetMessage(new BMessage(MSG_VALUE_CHANGED));
3964d80db6SStephan Aßmus TextView()->SetTarget(this);
4064d80db6SStephan Aßmus }
4164d80db6SStephan Aßmus
4264d80db6SStephan Aßmus // Draw
4364d80db6SStephan Aßmus void
Draw(BRect updateRect)4464d80db6SStephan Aßmus TextInputValueView::Draw(BRect updateRect)
4564d80db6SStephan Aßmus {
4664d80db6SStephan Aßmus BRect b(Bounds());
4764d80db6SStephan Aßmus if (TextView()->IsFocus())
4864d80db6SStephan Aßmus SetLowColor(ui_color(B_KEYBOARD_NAVIGATION_COLOR));
4964d80db6SStephan Aßmus StrokeRect(b, B_SOLID_LOW);
5064d80db6SStephan Aßmus }
5164d80db6SStephan Aßmus
5264d80db6SStephan Aßmus // FrameResized
5364d80db6SStephan Aßmus void
FrameResized(float width,float height)5464d80db6SStephan Aßmus TextInputValueView::FrameResized(float width, float height)
5564d80db6SStephan Aßmus {
5664d80db6SStephan Aßmus BRect b(Bounds());
5764d80db6SStephan Aßmus b.InsetBy(1.0, 1.0);
5864d80db6SStephan Aßmus TextView()->MoveTo(b.LeftTop());
5964d80db6SStephan Aßmus TextView()->ResizeTo(b.Width(), b.Height());
6064d80db6SStephan Aßmus BRect tr(TextView()->Bounds());
6164d80db6SStephan Aßmus tr.InsetBy(4.0, 1.0);
6264d80db6SStephan Aßmus TextView()->SetTextRect(tr);
6364d80db6SStephan Aßmus }
6464d80db6SStephan Aßmus
6564d80db6SStephan Aßmus // MakeFocus
6664d80db6SStephan Aßmus void
MakeFocus(bool focused)6764d80db6SStephan Aßmus TextInputValueView::MakeFocus(bool focused)
6864d80db6SStephan Aßmus {
6964d80db6SStephan Aßmus TextView()->MakeFocus(focused);
7064d80db6SStephan Aßmus }
7164d80db6SStephan Aßmus
7264d80db6SStephan Aßmus // MessageReceived
7364d80db6SStephan Aßmus void
MessageReceived(BMessage * message)7464d80db6SStephan Aßmus TextInputValueView::MessageReceived(BMessage* message)
7564d80db6SStephan Aßmus {
7664d80db6SStephan Aßmus switch (message->what) {
7764d80db6SStephan Aßmus case MSG_VALUE_CHANGED:
7864d80db6SStephan Aßmus ValueChanged();
7964d80db6SStephan Aßmus break;
8064d80db6SStephan Aßmus default:
8164d80db6SStephan Aßmus PropertyEditorView::MessageReceived(message);
8264d80db6SStephan Aßmus }
8364d80db6SStephan Aßmus }
8464d80db6SStephan Aßmus
8564d80db6SStephan Aßmus // SetEnabled
8664d80db6SStephan Aßmus void
SetEnabled(bool enabled)8764d80db6SStephan Aßmus TextInputValueView::SetEnabled(bool enabled)
8864d80db6SStephan Aßmus {
8964d80db6SStephan Aßmus TextView()->MakeEditable(enabled);
9064d80db6SStephan Aßmus
9164d80db6SStephan Aßmus rgb_color textColor = TextView()->LowColor();
9264d80db6SStephan Aßmus if (enabled)
9364d80db6SStephan Aßmus textColor = tint_color(textColor, B_DARKEN_MAX_TINT);
9464d80db6SStephan Aßmus else
9564d80db6SStephan Aßmus textColor = tint_color(textColor, B_DISABLED_LABEL_TINT);
9664d80db6SStephan Aßmus TextView()->SetFontAndColor(NULL, 0, &textColor);
9764d80db6SStephan Aßmus }
9864d80db6SStephan Aßmus
9964d80db6SStephan Aßmus // IsFocused
10064d80db6SStephan Aßmus bool
IsFocused() const10164d80db6SStephan Aßmus TextInputValueView::IsFocused() const
10264d80db6SStephan Aßmus {
10364d80db6SStephan Aßmus return TextView()->IsFocus();
10464d80db6SStephan Aßmus }
10564d80db6SStephan Aßmus
10664d80db6SStephan Aßmus
107