16
16
#define GUI_UTILS_H__
18
18
#include <QtGlobal>
19
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
20
#include <QInputContext>
22
#include <QGraphicsItem>
23
#include <QGraphicsRectItem>
24
#include <QGraphicsView>
27
#include <tr1/functional>
30
20
#include <minputmethodhost.h>
21
#include <windowgroup.h>
31
22
#include <minputcontextconnection.h>
23
#include <unknownplatform.h>
33
#include <maliit/plugins/abstractsurface.h>
34
#include <maliit/plugins/abstractsurfacefactory.h>
35
#include <maliit/plugins/abstractwidgetssurface.h>
36
25
#include <maliit/plugins/abstractpluginsetting.h>
38
27
namespace MaliitTestUtils {
40
class RemoteWindow : public QWidget
43
explicit RemoteWindow(QWidget *p = 0, Qt::WindowFlags f = 0);
45
void paintEvent(QPaintEvent *);
48
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
50
class EventSpyInputContext : public QInputContext, public std::vector<T>
53
typedef std::tr1::function<T (const QEvent *event)> TransformFunction;
55
EventSpyInputContext(TransformFunction newTransform) : transform(newTransform) {}
57
virtual QString identifierName() { return QString::fromLatin1("EventSpyInputContext"); }
58
virtual bool isComposing() const { return false; }
59
virtual QString language() { return QString::fromLatin1("EN"); }
60
virtual void reset() {}
63
virtual bool filterEvent(const QEvent *event) {
64
this->push_back(transform(event));
69
const TransformFunction transform;
73
using Maliit::Plugins::AbstractSurface;
74
using Maliit::Plugins::AbstractWidgetSurface;
75
using Maliit::Plugins::AbstractGraphicsViewSurface;
77
class TestWidgetSurface : public AbstractWidgetSurface
80
TestWidgetSurface() {}
85
QSize size() const { return QSize(); }
86
void setSize(const QSize&) {}
88
QPoint relativePosition() const { return QPoint(); }
89
void setRelativePosition(const QPoint &) {}
91
QSharedPointer<AbstractSurface> parent() const { return QSharedPointer<AbstractSurface>(); }
93
QPoint translateEventPosition(const QPoint &eventPosition, const QSharedPointer<AbstractSurface> & = QSharedPointer<AbstractSurface>()) const { return eventPosition; }
95
QWidget *widget() const { return 0; }
98
class TestGraphicsViewSurface : public AbstractGraphicsViewSurface
101
TestGraphicsViewSurface()
102
: mGraphicsView(new QGraphicsView(new QGraphicsScene))
103
, mRootItem(new QGraphicsRectItem)
105
mGraphicsView->scene()->addItem(mRootItem.data());
111
QSize size() const { return QSize(); }
112
void setSize(const QSize&) {}
114
QPoint relativePosition() const { return QPoint(); }
115
void setRelativePosition(const QPoint &) {}
117
QSharedPointer<AbstractSurface> parent() const { return QSharedPointer<AbstractSurface>(); }
119
QPoint translateEventPosition(const QPoint &eventPosition, const QSharedPointer<AbstractSurface> & = QSharedPointer<AbstractSurface>()) const { return eventPosition; }
121
QGraphicsScene *scene() const { return mGraphicsView->scene(); }
122
QGraphicsView *view() const { return mGraphicsView.data(); }
124
QGraphicsItem *root() const { return mRootItem.data(); }
127
QScopedPointer<QGraphicsView> mGraphicsView;
128
QScopedPointer<QGraphicsItem> mRootItem;
131
class TestSurfaceFactory : public Maliit::Plugins::AbstractSurfaceFactory
134
TestSurfaceFactory() {}
136
QSize screenSize() const { return QSize(); }
138
bool supported(AbstractSurface::Options options) const { return options & (AbstractSurface::TypeGraphicsView | AbstractSurface::TypeWidget); }
140
QSharedPointer<AbstractSurface> create(AbstractSurface::Options options, const QSharedPointer<AbstractSurface> &) {
141
if (options & AbstractSurface::TypeGraphicsView)
142
return QSharedPointer<AbstractSurface>(new TestGraphicsViewSurface);
143
else if (options & AbstractSurface::TypeWidget)
144
return QSharedPointer<AbstractSurface>(new TestWidgetSurface);
146
return QSharedPointer<AbstractSurface>();
150
29
class TestPluginSetting : public Maliit::Plugins::AbstractPluginSetting
174
53
QString lastPreedit;
175
54
int sendPreeditCount;
177
TestInputMethodHost(MIndicatorServiceClient &client, const QString &plugin, const QString &description)
178
: MInputMethodHost(QSharedPointer<MInputContextConnection>(new MInputContextConnection), 0, client, new TestSurfaceFactory, plugin, description)
56
TestInputMethodHost(const QString &plugin, const QString &description)
57
: MInputMethodHost(QSharedPointer<MInputContextConnection>(new MInputContextConnection),
59
QSharedPointer<Maliit::WindowGroup>(new Maliit::WindowGroup(QSharedPointer<Maliit::AbstractPlatform>(new Maliit::UnknownPlatform))),
179
62
, sendCommitCount(0)
180
63
, sendPreeditCount(0)