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>
This commit is contained in:
Jan Arne Petersen 2012-01-27 13:07:48 +01:00 committed by Qt by Nokia
parent 36c057787f
commit f91c39fe3a
4 changed files with 157 additions and 1 deletions

View File

@ -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

View File

@ -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)

View File

@ -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()
{
}

View File

@ -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