aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@nokia.com>2012-01-04 14:37:27 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-10 13:47:53 +0100
commit1b4897f0710921fb0a55932a7fb6f17a45989c41 (patch)
tree312393c117c688a1feb6be19e8f55030f118c404 /src/plugins
parent6ffcd091511bed98fbc698262d42597722910a15 (diff)
Accessibility: Checked state for check boxes and radio buttons.
Also adapt to new api in qtbase - state is now a bit field. Change-Id: Ia4266f3d5094a6c32e0ace3499910b57c3e71c25 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.cpp9
-rw-r--r--src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.h2
-rw-r--r--src/plugins/accessible/quick/qaccessiblequickitem.cpp29
-rw-r--r--src/plugins/accessible/quick/qaccessiblequickitem.h2
-rw-r--r--src/plugins/accessible/quick/qaccessiblequickview.cpp2
-rw-r--r--src/plugins/accessible/shared/qdeclarativeaccessible.cpp18
-rw-r--r--src/plugins/accessible/shared/qdeclarativeaccessible.h2
7 files changed, 39 insertions, 25 deletions
diff --git a/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.cpp b/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.cpp
index 6e4f27adb2..8786949fae 100644
--- a/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.cpp
+++ b/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.cpp
@@ -171,13 +171,10 @@ int QAccessibleDeclarativeItem::indexOfChild(const QAccessibleInterface *iface)
return index;
}
-QFlags<QAccessible::StateFlag> QAccessibleDeclarativeItem::state() const
+QAccessible::State QAccessibleDeclarativeItem::state() const
{
- QAccessible::State state = QAccessible::Normal;
-
- if (m_item->hasFocus()) {
- state |= QAccessible::Focused;
- }
+ QAccessible::State state;
+ state.focused = m_item->hasFocus();
return state;
}
diff --git a/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.h b/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.h
index 29ff3d2bff..6f841a7c23 100644
--- a/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.h
+++ b/src/plugins/accessible/qtquick1/qaccessibledeclarativeitem.h
@@ -65,7 +65,7 @@ public:
int navigate(QAccessible::RelationFlag rel, int entry, QAccessibleInterface **target) const;
int indexOfChild(const QAccessibleInterface *iface) const;
- QFlags<QAccessible::StateFlag> state() const;
+ QAccessible::State state() const;
QAccessible::Role role() const;
QString text(QAccessible::Text) const;
diff --git a/src/plugins/accessible/quick/qaccessiblequickitem.cpp b/src/plugins/accessible/quick/qaccessiblequickitem.cpp
index 7523f805e6..5cedfe62d6 100644
--- a/src/plugins/accessible/quick/qaccessiblequickitem.cpp
+++ b/src/plugins/accessible/quick/qaccessiblequickitem.cpp
@@ -174,17 +174,34 @@ QList<QQuickItem *> QAccessibleQuickItem::childItems() const
return item()->childItems();
}
-QFlags<QAccessible::StateFlag> QAccessibleQuickItem::state() const
+QAccessible::State QAccessibleQuickItem::state() const
{
- QAccessible::State state = QAccessible::Normal;
-
- if (item()->hasActiveFocus()) {
- state |= QAccessible::Focused;
+ QAccessible::State state;
+
+ if (item()->hasActiveFocus())
+ state.focused = true;
+
+ QAccessible::Role r = role();
+ switch (r) {
+ case QAccessible::Button: {
+ QVariant checkable = item()->property("checkable");
+ if (!checkable.toBool())
+ break;
+ // fall through
+ }
+ case QAccessible::CheckBox:
+ case QAccessible::RadioButton: {
+ // FIXME when states are extended: state.checkable = true;
+ state.checked = item()->property("checked").toBool();
+ break;
+ }
+ default:
+ break;
}
+
return state;
}
-
QAccessible::Role QAccessibleQuickItem::role() const
{
// Workaround for setAccessibleRole() not working for
diff --git a/src/plugins/accessible/quick/qaccessiblequickitem.h b/src/plugins/accessible/quick/qaccessiblequickitem.h
index d412fcbeb7..5ef3a19247 100644
--- a/src/plugins/accessible/quick/qaccessiblequickitem.h
+++ b/src/plugins/accessible/quick/qaccessiblequickitem.h
@@ -67,7 +67,7 @@ public:
int indexOfChild(const QAccessibleInterface *iface) const;
QList<QQuickItem *> childItems() const;
- QFlags<QAccessible::StateFlag> state() const;
+ QAccessible::State state() const;
QAccessible::Role role() const;
QString text(QAccessible::Text) const;
diff --git a/src/plugins/accessible/quick/qaccessiblequickview.cpp b/src/plugins/accessible/quick/qaccessiblequickview.cpp
index f4e8136c38..6a896efd29 100644
--- a/src/plugins/accessible/quick/qaccessiblequickview.cpp
+++ b/src/plugins/accessible/quick/qaccessiblequickview.cpp
@@ -82,7 +82,7 @@ QAccessible::Role QAccessibleQuickView::role() const
QAccessible::State QAccessibleQuickView::state() const
{
- return QAccessible::Normal; // FIXME
+ return QAccessible::State(); // FIXME
}
QRect QAccessibleQuickView::rect() const
diff --git a/src/plugins/accessible/shared/qdeclarativeaccessible.cpp b/src/plugins/accessible/shared/qdeclarativeaccessible.cpp
index e3e05603a6..7db5f07cbe 100644
--- a/src/plugins/accessible/shared/qdeclarativeaccessible.cpp
+++ b/src/plugins/accessible/shared/qdeclarativeaccessible.cpp
@@ -82,7 +82,7 @@ QAccessibleInterface *QDeclarativeAccessible::childAt(int x, int y) const
for (int i = childCount() - 1; i >= 0; --i) {
QAccessibleInterface *childIface = child(i);
- if (childIface && !(childIface->state() & QAccessible::Invisible)) {
+ if (childIface && !childIface->state().invisible) {
if (childIface->rect().contains(x, y))
return childIface;
}
@@ -91,9 +91,9 @@ QAccessibleInterface *QDeclarativeAccessible::childAt(int x, int y) const
return 0;
}
-QFlags<QAccessible::StateFlag> QDeclarativeAccessible::state() const
+QAccessible::State QDeclarativeAccessible::state() const
{
- QAccessible::State state;// = state();
+ QAccessible::State state;
//QRect viewRect(QPoint(0, 0), m_implementation->size());
//QRect itemRect(m_item->scenePos().toPoint(), m_item->boundingRect().size().toSize());
@@ -104,24 +104,24 @@ QFlags<QAccessible::StateFlag> QDeclarativeAccessible::state() const
// qDebug() << "viewRect" << viewRect << "itemRect" << itemRect;
// error case:
if (viewRect_.isNull() || itemRect.isNull()) {
- state |= QAccessible::Invisible;
+ state.invisible = true;
}
if (!viewRect_.intersects(itemRect)) {
- state |= QAccessible::Offscreen;
- // state |= QAccessible::Invisible; // no set at this point to ease development
+ state.offscreen = true;
+ // state.invisible = true; // no set at this point to ease development
}
if (!object()->property("visible").toBool() || qFuzzyIsNull(object()->property("opacity").toDouble())) {
- state |= QAccessible::Invisible;
+ state.invisible = true;
}
if ((role() == QAccessible::CheckBox || role() == QAccessible::RadioButton) && object()->property("checked").toBool()) {
- state |= QAccessible::Checked;
+ state.checked = true;
}
if (role() == QAccessible::EditableText)
- state |= QAccessible::Focusable;
+ state.focusable = true;
//qDebug() << "state?" << m_item->property("state").toString() << m_item->property("status").toString() << m_item->property("visible").toString();
diff --git a/src/plugins/accessible/shared/qdeclarativeaccessible.h b/src/plugins/accessible/shared/qdeclarativeaccessible.h
index 7908092b6a..9193e1a0fe 100644
--- a/src/plugins/accessible/shared/qdeclarativeaccessible.h
+++ b/src/plugins/accessible/shared/qdeclarativeaccessible.h
@@ -78,7 +78,7 @@ public:
virtual QRect viewRect() const = 0;
QFlags<QAccessible::RelationFlag> relationTo(const QAccessibleInterface*) const;
QAccessibleInterface *childAt(int, int) const;
- QFlags<QAccessible::StateFlag> state() const;
+ QAccessible::State state() const;
QVariant invokeMethod(QAccessible::Method, const QVariantList &);
QStringList actionNames() const;