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:
parent
36c057787f
commit
f91c39fe3a
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
{
|
||||
}
|
||||
|
84
src/plugins/platforminputcontexts/meego/serveraddressproxy.h
Normal file
84
src/plugins/platforminputcontexts/meego/serveraddressproxy.h
Normal 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
|
Loading…
Reference in New Issue
Block a user