/****************************************************************************+ −
**+ −
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).+ −
** All rights reserved.+ −
** Contact: Nokia Corporation (qt-info@nokia.com)+ −
**+ −
** This file is part of the QtTest module of the Qt Toolkit.+ −
**+ −
** $QT_BEGIN_LICENSE:LGPL$+ −
** No Commercial Usage+ −
** This file contains pre-release code and may not be distributed.+ −
** You may use this file in accordance with the terms and conditions+ −
** contained in the Technology Preview License Agreement accompanying+ −
** this package.+ −
**+ −
** GNU Lesser General Public License Usage+ −
** Alternatively, 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.+ −
**+ −
** If you have questions regarding the use of this file, please contact+ −
** Nokia at qt-info@nokia.com.+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
** $QT_END_LICENSE$+ −
**+ −
****************************************************************************/+ −
+ −
#ifndef QTESTACCESSIBLE_H+ −
#define QTESTACCESSIBLE_H+ −
+ −
#if 0+ −
// inform syncqt+ −
#pragma qt_no_master_include+ −
#endif+ −
+ −
#ifndef QT_NO_ACCESSIBILITY+ −
+ −
#define QTEST_ACCESSIBILITY+ −
+ −
#define QVERIFY_EVENT(object, child, event) \+ −
QVERIFY(QTestAccessibility::verifyEvent(object, child, (int)event))+ −
+ −
#include <QtCore/qlist.h>+ −
#include <QtGui/qaccessible.h>+ −
#include <QtGui/qapplication.h>+ −
+ −
QT_BEGIN_HEADER+ −
+ −
QT_BEGIN_NAMESPACE+ −
+ −
QT_MODULE(Test)+ −
+ −
class QObject;+ −
+ −
struct QTestAccessibilityEvent+ −
{+ −
QTestAccessibilityEvent(QObject* o = 0, int c = 0, int e = 0)+ −
: object(o), child(c), event(e) {}+ −
+ −
bool operator==(const QTestAccessibilityEvent &o) const+ −
{+ −
return o.object == object && o.child == child && o.event == event;+ −
}+ −
+ −
QObject* object;+ −
int child;+ −
int event;+ −
};+ −
+ −
typedef QList<QTestAccessibilityEvent> EventList;+ −
+ −
class QTestAccessibility+ −
{+ −
public:+ −
static void initialize()+ −
{+ −
if (!instance()) {+ −
instance() = new QTestAccessibility;+ −
qAddPostRoutine(cleanup);+ −
}+ −
}+ −
static void cleanup()+ −
{+ −
delete instance();+ −
instance() = 0;+ −
}+ −
static void clearEvents() { eventList().clear(); }+ −
static EventList events() { return eventList(); }+ −
static bool verifyEvent(const QTestAccessibilityEvent& ev)+ −
{+ −
if (eventList().isEmpty())+ −
return FALSE;+ −
return eventList().takeFirst() == ev;+ −
}+ −
+ −
static bool verifyEvent(QObject *o, int c, int e)+ −
{+ −
return verifyEvent(QTestAccessibilityEvent(o, c, e));+ −
}+ −
+ −
private:+ −
QTestAccessibility()+ −
{+ −
QAccessible::installUpdateHandler(updateHandler);+ −
QAccessible::installRootObjectHandler(rootObjectHandler);+ −
}+ −
+ −
~QTestAccessibility()+ −
{+ −
QAccessible::installUpdateHandler(0);+ −
QAccessible::installRootObjectHandler(0);+ −
}+ −
+ −
static void rootObjectHandler(QObject *object)+ −
{+ −
// qDebug("rootObjectHandler called %p", object);+ −
if (object) {+ −
QApplication* app = qobject_cast<QApplication*>(object);+ −
if ( !app )+ −
qWarning("QTEST_ACCESSIBILITY: root Object is not a QApplication!");+ −
} else {+ −
qWarning("QTEST_ACCESSIBILITY: root Object called with 0 pointer");+ −
}+ −
}+ −
+ −
static void updateHandler(QObject *o, int c, QAccessible::Event e)+ −
{+ −
// qDebug("updateHandler called: %p %d %d", o, c, (int)e);+ −
eventList().append(QTestAccessibilityEvent(o, c, (int)e));+ −
}+ −
+ −
static EventList &eventList()+ −
{+ −
static EventList list;+ −
return list;+ −
}+ −
+ −
static QTestAccessibility *&instance()+ −
{+ −
static QTestAccessibility *ta = 0;+ −
return ta;+ −
}+ −
};+ −
+ −
#endif+ −
+ −
QT_END_NAMESPACE+ −
+ −
QT_END_HEADER+ −
+ −
#endif+ −