Simplify QAccessibleSpinboxes.

Change-Id: I2fb3ef0ccd108539d8a4abbf3bbd3fdf6d94fac2
Reviewed-on: http://codereview.qt-project.org/4823
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
This commit is contained in:
Frederik Gladhorn 2011-09-09 16:06:38 +02:00 committed by Qt by Nokia
parent c7fa7475c9
commit a8dc1b15dc
2 changed files with 4 additions and 131 deletions

View File

@ -80,15 +80,6 @@ QAbstractSpinBox *QAccessibleAbstractSpinBox::abstractSpinBox() const
return qobject_cast<QAbstractSpinBox*>(object());
}
/*! \reimp */
QRect QAccessibleAbstractSpinBox::rect(int child) const
{
QRect rect;
if (!abstractSpinBox()->isVisible())
return rect;
return widget()->rect();
}
/*! \reimp */
QString QAccessibleAbstractSpinBox::text(Text t, int child) const
{
@ -197,7 +188,7 @@ bool QAccessibleSpinBox::doAction(int action, int child, const QVariantList &par
// ================================== QAccessibleDoubleSpinBox ==================================
QAccessibleDoubleSpinBox::QAccessibleDoubleSpinBox(QWidget *widget)
: QAccessibleWidget(widget, SpinBox)
: QAccessibleAbstractSpinBox(widget)
{
Q_ASSERT(qobject_cast<QDoubleSpinBox *>(widget));
addControllingSignal(QLatin1String("valueChanged(double)"));
@ -212,65 +203,6 @@ QDoubleSpinBox *QAccessibleDoubleSpinBox::doubleSpinBox() const
return static_cast<QDoubleSpinBox*>(object());
}
/*! \reimp */
int QAccessibleDoubleSpinBox::childCount() const
{
return ValueDown;
}
/*! \reimp */
QRect QAccessibleDoubleSpinBox::rect(int child) const
{
QRect rect;
if (!doubleSpinBox()->isVisible())
return rect;
QStyleOptionSpinBox spinBoxOption;
spinBoxOption.initFrom(doubleSpinBox());
switch (child) {
case Editor:
rect = doubleSpinBox()->style()->subControlRect(QStyle::CC_SpinBox, &spinBoxOption,
QStyle::SC_SpinBoxEditField, doubleSpinBox());
break;
case ValueUp:
rect = doubleSpinBox()->style()->subControlRect(QStyle::CC_SpinBox, &spinBoxOption,
QStyle::SC_SpinBoxUp, doubleSpinBox());
break;
case ValueDown:
rect = doubleSpinBox()->style()->subControlRect(QStyle::CC_SpinBox, &spinBoxOption,
QStyle::SC_SpinBoxDown, doubleSpinBox());
break;
default:
rect = spinBoxOption.rect;
break;
}
const QPoint globalPos = doubleSpinBox()->mapToGlobal(QPoint(0, 0));
return QRect(globalPos.x() + rect.x(), globalPos.y() + rect.y(), rect.width(), rect.height());
}
/*! \reimp */
int QAccessibleDoubleSpinBox::navigate(RelationFlag relation, int entry, QAccessibleInterface **target) const
{
if (entry <= 0)
return QAccessibleWidget::navigate(relation, entry, target);
*target = 0;
switch (relation) {
case Child:
return entry <= childCount() ? entry : -1;
case QAccessible::Left:
return (entry == ValueUp || entry == ValueDown) ? Editor : -1;
case QAccessible::Right:
return entry == Editor ? ValueUp : -1;
case QAccessible::Up:
return entry == ValueDown ? ValueUp : -1;
case QAccessible::Down:
return entry == ValueUp ? ValueDown : -1;
default:
break;
}
return QAccessibleWidget::navigate(relation, entry, target);
}
QVariant QAccessibleDoubleSpinBox::invokeMethod(QAccessible::Method, int, const QVariantList &)
{
return QVariant();
@ -279,56 +211,11 @@ QVariant QAccessibleDoubleSpinBox::invokeMethod(QAccessible::Method, int, const
/*! \reimp */
QString QAccessibleDoubleSpinBox::text(Text textType, int child) const
{
switch (textType) {
case Name:
if (child == ValueUp)
return QDoubleSpinBox::tr("More");
else if (child == ValueDown)
return QDoubleSpinBox::tr("Less");
break;
case Value:
if (child == Editor || child == SpinBoxSelf)
return doubleSpinBox()->textFromValue(doubleSpinBox()->value());
break;
default:
break;
}
if (textType == Value)
return doubleSpinBox()->textFromValue(doubleSpinBox()->value());
return QAccessibleWidget::text(textType, 0);
}
/*! \reimp */
QAccessible::Role QAccessibleDoubleSpinBox::role(int child) const
{
switch (child) {
case Editor:
return EditableText;
case ValueUp:
case ValueDown:
return PushButton;
default:
break;
}
return QAccessibleWidget::role(child);
}
/*! \reimp */
QAccessible::State QAccessibleDoubleSpinBox::state(int child) const
{
State state = QAccessibleWidget::state(child);
switch (child) {
case ValueUp:
if (doubleSpinBox()->value() >= doubleSpinBox()->maximum())
state |= Unavailable;
break;
case ValueDown:
if (doubleSpinBox()->value() <= doubleSpinBox()->minimum())
state |= Unavailable;
break;
default:
break;
}
return state;
}
#endif // QT_NO_SPINBOX
#ifndef QT_NO_SCROLLBAR

View File

@ -64,8 +64,6 @@ class QAccessibleAbstractSpinBox: public QAccessibleWidget, public QAccessibleVa
public:
explicit QAccessibleAbstractSpinBox(QWidget *w);
QRect rect(int child) const;
QString text(Text t, int child) const;
bool doAction(int action, int child, const QVariantList &params);
@ -94,25 +92,13 @@ protected:
QSpinBox *spinBox() const;
};
class QAccessibleDoubleSpinBox : public QAccessibleWidget
class QAccessibleDoubleSpinBox : public QAccessibleAbstractSpinBox
{
public:
explicit QAccessibleDoubleSpinBox(QWidget *widget);
enum DoubleSpinBoxElements {
SpinBoxSelf = 0,
Editor,
ValueUp,
ValueDown
};
int childCount() const;
QRect rect(int child) const;
int navigate(RelationFlag rel, int entry, QAccessibleInterface **target) const;
QVariant invokeMethod(QAccessible::Method method, int child, const QVariantList &params);
QString text(Text t, int child) const;
Role role(int child) const;
State state(int child) const;
protected:
QDoubleSpinBox *doubleSpinBox() const;