xref: /haiku/src/apps/icon-o-matic/generic/property/view/specific_properties/TextInputValueView.cpp (revision e2a31283dde5ae5dfc14c3d2075e0d17cf392892)
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