23#include "../property.h"
25#include <kiconloader.h>
30#include <tqtoolbutton.h>
38BoolEdit::BoolEdit(
Property *property, TQWidget *parent,
const char *name)
40 , m_yesIcon( SmallIcon(
"button_ok") )
41 , m_noIcon( SmallIcon(
"button_no") )
43 m_toggle =
new TQToolButton(
this);
44 m_toggle->setToggleButton(
true );
45 m_toggle->setFocusPolicy(TQWidget::WheelFocus);
46 m_toggle->setUsesTextLabel(
true);
47 m_toggle->setTextPosition(TQToolButton::Right);
48 m_toggle->setSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Fixed);
51 m_toggle->resize(width(), height());
52 setFocusWidget(m_toggle);
53 connect(m_toggle, TQ_SIGNAL(stateChanged(
int)),
this, TQ_SLOT(slotValueChanged(
int)));
63 return TQVariant(m_toggle->isOn());
67BoolEdit::setValue(
const TQVariant &value,
bool emitChange)
69 m_toggle->blockSignals(
true);
70 m_toggle->setOn(value.toBool());
71 setState( value.toBool() ? TQButton::On : TQButton::Off );
72 m_toggle->blockSignals(
false);
74 emit valueChanged(
this);
78BoolEdit::slotValueChanged(
int state)
81 emit valueChanged(
this);
84static void drawViewerInternal(TQPainter *p,
const TQRect &r,
const TQVariant &value,
85 const TQPixmap& yesIcon,
const TQPixmap& noIcon,
const TQString& nullText)
89 r2.moveLeft(TDEIcon::SizeSmall + 6);
91 if(value.isNull() && !nullText.isEmpty()) {
92 p->drawText(r2, TQt::AlignVCenter | TQt::AlignLeft, nullText);
94 else if(value.toBool()) {
95 p->drawPixmap(3, (r.height()-1-TDEIcon::SizeSmall)/2, yesIcon);
96 p->drawText(r2, TQt::AlignVCenter | TQt::AlignLeft, i18n(
"Yes"));
99 p->drawPixmap(3, (r.height()-1-TDEIcon::SizeSmall)/2, noIcon);
100 p->drawText(r2, TQt::AlignVCenter | TQt::AlignLeft, i18n(
"No"));
105BoolEdit::drawViewer(TQPainter *p,
const TQColorGroup &cg,
const TQRect &r,
const TQVariant &value)
108 drawViewerInternal(p, r, value, m_yesIcon, m_noIcon,
"");
112BoolEdit::setState(
int state)
114 if(TQButton::On == state) {
115 m_toggle->setIconSet(TQIconSet(m_yesIcon));
116 m_toggle->setTextLabel(i18n(
"Yes"));
118 else if (TQButton::Off == state) {
119 m_toggle->setIconSet(TQIconSet(m_noIcon));
120 m_toggle->setTextLabel(i18n(
"No"));
125BoolEdit::resizeEvent(TQResizeEvent *ev)
127 m_toggle->resize(ev->size());
131BoolEdit::eventFilter(TQObject* watched, TQEvent* e)
133 if(e->type() == TQEvent::KeyPress) {
134 TQKeyEvent* ev =
static_cast<TQKeyEvent*
>(e);
135 const int k = ev->key();
136 if(k == TQt::Key_Space || k == TQt::Key_Enter || k == TQt::Key_Return) {
146BoolEdit::setReadOnlyInternal(
bool readOnly)
153ThreeStateBoolEdit::ThreeStateBoolEdit(
Property *property, TQWidget *parent,
const char *name)
154 : ComboBox(property, parent,
name)
155 , m_yesIcon( SmallIcon(
"button_ok") )
156 , m_noIcon( SmallIcon(
"button_no") )
158 m_edit->insertItem( m_yesIcon, i18n(
"Yes") );
159 m_edit->insertItem( m_noIcon, i18n(
"No") );
160 TQVariant thirdState =
property ?
property->option(
"3rdState") : TQVariant();
161 TQPixmap nullIcon( m_yesIcon.size() );
162 nullIcon.setMask(TQBitmap(m_yesIcon.size(),
true));
163 m_edit->insertItem( nullIcon, thirdState.toString().isEmpty() ? i18n(
"None") : thirdState.toString() );
166ThreeStateBoolEdit::~ThreeStateBoolEdit()
174 const int idx = m_edit->currentItem();
176 return TQVariant(
true);
178 return idx==1 ? TQVariant(
false) : TQVariant();
182ThreeStateBoolEdit::setProperty(
Property *prop)
184 m_setValueEnabled =
false;
186 m_setValueEnabled =
true;
188 setValue(prop->
value(),
false);
192ThreeStateBoolEdit::setValue(
const TQVariant &value,
bool emitChange)
194 if (!m_setValueEnabled)
198 m_edit->setCurrentItem(2);
200 m_edit->setCurrentItem(value.toBool() ? 0 : 1);
203 emit valueChanged(
this);
207ThreeStateBoolEdit::drawViewer(TQPainter *p,
const TQColorGroup &cg,
const TQRect &r,
const TQVariant &value)
210 drawViewerInternal(p, r, value, m_yesIcon, m_noIcon, m_edit->text(2));
213#include "booledit.moc"
The base class representing a single property.
const char * name(StdAction id)
Namespace for a set of classes implementing generic properties framework.