summaryrefslogtreecommitdiffstats
path: root/tools/accessibilityinspector
diff options
context:
space:
mode:
Diffstat (limited to 'tools/accessibilityinspector')
-rw-r--r--tools/accessibilityinspector/accessibilityinspector.cpp189
-rw-r--r--tools/accessibilityinspector/accessibilityinspector.h89
-rw-r--r--tools/accessibilityinspector/accessibilityinspector.pri25
-rw-r--r--tools/accessibilityinspector/accessibilityinspector.pro5
-rw-r--r--tools/accessibilityinspector/accessibilityscenemanager.cpp487
-rw-r--r--tools/accessibilityinspector/accessibilityscenemanager.h117
-rw-r--r--tools/accessibilityinspector/main.cpp119
-rw-r--r--tools/accessibilityinspector/optionswidget.cpp43
-rw-r--r--tools/accessibilityinspector/optionswidget.h117
-rw-r--r--tools/accessibilityinspector/screenreader.cpp162
-rw-r--r--tools/accessibilityinspector/screenreader.h84
-rw-r--r--tools/accessibilityinspector/screenreader_mac.mm60
12 files changed, 0 insertions, 1497 deletions
diff --git a/tools/accessibilityinspector/accessibilityinspector.cpp b/tools/accessibilityinspector/accessibilityinspector.cpp
deleted file mode 100644
index 4f65f2beaa..0000000000
--- a/tools/accessibilityinspector/accessibilityinspector.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#include "accessibilityinspector.h"
-
-#include "screenreader.h"
-#include "optionswidget.h"
-#include "accessibilityscenemanager.h"
-
-#include <QtDeclarative/QtDeclarative>
-
-void MouseInterceptingGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
- emit mousePressed(event->scenePos().toPoint());
- QGraphicsScene::mousePressEvent(event);
-}
-
-void MouseInterceptingGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
-{
- emit mouseDobleClicked();
- QGraphicsScene::mouseDoubleClickEvent(event);
-}
-
-AccessibilitySceneManager *sceneManager = 0;
-QAccessible::UpdateHandler previousUpdateHandler = 0;
-bool updateHandlerRecursion = false;
-void accessibilityUpdateHandler(QObject *object, int who, QAccessible::Event reason)
-{
- if (updateHandlerRecursion)
- return;
-
- if (!qobject_cast<QSGItem *>(object))
- return;
-
- updateHandlerRecursion = true;
-
- if (sceneManager) {
- sceneManager->handleUpdate(object, reason);
-
- //qDebug() << "update";
- }
-
- if (previousUpdateHandler) // call prev just to be sure.
- previousUpdateHandler(object, who, reason);
-
- updateHandlerRecursion = false;
-}
-
-AccessibilityInspector::AccessibilityInspector(QObject *parent) :
- QObject(parent)
-{
-}
-
-AccessibilityInspector::~AccessibilityInspector()
-{
- delete optionsWidget;
- delete accessibilityScene;
- delete accessibilityView;
- delete accessibilityTreeScene;
- delete accessibilityTreeView;
- delete screenReader;
-}
-
-void AccessibilityInspector::inspectWindow(QWindow *window)
-{
- qDebug() << "AccessibilityInspector::inspectWindow()" << window;
-
- optionsWidget = new OptionsWidget();
-
- accessibilityScene = new MouseInterceptingGraphicsScene();
-
- accessibilityView = new QGraphicsView();
- accessibilityView->setScene(accessibilityScene);
- accessibilityView->resize(1024, 768);
- accessibilityView->scale(1.3, 1.3);
-
- accessibilityTreeScene = new QGraphicsScene();
-
- accessibilityTreeView = new QGraphicsView();
- accessibilityTreeView->setScene(accessibilityTreeScene);
- accessibilityTreeView->resize(1024, 768);
-
- sceneManager = new AccessibilitySceneManager();
- QObject::connect(optionsWidget, SIGNAL(optionsChanged()), sceneManager, SLOT(updateAccessibilitySceneItemFlags()));
- QObject::connect(optionsWidget, SIGNAL(refreshClicked()), sceneManager, SLOT(populateAccessibilityScene()));
- QObject::connect(optionsWidget, SIGNAL(refreshClicked()), sceneManager, SLOT(populateAccessibilityTreeScene()));
- QObject::connect(optionsWidget, SIGNAL(scaleChanged(int)), sceneManager, SLOT(changeScale(int)));
-
- sceneManager->setOptionsWidget(optionsWidget);
- sceneManager->setRootWindow(window);
- sceneManager->setScene(accessibilityScene);
- sceneManager->setView(accessibilityView);
- sceneManager->setTreeScene(accessibilityTreeScene);
- sceneManager->setTreeView(accessibilityTreeView);
-
- screenReader = new ScreenReader;
- QObject::connect(accessibilityScene, SIGNAL(mousePressed(QPoint)), screenReader, SLOT(touchPoint(QPoint)));
- QObject::connect(accessibilityScene, SIGNAL(mouseDobleClicked()), screenReader, SLOT(activate()));
- QObject::connect(screenReader, SIGNAL(selected(QObject*)), sceneManager, SLOT(setSelected(QObject*)));
- screenReader->setRootObject(window);
- screenReader->setOptionsWidget(optionsWidget);
-
- previousUpdateHandler = QAccessible::installUpdateHandler(accessibilityUpdateHandler);
-
- QTimer::singleShot(100, sceneManager, SLOT(populateAccessibilityScene()));
- QTimer::singleShot(100, sceneManager, SLOT(populateAccessibilityTreeScene()));
-
- QSettings settings;
- accessibilityView->restoreGeometry(settings.value("accessiblityGeometry").toByteArray());
- accessibilityView->setObjectName(QLatin1String("accessibilityInspectorView"));
- accessibilityView->show();
-
-
- accessibilityTreeView->restoreGeometry(settings.value("treeGeometry").toByteArray());
- accessibilityTreeView->setObjectName(QLatin1String("accessibilityInspectorTreeView"));
- accessibilityTreeView->show();
- optionsWidget->restoreGeometry(settings.value("optionsGeometry").toByteArray());
- optionsWidget->setObjectName(QLatin1String("accessibilityInspectorOptions"));
- optionsWidget->show();
-}
-
-void AccessibilityInspector::saveWindowGeometry()
-{
- QSettings settings;
- settings.setValue("accessiblityGeometry", accessibilityView->saveGeometry());
- settings.setValue("treeGeometry", accessibilityTreeView->saveGeometry());
- settings.setValue("optionsGeometry", optionsWidget->saveGeometry());
-}
-
-QString translateRole(QAccessible::Role role)
-{
- if (role == 0x2B)
- return "PushButton";
- if (role == 0x2C)
- return "CheckBox";
- if (role == 0x2D)
- return "RadioButton";
- if (role == 0xA)
- return "Client";
- if (role == 0x29)
- return "Static Text";
- if (role == 0x33)
- return "Slider";
- if (role == 0x33)
- return "Slider";
- if (role == 0x10)
- return "Pane";
-
- return QString::number(role, 16);
-}
-
diff --git a/tools/accessibilityinspector/accessibilityinspector.h b/tools/accessibilityinspector/accessibilityinspector.h
deleted file mode 100644
index 504fecd6b5..0000000000
--- a/tools/accessibilityinspector/accessibilityinspector.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#ifndef ACCESSIBILITYINSPECTOR_H
-#define ACCESSIBILITYINSPECTOR_H
-
-#include <QObject>
-#include <qgraphicsscene.h>
-#include <QAccessible>
-
-QString translateRole(QAccessible::Role role);
-
-class OptionsWidget;
-class MouseInterceptingGraphicsScene;
-class QGraphicsView;
-class QGraphicsScene;
-class AccessibilitySceneManager;
-class ScreenReader;
-class AccessibilityInspector : public QObject
-{
- Q_OBJECT
-public:
- explicit AccessibilityInspector(QObject *parent = 0);
- ~AccessibilityInspector();
- void inspectWindow(QWindow *window);
- void saveWindowGeometry();
-signals:
-
-public slots:
-
-private:
- OptionsWidget *optionsWidget;
- MouseInterceptingGraphicsScene *accessibilityScene;
- QGraphicsView *accessibilityView;
- QGraphicsScene *accessibilityTreeScene;
- QGraphicsView *accessibilityTreeView;
- ScreenReader *screenReader;
-};
-
-class MouseInterceptingGraphicsScene : public QGraphicsScene
-{
-Q_OBJECT
-protected:
- virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
- virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
-signals:
- void mousePressed(const QPoint point);
- void mouseDobleClicked();
-};
-
-#endif // ACCESSIBILITYINSPECTOR_H
diff --git a/tools/accessibilityinspector/accessibilityinspector.pri b/tools/accessibilityinspector/accessibilityinspector.pri
deleted file mode 100644
index dc1f15062a..0000000000
--- a/tools/accessibilityinspector/accessibilityinspector.pri
+++ /dev/null
@@ -1,25 +0,0 @@
-QT += declarative
-INCLUDEPATH += $$PWD
-
-# DEFINES += ACCESSIBILITYINSPECTOR_NO_UITOOLS
-# CONFIG += uitools
-
-mac {
- # for text-to-speach
- LIBS += -framework AppKit
-}
-
-HEADERS += \
- $$PWD/screenreader.h \
- $$PWD/optionswidget.h \
- $$PWD/accessibilityscenemanager.h \
- $$PWD/accessibilityinspector.h
-SOURCES += \
- $$PWD/optionswidget.cpp \
- $$PWD/accessibilityscenemanager.cpp \
- $$PWD/screenreader.cpp \
- $$PWD/accessibilityinspector.cpp
-
-OBJECTIVE_SOURCES += $$PWD/screenreader_mac.mm
-
-
diff --git a/tools/accessibilityinspector/accessibilityinspector.pro b/tools/accessibilityinspector/accessibilityinspector.pro
deleted file mode 100644
index f2d8a3fe15..0000000000
--- a/tools/accessibilityinspector/accessibilityinspector.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-include (accessibilityinspector.pri)
-
-SOURCES += main.cpp \
-
-CONFIG += console
diff --git a/tools/accessibilityinspector/accessibilityscenemanager.cpp b/tools/accessibilityinspector/accessibilityscenemanager.cpp
deleted file mode 100644
index aa0b93d29e..0000000000
--- a/tools/accessibilityinspector/accessibilityscenemanager.cpp
+++ /dev/null
@@ -1,487 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#include "accessibilityscenemanager.h"
-
-AccessibilitySceneManager::AccessibilitySceneManager()
-{
- m_window = 0;
- m_view = 0;
- m_scene = 0;
- m_rootItem = 0;
- m_optionsWidget = 0;
- m_selectedObject = 0;
-}
-
-void AccessibilitySceneManager::populateAccessibilityScene()
-{
- m_scene->clear();
- m_graphicsItems.clear();
-
- QAccessibleInterface * rootInterface = m_window->accessibleRoot();
- if (!rootInterface)
- return;
-
- populateAccessibilityScene(rootInterface, 0, m_scene);
-}
-
-void AccessibilitySceneManager::updateAccessibilitySceneItemFlags()
-{
- qDebug() << "update";
- foreach (QObject *object, m_graphicsItems.keys()) {
- if (!object)
- continue;
- QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(object);
- if (!interface)
- continue;
- updateItemFlags(m_graphicsItems.value(object), interface);
- delete interface;
- }
-}
-
-void AccessibilitySceneManager::populateAccessibilityTreeScene()
-{
- m_treeScene->clear();
- QAccessibleInterface * rootInterface = m_window->accessibleRoot();
- if (!rootInterface)
- return;
-
- populateAccessibilityTreeScene(rootInterface, 0);
-}
-
-void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event reason)
-{
- QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(object);
- if (!interface)
- return;
-
- QString name = interface->text(QAccessible::Name, 0);
-
- if (reason == QAccessible::ObjectCreated) {
- // qDebug() << "ObjectCreated" << object << name;
- populateAccessibilityScene(interface, 0, m_scene);
- }
-
- QGraphicsRectItem *item = m_graphicsItems.value(object);
-
- if (!item) {
-// qDebug() << "populateAccessibilityScene failed for" << object;
- return;
- }
-
- if (reason == QAccessible::LocationChanged) {
-
- //if (name.startsWith("List"))
- qDebug() << "locationChange" << object << name << interface->rect(0);
-
- updateItem(item, interface);
- for (int i = 0; i < interface->childCount(); ++i) {
- QAccessibleInterface *child = 0;
- int ret = interface->navigate(QAccessible::Child, i + 1, &child);
- if (ret == 0 && child) {
- updateItem(m_graphicsItems.value(child->object()), child);
- delete child;
- }
- }
-
- delete interface;
- } else if (reason == QAccessible::ObjectDestroyed) {
-// qDebug() << "ObjectDestroyed" << object << name;
- delete m_graphicsItems.value(object);
- m_graphicsItems.remove(object);
- m_animatedObjects.remove(object);
- if (object == m_selectedObject) {
- m_selectedObject = 0;
- }
- } else if (reason == QAccessible::ObjectHide) {
-// qDebug() << "ObjectCreated Hide" << object;
- updateItemFlags(item, interface);
- } else if (reason == QAccessible::ObjectShow) {
-// qDebug() << "ObjectCreated Show" << object;
- updateItemFlags(item, interface);
- } else if (reason == QAccessible::ScrollingStart) {
- qDebug() << "ObjectCreated ScrollingStart" << object;
- QAccessibleInterface *child = 0;
- for (int i = 0; i < interface->childCount(); ++i) {
- int ret = interface->navigate(QAccessible::Child, i + 1, &child);
- if (ret == 0 && child) {
- m_animatedObjects.insert(child->object());
- delete child;
- }
- }
- } else if (reason == QAccessible::ScrollingEnd) {
- // qDebug() << "ObjectCreated ScrollingEnd" << object;
- foreach (QObject *object, m_animatedObjects) {
- updateItem(m_graphicsItems.value(object), interface);
- }
- delete interface;
- m_animatedObjects.clear();
-
- } else {
- qDebug() << "other update" << object;
- }
-}
-
-void AccessibilitySceneManager::setSelected(QObject *object)
-{
- m_scene->update(); // scedule update
-
- // clear existing selection
- if (m_selectedObject) {
- QObject *previousSelectedObject = m_selectedObject;
- m_selectedObject = 0;
- updateItem(previousSelectedObject);
- }
-
- m_selectedObject = object;
- updateItem(object);
-
- populateAccessibilityTreeScene();
-}
-
-void AccessibilitySceneManager::changeScale(int)
-{
- // No QGraphicsView::setScale :(
-
- //m_view->scale(scale / 10.0, scale / 10.0);
- //if (m_rootItem)
- // m_view->ensureVisible(m_rootItem);
-}
-
-void AccessibilitySceneManager::updateItems(QObject *root)
-{
- QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(root);
- if (!interface)
- return;
- updateItem(m_graphicsItems.value(root), interface);
-
- for (int i = 0; i < interface->childCount(); ++i) {
- QAccessibleInterface *child = interface->child(i);
- updateItems(child->object());
- delete child;
- }
-
- delete interface;
-}
-
-void AccessibilitySceneManager::updateItem(QObject *object)
-{
- if (!object)
- return;
-
- QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(object);
- if (!interface)
- return;
-
- updateItem(m_graphicsItems.value(object), interface);
-
- delete interface;
-}
-
-void AccessibilitySceneManager::updateItem(QGraphicsRectItem *item, QAccessibleInterface *interface)
-{
- if (!item)
- return;
-
- QRect rect = interface->rect(0);
- item->setPos(rect.topLeft());
- item->setRect(QRect(QPoint(0,0), rect.size()));
-
- updateItemFlags(item, interface);
-}
-
-void AccessibilitySceneManager::updateItemFlags(QGraphicsRectItem *item, QAccessibleInterface *interface)
-{
- // qDebug() << "udpateItemFlags" << interface << interface->object();
-
- bool shouldShow = true;
-
- if (m_optionsWidget->hideInvisibleItems()) {
- if (isHidden(interface)) {
- shouldShow = false;
- }
- }
-
- if (m_optionsWidget->hideOffscreenItems()) {
- if (interface->state(0) & QAccessible::Offscreen) {
- shouldShow = false;
- }
- }
-
- if (m_optionsWidget->hidePaneItems()) {
- if (interface->role(0) & QAccessible::Pane) {
- shouldShow = false;
- }
- }
-
- item->setVisible(shouldShow);
-
- if (interface->object() == m_selectedObject)
- item->setBrush(QColor(Qt::yellow));
- else
- item->setBrush(QColor(Qt::white));
-
- m_view->update();
-}
-
-QGraphicsRectItem * AccessibilitySceneManager::processInterface(QAccessibleInterface * interface, int child, QGraphicsScene *scene)
-{
- // Process this interface
-
- QGraphicsRectItem * item = new QGraphicsRectItem();
- scene->addItem(item);
- if (!m_rootItem)
- m_rootItem = item;
-
- QString name = interface->text(QAccessibleInterface::Name, child);
- QString description; // = interface->text(QAccessibleInterface::Description, child);
- QString role = translateRole(interface->role(child));
- int childCount = interface->childCount();
-
- /* qDebug() << "name:" << name << "local pos" <<
- interface->rect(0) << "description" << description << "childCount" << childCount;
-*/
-
- updateItem(item, interface);
-
- QGraphicsSimpleTextItem * textItem = new QGraphicsSimpleTextItem();
- textItem->setParentItem(item);
- textItem->setPos(QPoint(5, 5));
-
- QString text;
- text.append("Name: " + name + " ");
- if (!description.isEmpty())
- text.append("Description: " + description + " ");
- text.append("Role: " + role + " ");
- if (childCount > 0)
- text.append("ChildCount: " + QString::number(childCount) + " ");
- textItem->setText(text);
-
- QFont font;
- font.setPointSize(10);
- // font.setPointSize(14);
- textItem->setFont(font);
-
- return item;
-}
-
-void AccessibilitySceneManager::populateAccessibilityScene(QAccessibleInterface * interface, int child, QGraphicsScene *scene)
-{
- if (!interface)
- return;
-
- QGraphicsRectItem *item = processInterface(interface, child, scene);
-
- QObject *object = interface->object();
- if (object) {
- m_graphicsItems.insert(object, item);
- }
-
- // Possibly process children
- if (child != 0)
- return;
-
- for (int i = 0; i < interface->childCount(); ++i) {
- QAccessibleInterface *child = interface->child(i);
- updateItems(child->object());
- populateAccessibilityScene(child, 0, scene);
- delete child;
- }
-}
-
-AccessibilitySceneManager::TreeItem AccessibilitySceneManager::computeLevels(QAccessibleInterface * interface, int level)
-{
- if (interface == 0)
- return TreeItem();
-
- TreeItem currentLevel;
-
- int usedChildren = 0;
- for (int i = 0; i < interface->childCount(); ++i) {
- QAccessibleInterface *child = interface->child(i);
- if (child != 0) {
- ++usedChildren;
- TreeItem childLevel = computeLevels(child, level + 1);
- currentLevel.children.append(childLevel);
- currentLevel.width += childLevel.width + m_treeItemHorizontalPadding;
- delete child;
- }
- }
-
- // leaf node case
- if (usedChildren == 0) {
- currentLevel.width = m_treeItemWidth + m_treeItemHorizontalPadding;
- }
-
- // capture information:
- currentLevel.name = interface->text(QAccessible::Name, 0);
- //currentLevel.description += interface->text(QAccessible::DebugDescription, 0);
- currentLevel.role = translateRole(interface->role(0));
- currentLevel.rect = interface->rect(0);
- currentLevel.state = interface->state(0);
- currentLevel.object = interface->object();
-
- return currentLevel;
-}
-
-void AccessibilitySceneManager::populateAccessibilityTreeScene(QAccessibleInterface * interface, int child)
-{
- if (!interface)
- return;
-
- // set some layout metrics:
- m_treeItemWidth = 90;
- m_treeItemHorizontalPadding = 10;
- m_treeItemHeight = 60;
- m_treeItemVerticalPadding = 30;
-
- // We want to draw the accessibility hiearchy as a vertical
- // tree, growing from the root node at the top.
-
- // First, figure out the number of levels and the width of each level:
- m_rootTreeItem = computeLevels(interface, 0);
-
- // create graphics items for each tree item
- addGraphicsItems(m_rootTreeItem, 0, 0);
-}
-
-void AccessibilitySceneManager::addGraphicsItems(AccessibilitySceneManager::TreeItem item, int row, int xPos)
-{
- //qDebug() << "add graphics item" << row << item.name << item.role << xPos << item.width << item.children.count();
-
- int yPos = row * (m_treeItemHeight + m_treeItemVerticalPadding);
-
- // Process this interface
- QGraphicsRectItem * graphicsItem = new QGraphicsRectItem();
- graphicsItem->setPos(xPos, yPos);
- graphicsItem->setRect(0, 0, m_treeItemWidth, m_treeItemHeight);
- graphicsItem->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
-
- if (item.object == m_selectedObject)
- graphicsItem->setBrush(QColor(Qt::yellow));
- else
- graphicsItem->setBrush(QColor(Qt::white));
-
- if (item.state & QAccessible::Invisible) {
- QPen linePen;
- linePen.setStyle(Qt::DashLine);
- graphicsItem->setPen(linePen);
- }
-
- m_treeScene->addItem(graphicsItem);
-
- QGraphicsTextItem * textItem = new QGraphicsTextItem();
- textItem->setParentItem(graphicsItem);
- textItem->setPos(QPoint(0, 0));
-
- QFont font;
- font.setPointSize(8);
- textItem->setFont(font);
-
- QString text;
- text += item.name + "\n";
- text += item.role + "\n";
- text += item.description.split(" ", QString::SkipEmptyParts).join("\n") + "\n";
- text += "P:" + QString::number(item.rect.x()) + " " + QString::number(item.rect.y()) + " ";
- text += "S:" + QString::number(item.rect.width()) + " " + QString::number(item.rect.height()) + "\n";
-
- textItem->setPlainText(text);
-
- // recurse to children
- int childIndex = 0;
- int childCount = item.children.count();
- int segmentSize = item.width / qMax(1, childCount);
- int segmentCenterOffset = segmentSize / 2;
- int segmentsStart = xPos - (item.width / 2);
- foreach (TreeItem child, item.children) {
- // spread the children out, covering the width, centered on xPos
- int segmentPosition = segmentsStart + (segmentSize * childIndex) + segmentCenterOffset;
- addGraphicsItems(child, row + 1, segmentPosition);
- ++childIndex;
- }
-
- // add lines from parents to kids
- int boxBottom = yPos + m_treeItemHeight;
- int boxMiddleX = xPos + m_treeItemWidth / 2;
- int yBottomMiddle = boxBottom + m_treeItemVerticalPadding / 2;
- int boxTop = yPos;
- int yTopMiddle = boxTop - m_treeItemVerticalPadding / 2;
-
- if (row > 0) {
- QGraphicsLineItem *childVerticalStem = new QGraphicsLineItem();
- childVerticalStem->setLine(boxMiddleX, yTopMiddle, boxMiddleX, boxTop);
- m_treeScene->addItem(childVerticalStem);
- }
-
- if (childCount > 0) {
- QGraphicsLineItem *parentVerticalStem = new QGraphicsLineItem();
- parentVerticalStem->setLine(boxMiddleX, boxBottom, boxMiddleX, yBottomMiddle);
- m_treeScene->addItem(parentVerticalStem);
- }
-
- if (childCount > 1) {
- QGraphicsLineItem *horizontalStem = new QGraphicsLineItem();
- // match the end points with the horizontal lines
- int lineStartX = segmentsStart + segmentCenterOffset + m_treeItemWidth / 2;
- int lineStopX = segmentsStart + segmentSize * (childCount -1) + segmentCenterOffset + m_treeItemWidth / 2;
- horizontalStem->setLine(lineStartX, yBottomMiddle, lineStopX , yBottomMiddle);
- m_treeScene->addItem(horizontalStem);
- }
-}
-
-bool AccessibilitySceneManager::isHidden(QAccessibleInterface *interface)
-{
- QAccessibleInterface *current = interface;
- while (current) {
-
- if (current->state(0) & QAccessible::Invisible) {
- return true;
- }
-
- QAccessibleInterface *parent = current->parent();
-
- if (current != interface)
- delete current;
- current = parent;
- }
-
- return false;
-}
diff --git a/tools/accessibilityinspector/accessibilityscenemanager.h b/tools/accessibilityinspector/accessibilityscenemanager.h
deleted file mode 100644
index 108f8f2b63..0000000000
--- a/tools/accessibilityinspector/accessibilityscenemanager.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#ifndef ACCESSIBILITYSCENEMANAGER_H
-#define ACCESSIBILITYSCENEMANAGER_H
-
-#include <QtGui>
-
-#include "optionswidget.h"
-
-QString translateRole(QAccessible::Role role);
-class AccessibilitySceneManager : public QObject
-{
-Q_OBJECT
-public:
- AccessibilitySceneManager();
- void setRootWindow(QWindow * window) { m_window = window; }
- void setView(QGraphicsView *view) { m_view = view; }
- void setScene(QGraphicsScene *scene) { m_scene = scene; }
- void setTreeView(QGraphicsView *treeView) { m_treeView = treeView; }
- void setTreeScene(QGraphicsScene *treeScene) { m_treeScene = treeScene; }
-
- void setOptionsWidget(OptionsWidget *optionsWidget) { m_optionsWidget = optionsWidget; }
-public slots:
- void populateAccessibilityScene();
- void updateAccessibilitySceneItemFlags();
- void populateAccessibilityTreeScene();
- void handleUpdate(QObject *object, QAccessible::Event reason);
- void setSelected(QObject *object);
-
- void changeScale(int scale);
-private:
- void updateItems(QObject *root);
- void updateItem(QObject *object);
- void updateItem(QGraphicsRectItem *item, QAccessibleInterface *interface);
- void updateItemFlags(QGraphicsRectItem *item, QAccessibleInterface *interface);
-
- void populateAccessibilityScene(QAccessibleInterface * interface, int child, QGraphicsScene *scene);
- QGraphicsRectItem * processInterface(QAccessibleInterface * interface, int child, QGraphicsScene *scene);
-
- struct TreeItem;
- TreeItem computeLevels(QAccessibleInterface * interface, int level);
- void populateAccessibilityTreeScene(QAccessibleInterface * interface, int child);
- void addGraphicsItems(TreeItem item, int row, int xPos);
-
- bool isHidden(QAccessibleInterface *interface);
-
- QWindow *m_window;
- QGraphicsView *m_view;
- QGraphicsScene *m_scene;
- QGraphicsView *m_treeView;
- QGraphicsScene *m_treeScene;
- QGraphicsItem *m_rootItem;
- OptionsWidget *m_optionsWidget;
- QObject *m_selectedObject;
-
- QHash<QObject *, QGraphicsRectItem*> m_graphicsItems;
- QSet<QObject *> m_animatedObjects;
-
- struct TreeItem {
- QList<TreeItem> children;
- int width;
- QString name;
- QString role;
- QString description;
- QRect rect;
- QAccessible::State state;
- QObject *object;
- TreeItem() : width(0) {}
- };
-
- TreeItem m_rootTreeItem;
- int m_treeItemWidth;
- int m_treeItemHorizontalPadding;
- int m_treeItemHeight;
- int m_treeItemVerticalPadding;
-};
-
-#endif // ACCESSIBILITYSCENEMANAGER_H
diff --git a/tools/accessibilityinspector/main.cpp b/tools/accessibilityinspector/main.cpp
deleted file mode 100644
index 215c0a9335..0000000000
--- a/tools/accessibilityinspector/main.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#include <QtGui>
-#include <QtDeclarative/QtDeclarative>
-#include <QtUiTools/QtUiTools>
-
-#include "accessibilityinspector.h"
-
-int main(int argc, char **argv)
-{
- QApplication app(argc, argv);
-
- if (app.arguments().count() < 2) {
- qDebug() << "Usage: accessebilityInspector [ ui-file | qml-file ] [Option]";
- qDebug() << "Option:";
-#ifdef QT_ACCESSIBILITY_INSPECTOR_SCENE_GRAPH
- qDebug() << "-qtquick1: Use QDeclarativeView instead of QSGView for rendering QML files";
-#endif
- return 0;
- }
-
- QString fileName = app.arguments().at(1);
- QString mode;
- if (app.arguments().count() > 2) {
- mode = app.arguments().at(2);
- }
-
- QWidget *window;
-
- if (fileName.endsWith(".ui")) {
- QUiLoader loader;
- QFile file(fileName);
- file.open(QFile::ReadOnly);
- window = loader.load(&file, 0);
- } else if (fileName.endsWith(".qml")){
- QUrl fileUrl;
- if (fileName.startsWith(":")) { // detect resources.
- QString name = fileName;
- name.remove(0, 2); // reomve ":/"
- fileUrl.setUrl(QLatin1String("qrc:/") + name);
- } else {
- fileUrl = QUrl::fromLocalFile(fileName);
- }
-
-#ifdef QT_ACCESSIBILITY_INSPECTOR_SCENE_GRAPH
- if (mode == QLatin1String("-qtquick1"))
-#endif
- {
- QDeclarativeView * declarativeView = new QDeclarativeView();
- declarativeView->setSource(fileUrl);
- window = declarativeView;
- }
-#ifdef QT_ACCESSIBILITY_INSPECTOR_SCENE_GRAPH
- else {
- QSGView * sceneGraphView = new QSGView();
- sceneGraphView->setSource(fileUrl);
- window = sceneGraphView;
- }
-#endif
- } else {
- qDebug() << "Error: don't know what to do with" << fileName;
- }
-
- AccessibilityInspector *accessibilityInspector = new AccessibilityInspector();
-
- accessibilityInspector->inspectWindow(window);
-
- window->move(50, 50);
- window->show();
-
- int ret = app.exec();
-
- accessibilityInspector->saveWindowGeometry();
- delete accessibilityInspector;
-
- return ret;
-
-
-}
-
diff --git a/tools/accessibilityinspector/optionswidget.cpp b/tools/accessibilityinspector/optionswidget.cpp
deleted file mode 100644
index 165d89151a..0000000000
--- a/tools/accessibilityinspector/optionswidget.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#include "optionswidget.h"
-
diff --git a/tools/accessibilityinspector/optionswidget.h b/tools/accessibilityinspector/optionswidget.h
deleted file mode 100644
index 2cf8c6b84d..0000000000
--- a/tools/accessibilityinspector/optionswidget.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#ifndef OPTIONSWIDGET_H
-#define OPTIONSWIDGET_H
-
-#include <QtGui>
-#include <QtWidgets>
-
-class OptionsWidget : public QWidget
-{
-Q_OBJECT
-public:
- OptionsWidget()
- :QWidget()
- {
- QVBoxLayout *m_layout = new QVBoxLayout;
-
- m_refresh = new QPushButton(this);
- m_refresh->setText(QLatin1String("Refresh"));
- m_layout->addWidget(m_refresh);
- connect(m_refresh, SIGNAL(clicked()), SIGNAL(refreshClicked()));
-
- m_hideInvisibleItems = new QCheckBox(this);
- m_layout->addWidget(m_hideInvisibleItems);
- m_hideInvisibleItems->setText("Hide Invisible Items");
- m_hideInvisibleItems->setChecked(true);
- connect(m_hideInvisibleItems, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()));
-
- m_hideOffscreenItems = new QCheckBox(this);
- m_layout->addWidget(m_hideOffscreenItems);
- m_hideOffscreenItems->setText("Hide Offscreen Items");
- m_hideOffscreenItems->setChecked(true);
- connect(m_hideOffscreenItems, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()));
-
- m_hidePaneItems = new QCheckBox(this);
- m_layout->addWidget(m_hidePaneItems);
- m_hidePaneItems->setText("Hide Items with the Pane role");
- m_hidePaneItems->setChecked(true);
- connect(m_hidePaneItems, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()));
-
- m_enableTextToSpeach = new QCheckBox(this);
- m_layout->addWidget(m_enableTextToSpeach);
- m_enableTextToSpeach->setText("Enable Text To Speech");
- m_enableTextToSpeach->setChecked(false);
- connect(m_enableTextToSpeach, SIGNAL(toggled(bool)), SIGNAL(optionsChanged()));
-
-
- m_scale = new QSlider(Qt::Horizontal);
-// m_layout->addWidget(m_scale);
- m_scale->setRange(5, 30);
- m_scale->setValue(1);
- connect(m_scale, SIGNAL(valueChanged(int)), SIGNAL(scaleChanged(int)));
-
- this->setLayout(m_layout);
- }
-
- bool hideInvisibleItems() { return m_hideInvisibleItems->isChecked(); }
- bool hideOffscreenItems() { return m_hideOffscreenItems->isChecked(); }
- bool hidePaneItems() { return m_hidePaneItems->isChecked(); }
- bool enableTextToSpeach() { return m_enableTextToSpeach->isChecked(); }
-signals:
- void optionsChanged();
- void refreshClicked();
- void scaleChanged(int);
-
-private:
- QVBoxLayout *m_layout;
-
- QPushButton *m_refresh;
- QCheckBox *m_hideInvisibleItems;
- QCheckBox *m_hideOffscreenItems;
- QCheckBox *m_hidePaneItems;
- QCheckBox *m_enableTextToSpeach;
- QSlider *m_scale;
-};
-
-
-#endif // OPTIONSWIDGET_H
diff --git a/tools/accessibilityinspector/screenreader.cpp b/tools/accessibilityinspector/screenreader.cpp
deleted file mode 100644
index 5f864f3c6b..0000000000
--- a/tools/accessibilityinspector/screenreader.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#include "screenreader.h"
-#include "optionswidget.h"
-#include "accessibilityscenemanager.h"
-#include <QtGui>
-
-#ifdef Q_OS_MAC
-#include <private/qt_mac_p.h>
-#endif
-
-ScreenReader::ScreenReader(QObject *parent) :
- QObject(parent)
-{
- m_selectedInterface = 0;
- m_rootInterface = 0;
- bool activateCalled = false;
-}
-
-ScreenReader::~ScreenReader()
-{
- delete m_selectedInterface;
- delete m_rootInterface;
-}
-
-void ScreenReader::setRootObject(QObject *rootObject)
-{
- m_rootInterface = QAccessible::queryAccessibleInterface(rootObject);
-}
-
-void ScreenReader::setOptionsWidget(OptionsWidget *optionsWidget)
-{
- m_optionsWidget = optionsWidget;
-}
-
-void ScreenReader::touchPoint(const QPoint &point)
-{
- qDebug() << "touch" << point;
- // Wait and see if this touch is the start of a double-tap
- // (activate will then be called and cancel the touch processing)
- m_activateCalled = false;
- m_currentTouchPoint = point;
- QTimer::singleShot(200, this, SLOT(processTouchPoint()));
-}
-
-void ScreenReader::processTouchPoint()
-{
- if (m_activateCalled) {
- return;
- }
-
- if (m_rootInterface == 0) {
- return;
- }
-
- QAccessibleInterface * currentInterface = m_rootInterface;
-
- int hit = -2;
- int guardCounter = 0;
- const int guardMax = 40;
- while (hit != 0) {
- ++guardCounter;
- if (guardCounter > guardMax) {
- qDebug() << "touchPoint exit recursion overflow";
- return; // outside
- }
-
- hit = currentInterface->childAt(m_currentTouchPoint.x(), m_currentTouchPoint.y());
- //qDebug() << "hit" << hit;
- if (hit == -1) {
- return; // outside
- } else if (hit == 0) {
- break; // found it.
- } else {
- QAccessibleInterface *childInterface = 0;
- int child = currentInterface->navigate(QAccessible::Child, hit, &childInterface);
- if (childInterface == 0) {
- return; // navigation error
- }
-
- if (currentInterface != m_rootInterface)
- delete currentInterface;
- currentInterface = childInterface;
- }
- }
-
- m_selectedInterface = currentInterface;
- emit selected(m_selectedInterface->object());
- if (m_optionsWidget->enableTextToSpeach())
- speak(m_selectedInterface->text(QAccessible::Name, 0)
- /*+ "," + translateRole(m_selectedInterface->role(0)) */);
-
-// qDebug() << "touchPoint exit found" << m_selectedInterface->text(QAccessible::Name, 0) << m_selectedInterface->object() << m_selectedInterface->rect(0);
-}
-
-void ScreenReader::activate()
-{
- qDebug() << "ScreenReader::activate";
- m_activateCalled = true;
- if (m_selectedInterface) {
- m_selectedInterface->doAction(QAccessible::Press, 0);
- }
-}
-
-#ifdef Q_OS_MAC
-
- // screenreader.mm
-
-#else
-
-void ScreenReader::speak(const QString &text, const QString &/*voice*/)
-{
- QFile f("festivalspeachhack");
- f.open(QIODevice::WriteOnly);
- f.write(text.toLocal8Bit());
- f.close();
-
- QProcess *process = new QProcess;
- process->start("/usr/bin/festival", QStringList() << "--tts" << "festivalspeachhack");
-}
-
-#endif
-
diff --git a/tools/accessibilityinspector/screenreader.h b/tools/accessibilityinspector/screenreader.h
deleted file mode 100644
index b3ba91d284..0000000000
--- a/tools/accessibilityinspector/screenreader.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-
-#ifndef SCREENREADER_H
-#define SCREENREADER_H
-
-#include <QObject>
-#include <QAccessible>
-#include <QAccessibleBridge>
-
-/*
- A Simple screen reader for touch-based user interfaces.
-
- Requires a text-to-speach backend. Currently implemented on
- Mac OS X and using festival on unix.
-*/
-class OptionsWidget;
-class ScreenReader : public QObject
-{
- Q_OBJECT
-public:
- explicit ScreenReader(QObject *parent = 0);
- ~ScreenReader();
-
- void setRootObject(QObject *rootObject);
- void setOptionsWidget(OptionsWidget *optionsWidget);
-public slots:
- void touchPoint(const QPoint &point);
- void activate();
-protected slots:
- void processTouchPoint();
-signals:
- void selected(QObject *object);
-
-protected:
- void speak(const QString &text, const QString &voice = QString());
-private:
- QAccessibleInterface *m_selectedInterface;
- QAccessibleInterface *m_rootInterface;
- OptionsWidget *m_optionsWidget;
- QPoint m_currentTouchPoint;
- bool m_activateCalled;
-};
-
-#endif // SCREENREADER_H
diff --git a/tools/accessibilityinspector/screenreader_mac.mm b/tools/accessibilityinspector/screenreader_mac.mm
deleted file mode 100644
index 063cecd83b..0000000000
--- a/tools/accessibilityinspector/screenreader_mac.mm
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.0 as published by the Free Software Foundation
- ** and appearing in the file LICENSE.GPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
-
-#include "screenreader.h"
-#include <QtCore>
-#include <private/qt_mac_p.h>
-
-void ScreenReader::speak(const QString &text, const QString &voice)
-{
- QString voiceBase = "com.apple.speech.synthesis.voice.";
- if (voice.isEmpty())
- voiceBase += "Vici";
- else
- voiceBase += voice;
-
- CFStringRef cfVoice = QCFString::toCFStringRef(voiceBase);
- NSSpeechSynthesizer *synth = [[NSSpeechSynthesizer alloc] initWithVoice:(NSString *)cfVoice];
- CFStringRef cfText = QCFString::toCFStringRef(text);
- [synth startSpeakingString: (NSString *)cfText];
- CFRelease(cfText);
- CFRelease(cfVoice);
-}