diff options
author | Jan Arne Petersen <jpetersen@openismus.com> | 2012-01-30 12:42:50 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-31 19:57:12 +0100 |
commit | b27bf9bb94ff40b7e4f69d7f0cb606e12baa2fe2 (patch) | |
tree | fce162514270788a09cf8cd6eef5ee006b6bf012 /src/plugins/platforminputcontexts/maliit | |
parent | 298330bd436ca9437aa8023363f916b12811c7bf (diff) |
Rename meego to maliit platforminputcontext
Also build the plugin on linux systems with D-Bus. There is nothing
MeeGo or Maemo specific about this plugin or Maliit.
Task-number: QTBUG-22994
Change-Id: Idcccfb01f79166a54c5809741389b29ccac05a15
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Diffstat (limited to 'src/plugins/platforminputcontexts/maliit')
10 files changed, 1429 insertions, 0 deletions
diff --git a/src/plugins/platforminputcontexts/maliit/contextadaptor.cpp b/src/plugins/platforminputcontexts/maliit/contextadaptor.cpp new file mode 100644 index 0000000000..ca490a3503 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/contextadaptor.cpp @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 "contextadaptor.h" +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMetaObject> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> + +#include "qmaliitplatforminputcontext.h" + +/* + * Implementation of adaptor class Inputcontext1Adaptor + */ + +Inputcontext1Adaptor::Inputcontext1Adaptor(QObject *parent) + : QDBusAbstractAdaptor(parent) +{ + // constructor + setAutoRelaySignals(true); +} + +Inputcontext1Adaptor::~Inputcontext1Adaptor() +{ + // destructor +} + +void Inputcontext1Adaptor::activationLostEvent() +{ + // handle method call com.meego.inputmethod.inputcontext1.activationLostEvent + QMetaObject::invokeMethod(parent(), "activationLostEvent"); +} + +void Inputcontext1Adaptor::commitString(const QString &in0, int in1, int in2, int in3) +{ + // handle method call com.meego.inputmethod.inputcontext1.commitString + QMetaObject::invokeMethod(parent(), "commitString", Q_ARG(QString, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3)); +} + +void Inputcontext1Adaptor::updatePreedit(const QDBusMessage &message) +{ + // handle method call com.meego.inputmethod.inputcontext1.updatePreedit + QMetaObject::invokeMethod(parent(), "updatePreedit", Q_ARG(QDBusMessage, message)); +} + +void Inputcontext1Adaptor::copy() +{ + // handle method call com.meego.inputmethod.inputcontext1.copy + QMetaObject::invokeMethod(parent(), "copy"); +} + +void Inputcontext1Adaptor::imInitiatedHide() +{ + // handle method call com.meego.inputmethod.inputcontext1.imInitiatedHide + QMetaObject::invokeMethod(parent(), "imInitiatedHide"); +} + +void Inputcontext1Adaptor::keyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uchar in6) +{ + // handle method call com.meego.inputmethod.inputcontext1.keyEvent + QMetaObject::invokeMethod(parent(), "keyEvent", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(QString, in3), Q_ARG(bool, in4), Q_ARG(int, in5), Q_ARG(uchar, in6)); +} + +void Inputcontext1Adaptor::paste() +{ + // handle method call com.meego.inputmethod.inputcontext1.paste + QMetaObject::invokeMethod(parent(), "paste"); +} + +bool Inputcontext1Adaptor::preeditRectangle(int &out1, int &out2, int &out3, int &out4) +{ + // handle method call com.meego.inputmethod.inputcontext1.preeditRectangle + return static_cast<QMaliitPlatformInputContext *>(parent())->preeditRectangle(out1, out2, out3, out4); +} + +bool Inputcontext1Adaptor::selection(QString &out1) +{ + // handle method call com.meego.inputmethod.inputcontext1.selection + return static_cast<QMaliitPlatformInputContext *>(parent())->selection(out1); +} + +void Inputcontext1Adaptor::setDetectableAutoRepeat(bool in0) +{ + // handle method call com.meego.inputmethod.inputcontext1.setDetectableAutoRepeat + QMetaObject::invokeMethod(parent(), "setDetectableAutoRepeat", Q_ARG(bool, in0)); +} + +void Inputcontext1Adaptor::setGlobalCorrectionEnabled(bool in0) +{ + // handle method call com.meego.inputmethod.inputcontext1.setGlobalCorrectionEnabled + QMetaObject::invokeMethod(parent(), "setGlobalCorrectionEnabled", Q_ARG(bool, in0)); +} + +void Inputcontext1Adaptor::setLanguage(const QString &in0) +{ + // handle method call com.meego.inputmethod.inputcontext1.setLanguage + QMetaObject::invokeMethod(parent(), "setLanguage", Q_ARG(QString, in0)); +} + +void Inputcontext1Adaptor::setRedirectKeys(bool in0) +{ + // handle method call com.meego.inputmethod.inputcontext1.setRedirectKeys + QMetaObject::invokeMethod(parent(), "setRedirectKeys", Q_ARG(bool, in0)); +} + +void Inputcontext1Adaptor::setSelection(int in0, int in1) +{ + // handle method call com.meego.inputmethod.inputcontext1.setSelection + QMetaObject::invokeMethod(parent(), "setSelection", Q_ARG(int, in0), Q_ARG(int, in1)); +} + +void Inputcontext1Adaptor::updateInputMethodArea(int in0, int in1, int in2, int in3) +{ + // handle method call com.meego.inputmethod.inputcontext1.updateInputMethodArea + QMetaObject::invokeMethod(parent(), "updateInputMethodArea", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3)); +} + diff --git a/src/plugins/platforminputcontexts/maliit/contextadaptor.h b/src/plugins/platforminputcontexts/maliit/contextadaptor.h new file mode 100644 index 0000000000..5e20ec3ee5 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/contextadaptor.h @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 CONTEXT_H_1318935171 +#define CONTEXT_H_1318935171 + +#include <QtCore/QObject> +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> +#include <QtDBus/QtDBus> + +/* + * Adaptor class for interface com.meego.inputmethod.inputcontext1 + */ +class Inputcontext1Adaptor: public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "com.meego.inputmethod.inputcontext1") + Q_CLASSINFO("D-Bus Introspection", "" +" <interface name=\"com.meego.inputmethod.inputcontext1\">\n" +" <method name=\"activationLostEvent\"/>\n" +" <method name=\"imInitiatedHide\"/>\n" +" <method name=\"commitString\">\n" +" <arg type=\"s\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" </method>\n" +" <method name=\"updatePreedit\">\n" +" <arg type=\"s\"/>\n" +" <arg type=\"a(iii)\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" </method>\n" +" <method name=\"keyEvent\">\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"s\"/>\n" +" <arg type=\"b\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"y\"/>\n" +" </method>\n" +" <method name=\"updateInputMethodArea\">\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" </method>\n" +" <method name=\"setGlobalCorrectionEnabled\">\n" +" <arg type=\"b\"/>\n" +" </method>\n" +" <method name=\"preeditRectangle\">\n" +" <arg direction=\"out\" type=\"b\"/>\n" +" <arg direction=\"out\" type=\"i\"/>\n" +" <arg direction=\"out\" type=\"i\"/>\n" +" <arg direction=\"out\" type=\"i\"/>\n" +" <arg direction=\"out\" type=\"i\"/>\n" +" </method>\n" +" <method name=\"copy\"/>\n" +" <method name=\"paste\"/>\n" +" <method name=\"setRedirectKeys\">\n" +" <arg type=\"b\"/>\n" +" </method>\n" +" <method name=\"setDetectableAutoRepeat\">\n" +" <arg type=\"b\"/>\n" +" </method>\n" +" <method name=\"setSelection\">\n" +" <arg type=\"i\"/>\n" +" <arg type=\"i\"/>\n" +" </method>\n" +" <method name=\"selection\">\n" +" <arg direction=\"out\" type=\"b\"/>\n" +" <arg direction=\"out\" type=\"s\"/>\n" +" </method>\n" +" <method name=\"setLanguage\">\n" +" <arg type=\"s\"/>\n" +" </method>\n" +" </interface>\n" + "") +public: + Inputcontext1Adaptor(QObject *parent); + virtual ~Inputcontext1Adaptor(); + +public: // PROPERTIES +public Q_SLOTS: // METHODS + void activationLostEvent(); + void commitString(const QString &in0, int in1, int in2, int in3); + void updatePreedit(const QDBusMessage &message); + void copy(); + void imInitiatedHide(); + void keyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uchar in6); + void paste(); + bool preeditRectangle(int &out1, int &out2, int &out3, int &out4); + bool selection(QString &out1); + void setDetectableAutoRepeat(bool in0); + void setGlobalCorrectionEnabled(bool in0); + void setLanguage(const QString &in0); + void setRedirectKeys(bool in0); + void setSelection(int in0, int in1); + void updateInputMethodArea(int in0, int in1, int in2, int in3); +Q_SIGNALS: // SIGNALS +}; + +#endif diff --git a/src/plugins/platforminputcontexts/maliit/main.cpp b/src/plugins/platforminputcontexts/maliit/main.cpp new file mode 100644 index 0000000000..2b42befc67 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/main.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 <private/qplatforminputcontextplugin_qpa_p.h> +#include <QtCore/QStringList> +#include "qmaliitplatforminputcontext.h" + +QT_BEGIN_NAMESPACE + +class QMaliitPlatformInputContextPlugin : public QPlatformInputContextPlugin +{ +public: + QStringList keys() const; + QPlatformInputContext *create(const QString&, const QStringList&); +}; + +QStringList QMaliitPlatformInputContextPlugin::keys() const +{ + return QStringList(QStringLiteral("maliit")); +} + +QPlatformInputContext *QMaliitPlatformInputContextPlugin::create(const QString& system, const QStringList& paramList) +{ + Q_UNUSED(paramList); + + if (system.compare(system, QStringLiteral("maliit"), Qt::CaseInsensitive) == 0) + return new QMaliitPlatformInputContext; + return 0; +} + +Q_EXPORT_PLUGIN2(maliitplatforminputcontextplugin, QMaliitPlatformInputContextPlugin) + +QT_END_NAMESPACE diff --git a/src/plugins/platforminputcontexts/maliit/maliit.pro b/src/plugins/platforminputcontexts/maliit/maliit.pro new file mode 100644 index 0000000000..a20e766580 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/maliit.pro @@ -0,0 +1,19 @@ +TARGET = maliitplatforminputcontextplugin +load(qt_plugin) + +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforminputcontexts + +QT += dbus platformsupport-private +SOURCES += $$PWD/qmaliitplatforminputcontext.cpp \ + $$PWD/serverproxy.cpp \ + $$PWD/serveraddressproxy.cpp \ + $$PWD/contextadaptor.cpp \ + $$PWD/main.cpp + +HEADERS += $$PWD/qmaliitplatforminputcontext.h \ + $$PWD/serverproxy.h \ + $$PWD/serveraddressproxy.h \ + $$PWD/contextadaptor.h + +target.path += $$[QT_INSTALL_PLUGINS]/platforminputcontexts +INSTALLS += target diff --git a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp new file mode 100644 index 0000000000..9db07af950 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp @@ -0,0 +1,574 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 "qmaliitplatforminputcontext.h" + +#include <QtDebug> +#include <QTextCharFormat> +#include <QGuiApplication> +#include <qwindow.h> +#include <qevent.h> +#include <qscreen.h> + +#include "serveraddressproxy.h" +#include "serverproxy.h" +#include "contextadaptor.h" + +#include <sys/types.h> +#include <signal.h> + +#include <QtDBus> + +QT_BEGIN_NAMESPACE + +enum { debug = 0 }; + +enum InputPanelVisibility { + InputPanelHidden, + InputPanelShowRequested, + InputPanelShown +}; + +enum MaliitOrientationAngle { + Angle0 = 0, + Angle90 = 90, + Angle180 = 180, + Angle270 = 270 +}; + +static int orientationAngle(Qt::ScreenOrientation orientation) +{ + switch (orientation) { + case Qt::PrimaryOrientation: // Urgh. + case Qt::PortraitOrientation: + return Angle270; + case Qt::LandscapeOrientation: + return Angle0; + case Qt::InvertedPortraitOrientation: + return Angle90; + case Qt::InvertedLandscapeOrientation: + return Angle180; + } + return Angle0; +} + +// From MTF: +//! Content type for text entries. Used at least with MTextEdit +enum TextContentType { + //! all characters allowed + FreeTextContentType, + + //! only integer numbers allowed + NumberContentType, + + //! allows numbers and certain other characters used in phone numbers + PhoneNumberContentType, + + //! allows only characters permitted in email address + EmailContentType, + + //! allows only character permitted in URL address + UrlContentType, + + //! allows content with user defined format + CustomContentType +}; +static TextContentType contentTypeFromHints(Qt::InputMethodHints hints) +{ + TextContentType type = FreeTextContentType; + hints &= Qt::ImhExclusiveInputMask; + + if (hints == Qt::ImhFormattedNumbersOnly || hints == Qt::ImhDigitsOnly) + type = NumberContentType; + else if (hints == Qt::ImhDialableCharactersOnly) + type = PhoneNumberContentType; + else if (hints == Qt::ImhEmailCharactersOnly) + type = EmailContentType; + else if (hints == Qt::ImhUrlCharactersOnly) + type = UrlContentType; + + return type; +} + +static QString maliitServerAddress() +{ + org::maliit::Server::Address serverAddress(QStringLiteral("org.maliit.server"), QStringLiteral("/org/maliit/server/address"), QDBusConnection::sessionBus()); + + QString address(serverAddress.address()); + + // Fallback to old socket when org.maliit.server service is not available + if (address.isEmpty()) + return QStringLiteral("unix:path=/tmp/meego-im-uiserver/imserver_dbus"); + + return address; +} + +class QMaliitPlatformInputContextPrivate +{ +public: + QMaliitPlatformInputContextPrivate(QMaliitPlatformInputContext *qq); + ~QMaliitPlatformInputContextPrivate() + { + delete adaptor; + delete server; + } + + void sendStateUpdate(bool focusChanged = false); + + QDBusConnection connection; + ComMeegoInputmethodUiserver1Interface *server; + Inputcontext1Adaptor *adaptor; + + QMap<QString, QVariant> imState; + + InputPanelVisibility visibility; + + bool valid; + bool active; + bool correctionEnabled; + QRect keyboardRect; + QString preedit; + QWeakPointer<QWindow> window; + QMaliitPlatformInputContext *q; +}; + + +QMaliitPlatformInputContext::QMaliitPlatformInputContext() + : d(new QMaliitPlatformInputContextPrivate(this)) +{ + if (debug) + qDebug() << "QMaliitPlatformInputContext::QMaliitPlatformInputContext()"; + QInputPanel *p = qApp->inputPanel(); + connect(p, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged())); +} + +QMaliitPlatformInputContext::~QMaliitPlatformInputContext(void) +{ + delete d; +} + +bool QMaliitPlatformInputContext::isValid() const +{ + return d->valid; +} + +void QMaliitPlatformInputContext::invokeAction(QInputPanel::Action action, int x) +{ + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return; + + if (action == QInputPanel::Click) { + if (x < 0 || x >= d->preedit.length()) { + reset(); + return; + } + + d->imState["preeditClickPos"] = x; + d->sendStateUpdate(); + // The first argument is the mouse pos and the second is the + // preedit rectangle. Both are unused on the server side. + d->server->mouseClickedOnPreedit(0, 0, 0, 0, 0, 0); + } else { + QPlatformInputContext::invokeAction(action, x); + } +} + +void QMaliitPlatformInputContext::reset() +{ + QObject *input = qApp->inputPanel()->inputItem(); + + const bool hadPreedit = !d->preedit.isEmpty(); + if (hadPreedit && input) { + // ### selection + QInputMethodEvent event; + event.setCommitString(d->preedit); + QGuiApplication::sendEvent(input, &event); + d->preedit.clear(); + } + + QDBusPendingReply<void> reply = d->server->reset(); + if (hadPreedit) + reply.waitForFinished(); +} + +void QMaliitPlatformInputContext::update(Qt::InputMethodQueries queries) +{ + QInputPanel *panel = qApp->inputPanel(); + QObject *input = panel->inputItem(); + if (!input) + return; + + QInputMethodQueryEvent query(queries); + QGuiApplication::sendEvent(input, &query); + + if (queries & Qt::ImSurroundingText) + d->imState["surroundingText"] = query.value(Qt::ImSurroundingText); + if (queries & Qt::ImCursorPosition) + d->imState["cursorPosition"] = query.value(Qt::ImCursorPosition); + if (queries & Qt::ImAnchorPosition) + d->imState["anchorPosition"] = query.value(Qt::ImAnchorPosition); + if (queries & Qt::ImCursorRectangle) { + QRect rect = query.value(Qt::ImCursorRectangle).toRect(); + rect = panel->inputItemTransform().mapRect(rect); + QWindow *window = panel->inputWindow(); + if (window) + d->imState["cursorRectangle"] = QRect(window->mapToGlobal(rect.topLeft()), rect.size()); + } + + if (queries & Qt::ImCurrentSelection) + d->imState["hasSelection"] = !query.value(Qt::ImCurrentSelection).toString().isEmpty(); + + if (queries & Qt::ImHints) { + Qt::InputMethodHints hints = Qt::InputMethodHints(query.value(Qt::ImHints).toUInt()); + + d->imState["predictionEnabled"] = !(hints & Qt::ImhNoPredictiveText); + d->imState["autocapitalizationEnabled"] = !(hints & Qt::ImhNoAutoUppercase); + d->imState["hiddenText"] = (hints & Qt::ImhHiddenText) != 0; + + d->imState["contentType"] = contentTypeFromHints(hints); + } + + d->sendStateUpdate(/*focusChanged*/true); +} + +QRectF QMaliitPlatformInputContext::keyboardRect() const +{ + return d->keyboardRect; +} + +void QMaliitPlatformInputContext::activationLostEvent() +{ + d->active = false; + d->visibility = InputPanelHidden; +} + +void QMaliitPlatformInputContext::commitString(const QString &string, int replacementStart, int replacementLength, int cursorPos) +{ + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return; + + d->preedit.clear(); + + if (debug) + qWarning() << "CommitString" << string; + // ### start/cursorPos + QInputMethodEvent event; + event.setCommitString(string, replacementStart, replacementLength); + QCoreApplication::sendEvent(input, &event); +} + +void QMaliitPlatformInputContext::updatePreedit(const QDBusMessage &message) +{ + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return; + + QList<QVariant> arguments = message.arguments(); + if (arguments.count() != 5) { + qWarning() << "QMaliitPlatformInputContext::updatePreedit: Received message from input method server with wrong parameters."; + return; + } + + d->preedit = arguments[0].toString(); + + QList<QInputMethodEvent::Attribute> attributes; + + const QDBusArgument formats = arguments[1].value<QDBusArgument>(); + formats.beginArray(); + while (!formats.atEnd()) { + formats.beginStructure(); + int start, length, preeditFace; + formats >> start >> length >> preeditFace; + formats.endStructure(); + + QTextCharFormat format; + + enum PreeditFace { + PreeditDefault, + PreeditNoCandidates, + PreeditKeyPress, //!< Used for displaying the hwkbd key just pressed + PreeditUnconvertible, //!< Inactive preedit region, not clickable + PreeditActive, //!< Preedit region with active suggestions + + }; + switch (PreeditFace(preeditFace)) { + case PreeditDefault: + case PreeditKeyPress: + format.setUnderlineStyle(QTextCharFormat::SingleUnderline); + format.setUnderlineColor(QColor(0, 0, 0)); + break; + case PreeditNoCandidates: + format.setUnderlineStyle(QTextCharFormat::SingleUnderline); + format.setUnderlineColor(QColor(255, 0, 0)); + break; + case PreeditUnconvertible: + format.setForeground(QBrush(QColor(128, 128, 128))); + break; + case PreeditActive: + format.setForeground(QBrush(QColor(153, 50, 204))); + format.setFontWeight(QFont::Bold); + break; + default: + break; + } + + attributes << QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, start, length, format); + } + formats.endArray(); + + int replacementStart = arguments[2].toInt(); + int replacementLength = arguments[3].toInt(); + int cursorPos = arguments[4].toInt(); + + if (debug) + qWarning() << "updatePreedit" << d->preedit << replacementStart << replacementLength << cursorPos; + + if (cursorPos >= 0) + attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursorPos, 1, QVariant()); + + QInputMethodEvent event(d->preedit, attributes); + if (replacementStart || replacementLength) + event.setCommitString(QString(), replacementStart, replacementLength); + QCoreApplication::sendEvent(input, &event); +} + +void QMaliitPlatformInputContext::copy() +{ + // Not supported at the moment. +} + +void QMaliitPlatformInputContext::imInitiatedHide() +{ + d->visibility = InputPanelHidden; + emitInputPanelVisibleChanged(); + // ### clear focus +} + +void QMaliitPlatformInputContext::keyEvent(int, int, int, const QString &, bool, int, uchar) +{ + // Not supported at the moment. +} + +void QMaliitPlatformInputContext::paste() +{ + // Not supported at the moment. +} + +bool QMaliitPlatformInputContext::preeditRectangle(int &x, int &y, int &width, int &height) +{ + // ### + QRect r = qApp->inputPanel()->cursorRectangle().toRect(); + if (!r.isValid()) + return false; + x = r.x(); + y = r.y(); + width = r.width(); + height = r.height(); + return true; +} + +bool QMaliitPlatformInputContext::selection(QString &selection) +{ + selection.clear(); + + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return false; + + QInputMethodQueryEvent query(Qt::ImCurrentSelection); + QGuiApplication::sendEvent(input, &query); + QVariant value = query.value(Qt::ImCurrentSelection); + if (!value.isValid()) + return false; + + selection = value.toString(); + return true; +} + +void QMaliitPlatformInputContext::setDetectableAutoRepeat(bool) +{ + // Not supported. +} + +void QMaliitPlatformInputContext::setGlobalCorrectionEnabled(bool enable) +{ + d->correctionEnabled = enable; +} + +void QMaliitPlatformInputContext::setLanguage(const QString &) +{ + // Unused at the moment. +} + +void QMaliitPlatformInputContext::setRedirectKeys(bool) +{ + // Not supported. +} + +void QMaliitPlatformInputContext::setSelection(int start, int length) +{ + QObject *input = qApp->inputPanel()->inputItem(); + if (!input) + return; + + QList<QInputMethodEvent::Attribute> attributes; + attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, start, length, QVariant()); + QInputMethodEvent event(QString(), attributes); + QGuiApplication::sendEvent(input, &event); +} + +void QMaliitPlatformInputContext::updateInputMethodArea(int x, int y, int width, int height) +{ + d->keyboardRect = QRect(x, y, width, height); + emitKeyboardRectChanged(); +} + +void QMaliitPlatformInputContext::updateServerWindowOrientation(Qt::ScreenOrientation orientation) +{ + d->server->appOrientationChanged(orientationAngle(orientation)); +} + +void QMaliitPlatformInputContext::inputItemChanged() +{ + if (!d->valid) + return; + + QInputPanel *panel = qApp->inputPanel(); + QObject *input = panel->inputItem(); + QWindow *window = panel->inputWindow(); + if (window != d->window.data()) { + if (d->window) + disconnect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), + this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation))); + d->window = window; + if (d->window) + connect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)), + this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation))); + } + + d->imState["focusState"] = input != 0; + if (input) { + if (window) + d->imState["winId"] = static_cast<qulonglong>(window->winId()); + + if (!d->active) { + d->active = true; + d->server->activateContext(); + + if (window) + d->server->appOrientationChanged(orientationAngle(window->contentOrientation())); + } + } + d->sendStateUpdate(/*focusChanged*/true); + if (input && window && d->visibility == InputPanelShowRequested) + showInputPanel(); +} + +void QMaliitPlatformInputContext::showInputPanel() +{ + if (debug) + qDebug() << "showInputPanel"; + + QInputPanel *panel = qApp->inputPanel(); + if (!panel->inputItem() || !panel->inputWindow()) + d->visibility = InputPanelShowRequested; + else { + d->server->showInputMethod(); + d->visibility = InputPanelShown; + emitInputPanelVisibleChanged(); + } +} + +void QMaliitPlatformInputContext::hideInputPanel() +{ + d->server->hideInputMethod(); + d->visibility = InputPanelHidden; + emitInputPanelVisibleChanged(); +} + +bool QMaliitPlatformInputContext::isInputPanelVisible() const +{ + return d->visibility == InputPanelShown; +} + +QMaliitPlatformInputContextPrivate::QMaliitPlatformInputContextPrivate(QMaliitPlatformInputContext* qq) + : connection(QDBusConnection::connectToPeer(maliitServerAddress(), QLatin1String("MaliitIMProxy"))) + , server(0) + , adaptor(0) + , visibility(InputPanelHidden) + , valid(false) + , active(false) + , correctionEnabled(false) + , q(qq) +{ + if (!connection.isConnected()) { + qDebug("QMaliitPlatformInputContext: not connected."); + return; + } + + server = new ComMeegoInputmethodUiserver1Interface(QStringLiteral(""), QStringLiteral("/com/meego/inputmethod/uiserver1"), connection); + adaptor = new Inputcontext1Adaptor(qq); + connection.registerObject("/com/meego/inputmethod/inputcontext", qq); + + enum InputMethodMode { + //! Normal mode allows to use preedit and error correction + InputMethodModeNormal, + + //! Virtual keyboard sends QKeyEvent for every key press or release + InputMethodModeDirect, + + //! Used with proxy widget + InputMethodModeProxy + }; + imState["inputMethodMode"] = InputMethodModeNormal; + + imState["correctionEnabled"] = true; + + valid = true; +} + +void QMaliitPlatformInputContextPrivate::sendStateUpdate(bool focusChanged) +{ + server->updateWidgetInformation(imState, focusChanged); +} + +QT_END_NAMESPACE diff --git a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h new file mode 100644 index 0000000000..61960e8e8f --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 QMALIITPLATFORMINPUTCONTEXT_H +#define QMALIITPLATFORMINPUTCONTEXT_H + +#include <QPlatformInputContext> +#include <QDBusArgument> + +QT_BEGIN_NAMESPACE + +class QMaliitPlatformInputContextPrivate; +class QDBusVariant; +class QDBusMessage; + +class QMaliitPlatformInputContext : public QPlatformInputContext +{ + Q_OBJECT +public: + QMaliitPlatformInputContext(); + ~QMaliitPlatformInputContext(); + + bool isValid() const; + + void invokeAction(QInputPanel::Action action, int x); + void reset(void); + void update(Qt::InputMethodQueries); + virtual QRectF keyboardRect() const; + + virtual void showInputPanel(); + virtual void hideInputPanel(); + virtual bool isInputPanelVisible() const; + +public Q_SLOTS: + void inputItemChanged(); + + void activationLostEvent(); + void commitString(const QString &in0, int in1, int in2, int in3); + void updatePreedit(const QDBusMessage &message); + void copy(); + void imInitiatedHide(); + void keyEvent(int , int , int , const QString &, bool , int , uchar ); + void paste(); + bool preeditRectangle(int &x, int &y, int &width, int &height); + bool selection(QString &selection); + void setDetectableAutoRepeat(bool in0); + void setGlobalCorrectionEnabled(bool enable); + void setLanguage(const QString &); + void setRedirectKeys(bool ); + void setSelection(int start, int length); + void updateInputMethodArea(int x, int y, int width, int height); + void updateServerWindowOrientation(Qt::ScreenOrientation orientation); + +private: + QMaliitPlatformInputContextPrivate *d; +}; + +QT_END_NAMESPACE + +#endif diff --git a/src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp new file mode 100644 index 0000000000..0f07cb6016 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 "serveraddressproxy.h" + +/* + * Implementation of interface class OrgMaliitServerAddressInterface + */ + +OrgMaliitServerAddressInterface::OrgMaliitServerAddressInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) + : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) +{ +} + +OrgMaliitServerAddressInterface::~OrgMaliitServerAddressInterface() +{ +} + diff --git a/src/plugins/platforminputcontexts/maliit/serveraddressproxy.h b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.h new file mode 100644 index 0000000000..91773f7150 --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 SERVERADDRESSPROXY_H +#define SERVERADDRESSPROXY_H + +#include <QtCore/QObject> +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> +#include <QtDBus/QtDBus> + +/* + * Proxy class for interface org.maliit.Server.Address + */ +class OrgMaliitServerAddressInterface: public QDBusAbstractInterface +{ + Q_OBJECT +public: + static inline const char *staticInterfaceName() + { return "org.maliit.Server.Address"; } + +public: + OrgMaliitServerAddressInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); + + ~OrgMaliitServerAddressInterface(); + + Q_PROPERTY(QString address READ address) + inline QString address() const + { return qvariant_cast< QString >(property("address")); } + +public Q_SLOTS: // METHODS +Q_SIGNALS: // SIGNALS +}; + +namespace org { + namespace maliit { + namespace Server { + typedef ::OrgMaliitServerAddressInterface Address; + } + } +} +#endif diff --git a/src/plugins/platforminputcontexts/maliit/serverproxy.cpp b/src/plugins/platforminputcontexts/maliit/serverproxy.cpp new file mode 100644 index 0000000000..2f5c48da2a --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/serverproxy.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 "serverproxy.h" + +/* + * Implementation of interface class ComMeegoInputmethodUiserver1Interface + */ + +ComMeegoInputmethodUiserver1Interface::ComMeegoInputmethodUiserver1Interface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) + : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) +{ +} + +ComMeegoInputmethodUiserver1Interface::~ComMeegoInputmethodUiserver1Interface() +{ +} + diff --git a/src/plugins/platforminputcontexts/maliit/serverproxy.h b/src/plugins/platforminputcontexts/maliit/serverproxy.h new file mode 100644 index 0000000000..8e0b88641b --- /dev/null +++ b/src/plugins/platforminputcontexts/maliit/serverproxy.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the plugins 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 SERVER_H_1318935108 +#define SERVER_H_1318935108 + +#include <QtCore/QObject> +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> +#include <QtDBus/QtDBus> + +/* + * Proxy class for interface com.meego.inputmethod.uiserver1 + */ +class ComMeegoInputmethodUiserver1Interface: public QDBusAbstractInterface +{ + Q_OBJECT +public: + static inline const char *staticInterfaceName() + { return "com.meego.inputmethod.uiserver1"; } + +public: + ComMeegoInputmethodUiserver1Interface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); + + ~ComMeegoInputmethodUiserver1Interface(); + +public Q_SLOTS: // METHODS + inline QDBusPendingReply<> activateContext() + { + QList<QVariant> argumentList; + return asyncCallWithArgumentList(QLatin1String("activateContext"), argumentList); + } + + inline QDBusPendingReply<> appOrientationAboutToChange(int in0) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(in0); + return asyncCallWithArgumentList(QLatin1String("appOrientationAboutToChange"), argumentList); + } + + inline QDBusPendingReply<> appOrientationChanged(int in0) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(in0); + return asyncCallWithArgumentList(QLatin1String("appOrientationChanged"), argumentList); + } + + inline QDBusPendingReply<> hideInputMethod() + { + QList<QVariant> argumentList; + return asyncCallWithArgumentList(QLatin1String("hideInputMethod"), argumentList); + } + + inline QDBusPendingReply<> mouseClickedOnPreedit(int in0, int in1, int in2, int in3, int in4, int in5) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5); + return asyncCallWithArgumentList(QLatin1String("mouseClickedOnPreedit"), argumentList); + } + + inline QDBusPendingReply<> processKeyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uint in6, uint in7, uint in8) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6) << QVariant::fromValue(in7) << QVariant::fromValue(in8); + return asyncCallWithArgumentList(QLatin1String("processKeyEvent"), argumentList); + } + + inline QDBusPendingReply<> setPreedit(const QString &in0, int in1) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); + return asyncCallWithArgumentList(QLatin1String("setPreedit"), argumentList); + } + + inline QDBusPendingReply<> showInputMethod() + { + QList<QVariant> argumentList; + return asyncCallWithArgumentList(QLatin1String("showInputMethod"), argumentList); + } + + inline QDBusPendingReply<> updateWidgetInformation(const QMap<QString, QVariant> &stateInformation, bool focusChanged) + { + QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), interface(), "updateWidgetInformation"); + + QDBusArgument map; + map.beginMap(QVariant::String, qMetaTypeId<QDBusVariant>()); + for (QMap<QString, QVariant>::ConstIterator it = stateInformation.constBegin(), end = stateInformation.constEnd(); + it != end; ++it) { + map.beginMapEntry(); + map << it.key(); + map << QDBusVariant(it.value()); + map.endMapEntry(); + } + map.endMap(); + + QList<QVariant> args; + args << QVariant::fromValue(map) << QVariant(focusChanged); + msg.setArguments(args); + return connection().asyncCall(msg); + } + + inline QDBusPendingReply<> reset() + { + return asyncCall(QLatin1String("reset")); + } + + inline QDBusPendingReply<> setCopyPasteState(bool in0, bool in1) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); + return asyncCallWithArgumentList(QLatin1String("setCopyPasteState"), argumentList); + } + +Q_SIGNALS: // SIGNALS +}; + +namespace com { + namespace meego { + namespace inputmethod { + typedef ::ComMeegoInputmethodUiserver1Interface uiserver1; + } + } +} +#endif |