summaryrefslogtreecommitdiffstats
path: root/src/plugins/accessible/widgets/simplewidgets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/accessible/widgets/simplewidgets.cpp')
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp129
1 files changed, 112 insertions, 17 deletions
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index 5f591331c3..e47cfad2df 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -537,10 +537,6 @@ QString QAccessibleDisplay::text(Text t, int child) const
if (str.isEmpty()) {
if (qobject_cast<QLabel*>(object())) {
str = qobject_cast<QLabel*>(object())->text();
-#ifndef QT_NO_GROUPBOX
- } else if (qobject_cast<QGroupBox*>(object())) {
- str = qobject_cast<QGroupBox*>(object())->title();
-#endif
#ifndef QT_NO_LCDNUMBER
} else if (qobject_cast<QLCDNumber*>(object())) {
QLCDNumber *l = qobject_cast<QLCDNumber*>(object());
@@ -581,13 +577,6 @@ QAccessible::Relation QAccessibleDisplay::relationTo(int child, const QAccessibl
if (o == label->buddy())
relation |= Label;
#endif
-#ifndef QT_NO_GROUPBOX
- } else {
- QGroupBox *groupbox = qobject_cast<QGroupBox*>(object());
- if (groupbox && !groupbox->title().isEmpty())
- if (groupbox->children().contains(o))
- relation |= Label;
-#endif
}
return relation;
}
@@ -604,12 +593,6 @@ int QAccessibleDisplay::navigate(RelationFlag rel, int entry, QAccessibleInterfa
if (entry == 1)
targetObject = label->buddy();
#endif
-#ifndef QT_NO_GROUPBOX
- } else {
- QGroupBox *groupbox = qobject_cast<QGroupBox*>(object());
- if (groupbox && !groupbox->title().isEmpty())
- rel = Child;
-#endif
}
*target = QAccessible::queryAccessibleInterface(targetObject);
if (*target)
@@ -660,6 +643,118 @@ QRect QAccessibleDisplay::imagePosition(QAccessible2::CoordinateType coordType)
return QRect();
}
+#ifndef QT_NO_GROUPBOX
+QAccessibleGroupBox::QAccessibleGroupBox(QWidget *w)
+ : QAccessibleWidgetEx(w, Grouping)
+{
+}
+
+QGroupBox* QAccessibleGroupBox::groupBox() const
+{
+ return static_cast<QGroupBox *>(widget());
+}
+
+QString QAccessibleGroupBox::text(QAccessible::Text t, int child) const
+{
+ QString txt = QAccessibleWidgetEx::text(t, child);
+
+ if (txt.isEmpty()) {
+ switch (t) {
+ case Name:
+ txt = qt_accStripAmp(groupBox()->title());
+ case Description:
+ txt = qt_accStripAmp(groupBox()->title());
+ default:
+ break;
+ }
+ }
+
+ return txt;
+}
+
+QAccessible::State QAccessibleGroupBox::state(int child) const
+{
+ QAccessible::State st = QAccessibleWidgetEx::state(child);
+
+ if (groupBox()->isChecked())
+ st |= QAccessible::Checked;
+
+ return st;
+}
+
+QAccessible::Role QAccessibleGroupBox::role(int child) const
+{
+ if (child)
+ return QAccessibleWidgetEx::role(child);
+
+ return groupBox()->isCheckable() ? QAccessible::CheckBox : QAccessible::Grouping;
+}
+
+int QAccessibleGroupBox::navigate(RelationFlag rel, int entry, QAccessibleInterface **target) const
+{
+ if ((rel == Labelled) && !groupBox()->title().isEmpty())
+ rel = Child;
+ return QAccessibleWidgetEx::navigate(rel, entry, target);
+}
+
+QAccessible::Relation QAccessibleGroupBox::relationTo(int child, const QAccessibleInterface* other, int otherChild) const
+{
+ QGroupBox *groupbox = this->groupBox();
+
+ QAccessible::Relation relation = QAccessibleWidgetEx::relationTo(child, other, otherChild);
+
+ if (!child && !otherChild && !groupbox->title().isEmpty()) {
+ QObject *o = other->object();
+ if (groupbox->children().contains(o))
+ relation |= Label;
+ }
+
+ return relation;
+}
+
+int QAccessibleGroupBox::actionCount()
+{
+ return groupBox()->isCheckable() ? 1 : 0;
+}
+
+void QAccessibleGroupBox::doAction(int actionIndex)
+{
+ if ((actionIndex == 0) && groupBox()->isCheckable()) {
+ groupBox()->setChecked(!groupBox()->isChecked());
+ }
+}
+
+QString QAccessibleGroupBox::description(int actionIndex)
+{
+ if ((actionIndex == 0) && (groupBox()->isCheckable())) {
+ return QLatin1String("Toggles the button.");
+ }
+ return QString();
+}
+
+QString QAccessibleGroupBox::name(int actionIndex)
+{
+ if (actionIndex || !groupBox()->isCheckable())
+ return QString();
+
+ return QLatin1String("Toggle");
+}
+
+QString QAccessibleGroupBox::localizedName(int actionIndex)
+{
+ if (actionIndex || !groupBox()->isCheckable())
+ return QString();
+
+ return QGroupBox::tr("Toggle");
+}
+
+QStringList QAccessibleGroupBox::keyBindings(int actionIndex)
+{
+ return QStringList();
+}
+
+#endif
+
#ifndef QT_NO_LINEEDIT
/*!
\class QAccessibleLineEdit