diff options
author | Jan Arne Petersen <jpetersen@openismus.com> | 2012-01-27 13:07:48 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-29 14:42:06 +0100 |
commit | f91c39fe3aab8fae361559216494b283893a54fa (patch) | |
tree | 8a24caf14fc41d68d663dfb61b3251c25aba451c | |
parent | 36c057787f8a94abbfd3796e5039cf4e2db3775a (diff) |
Use per session socket to connect to maliit server
In newer versions of maliit a per session abstract socket for
communication between maliit server and input contexts is used. The
address is published over the D-Bus session bus as address property in
the org.maliit.Server.Address interface of the
/org/maliit/server/address object at the org.maliit.server service.
Fallback to old socket when org.maliit.server service is not available.
Task-number: QTBUG-22982
Change-Id: I1b2cdd0c804d3d625e18b4958dd60008ea289d91
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
4 files changed, 157 insertions, 1 deletions
diff --git a/src/plugins/platforminputcontexts/meego/meego.pro b/src/plugins/platforminputcontexts/meego/meego.pro index fad256e3dc..a9f1139717 100644 --- a/src/plugins/platforminputcontexts/meego/meego.pro +++ b/src/plugins/platforminputcontexts/meego/meego.pro @@ -6,11 +6,13 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforminputcontexts QT += dbus platformsupport-private SOURCES += $$PWD/qmeegoplatforminputcontext.cpp \ $$PWD/serverproxy.cpp \ + $$PWD/serveraddressproxy.cpp \ $$PWD/contextadaptor.cpp \ $$PWD/main.cpp HEADERS += $$PWD/qmeegoplatforminputcontext.h \ $$PWD/serverproxy.h \ + $$PWD/serveraddressproxy.h \ $$PWD/contextadaptor.h target.path += $$[QT_INSTALL_PLUGINS]/platforminputcontexts diff --git a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp index 607dad6b94..9b5da9d6d7 100644 --- a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp @@ -47,6 +47,7 @@ #include <qevent.h> #include <qscreen.h> +#include "serveraddressproxy.h" #include "serverproxy.h" #include "contextadaptor.h" @@ -126,6 +127,19 @@ static TextContentType contentTypeFromHints(Qt::InputMethodHints hints) 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 QMeeGoPlatformInputContextPrivate { public: @@ -517,7 +531,7 @@ bool QMeeGoPlatformInputContext::isInputPanelVisible() const } QMeeGoPlatformInputContextPrivate::QMeeGoPlatformInputContextPrivate(QMeeGoPlatformInputContext* qq) - : connection(QDBusConnection::connectToPeer(QStringLiteral("unix:path=/tmp/meego-im-uiserver/imserver_dbus"), QLatin1String("MeeGoIMProxy"))) + : connection(QDBusConnection::connectToPeer(maliitServerAddress(), QLatin1String("MeeGoIMProxy"))) , server(0) , adaptor(0) , visibility(InputPanelHidden) diff --git a/src/plugins/platforminputcontexts/meego/serveraddressproxy.cpp b/src/plugins/platforminputcontexts/meego/serveraddressproxy.cpp new file mode 100644 index 0000000000..fb34d3b0c1 --- /dev/null +++ b/src/plugins/platforminputcontexts/meego/serveraddressproxy.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** 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/meego/serveraddressproxy.h b/src/plugins/platforminputcontexts/meego/serveraddressproxy.h new file mode 100644 index 0000000000..1e52064157 --- /dev/null +++ b/src/plugins/platforminputcontexts/meego/serveraddressproxy.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** 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 |