[SCM] kdeconnect packaging branch, master, updated. debian/0.9g-1-1183-g9d69498
Maximiliano Curia
maxy at moszumanska.debian.org
Fri Oct 14 14:28:49 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/kdeconnect.git;a=commitdiff;h=2751554
The following commit has been merged in the master branch:
commit 27515546a0389ee35514a646b41e28f9a811b180
Author: Vineet Garg <grgvineet at gmail.com>
Date: Sat Jul 25 17:15:19 2015 +0530
Now per device per link type pairing handlers are there
---
core/backends/devicelink.h | 4 ++
core/backends/lan/landevicelink.cpp | 13 +++++-
core/backends/lan/landevicelink.h | 2 +
core/backends/lan/lanlinkprovider.cpp | 3 --
core/backends/lan/lanpairinghandler.cpp | 61 ++++++++++++++++++++-------
core/backends/lan/lanpairinghandler.h | 26 +++++++++---
core/backends/lan/server.h | 1 +
core/backends/linkprovider.h | 5 ---
core/backends/loopback/loopbackdevicelink.cpp | 10 +++++
core/backends/loopback/loopbackdevicelink.h | 2 +
core/backends/pairinghandler.cpp | 19 ++++++++-
core/backends/pairinghandler.h | 34 ++++++++++-----
core/device.cpp | 57 +++++++++++++------------
core/device.h | 10 +++--
plugins/sftp/mounter.h | 2 +
15 files changed, 172 insertions(+), 77 deletions(-)
diff --git a/core/backends/devicelink.h b/core/backends/devicelink.h
index 0ae6c00..e072507 100644
--- a/core/backends/devicelink.h
+++ b/core/backends/devicelink.h
@@ -25,6 +25,7 @@
#include <QtCrypto>
#include "core/networkpackage.h"
+#include "pairinghandler.h"
class NetworkPackage;
class LinkProvider;
@@ -38,9 +39,12 @@ public:
DeviceLink(const QString& deviceId, LinkProvider* parent);
virtual ~DeviceLink() { };
+ virtual QString name() = 0;
+
const QString& deviceId() { return mDeviceId; }
LinkProvider* provider() { return mLinkProvider; }
+ virtual PairingHandler* createPairingHandler(Device* device) = 0;
virtual bool sendPackage(NetworkPackage& np) = 0;
virtual bool sendPackageEncrypted(QCA::PublicKey& publicKey, NetworkPackage& np) = 0;
diff --git a/core/backends/lan/landevicelink.cpp b/core/backends/lan/landevicelink.cpp
index 8021396..3cd26cb 100644
--- a/core/backends/lan/landevicelink.cpp
+++ b/core/backends/lan/landevicelink.cpp
@@ -30,6 +30,7 @@
#include "uploadjob.h"
#include "downloadjob.h"
#include "socketlinereader.h"
+#include "lanpairinghandler.h"
LanDeviceLink::LanDeviceLink(const QString& deviceId, LinkProvider* parent, QSslSocket* socket)
: DeviceLink(deviceId, parent)
@@ -49,10 +50,20 @@ LanDeviceLink::LanDeviceLink(const QString& deviceId, LinkProvider* parent, QSsl
socket->setParent(this);
}
-void LanDeviceLink::setOnSsl(bool value) {
+QString LanDeviceLink::name()
+{
+ return "LanDeviceLink";
+}
+
+void LanDeviceLink::setOnSsl(bool value)
+{
onSsl = value;
}
+PairingHandler* LanDeviceLink::createPairingHandler(Device* device)
+{
+ return new LanPairingHandler(device);
+}
bool LanDeviceLink::sendPackageEncrypted(QCA::PublicKey& key, NetworkPackage& np)
{
diff --git a/core/backends/lan/landevicelink.h b/core/backends/lan/landevicelink.h
index d4507ec..4d59f92 100644
--- a/core/backends/lan/landevicelink.h
+++ b/core/backends/lan/landevicelink.h
@@ -38,7 +38,9 @@ class LanDeviceLink
public:
LanDeviceLink(const QString& deviceId, LinkProvider* parent, QSslSocket* socket);
+ virtual QString name();
void setOnSsl(bool value);
+ virtual PairingHandler* createPairingHandler(Device* device);
bool sendPackage(NetworkPackage& np);
bool sendPackageEncrypted(QCA::PublicKey& key, NetworkPackage& np);
UploadJob* sendPayload(NetworkPackage&);
diff --git a/core/backends/lan/lanlinkprovider.cpp b/core/backends/lan/lanlinkprovider.cpp
index bfab268..b1a059f 100644
--- a/core/backends/lan/lanlinkprovider.cpp
+++ b/core/backends/lan/lanlinkprovider.cpp
@@ -51,8 +51,6 @@ LanLinkProvider::LanLinkProvider()
mServer = new Server(this);
connect(mServer,SIGNAL(newConnection()),this, SLOT(newConnection()));
- m_pairingHandler = new LanPairingHandler();
-
//Detect when a network interface changes status, so we announce ourelves in the new network
QNetworkConfigurationManager* networkManager;
networkManager = new QNetworkConfigurationManager(this);
@@ -66,7 +64,6 @@ LanLinkProvider::LanLinkProvider()
LanLinkProvider::~LanLinkProvider()
{
- delete m_pairingHandler;
}
void LanLinkProvider::onStart()
diff --git a/core/backends/lan/lanpairinghandler.cpp b/core/backends/lan/lanpairinghandler.cpp
index 38464ad..82cc3c1 100644
--- a/core/backends/lan/lanpairinghandler.cpp
+++ b/core/backends/lan/lanpairinghandler.cpp
@@ -21,9 +21,15 @@
#include <kdeconnectconfig.h>
#include "lanpairinghandler.h"
#include "networkpackagetypes.h"
+#include "landevicelink.h"
-LanPairingHandler::LanPairingHandler()
+LanPairingHandler::LanPairingHandler(Device* device)
+ : PairingHandler(device)
{
+ m_pairingTimeout.setSingleShot(true);
+ m_pairingTimeout.setInterval(30 * 1000); //30 seconds of timeout
+ connect(&m_pairingTimeout, SIGNAL(timeout()),
+ this, SLOT(pairingTimeout()));
}
void LanPairingHandler::createPairPackage(NetworkPackage& np)
@@ -32,51 +38,74 @@ void LanPairingHandler::createPairPackage(NetworkPackage& np)
np.set("publicKey", KdeConnectConfig::instance()->publicKey().toPEM());
}
-bool LanPairingHandler::packageReceived(Device *device,const NetworkPackage& np)
+bool LanPairingHandler::packageReceived(const NetworkPackage& np)
{
+ m_pairingTimeout.stop();
//Retrieve their public key
QString keyString = np.get<QString>("publicKey");
- device->setPublicKey(QCA::RSAPublicKey::fromPEM(keyString));
- if (device->publicKey().isNull()) {
+ m_device->setPublicKey(QCA::RSAPublicKey::fromPEM(keyString));
+ if (m_device->publicKey().isNull()) {
return false;
}
return true;
}
-bool LanPairingHandler::requestPairing(Device *device)
+bool LanPairingHandler::requestPairing()
{
NetworkPackage np(PACKAGE_TYPE_PAIR);
createPairPackage(np);
- bool success = device->sendPackage(np);
+ bool success;
+ Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
+ success = dl->sendPackage(np);
+ }
+ m_pairingTimeout.start();
return success;
}
-bool LanPairingHandler::acceptPairing(Device *device)
+bool LanPairingHandler::acceptPairing()
{
NetworkPackage np(PACKAGE_TYPE_PAIR);
createPairPackage(np);
- bool success = device->sendPackage(np);
+ bool success;
+ Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
+ success = dl->sendPackage(np);
+ }
return success;
}
-void LanPairingHandler::rejectPairing(Device *device)
+void LanPairingHandler::rejectPairing()
{
// TODO : check status of reject pairing
NetworkPackage np(PACKAGE_TYPE_PAIR);
np.set("pair", false);
- device->sendPackage(np);
+ Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
+ dl->sendPackage(np);
+ }
}
-void LanPairingHandler::pairingDone(Device *device)
+void LanPairingHandler::pairingDone()
{
// No need to worry, if either of certificate or public key is null an empty qstring will be returned
- KdeConnectConfig::instance()->setDeviceProperty(device->id(), "key", device->publicKey().toPEM());
- KdeConnectConfig::instance()->setDeviceProperty(device->id(), "certificate", QString(device->certificate().toPem()));
+ KdeConnectConfig::instance()->setDeviceProperty(m_device->id(), "key", m_device->publicKey().toPEM());
+ KdeConnectConfig::instance()->setDeviceProperty(m_device->id(), "certificate", QString(m_device->certificate().toPem()));
+
+ m_pairingTimeout.stop(); // Just in case it is started
}
-void LanPairingHandler::unpair(Device *device) {
+void LanPairingHandler::unpair() {
NetworkPackage np(PACKAGE_TYPE_PAIR);
np.set("pair", false);
- bool success = device->sendPackage(np);
- Q_UNUSED(success);
+ Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
+ dl->sendPackage(np);
+ }
+}
+
+void LanPairingHandler::pairingTimeout()
+{
+ NetworkPackage np(PACKAGE_TYPE_PAIR);
+ np.set("pair", false);
+ Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
+ dl->sendPackage(np);
+ }
+ m_device->pairingTimeout();
}
diff --git a/core/backends/lan/lanpairinghandler.h b/core/backends/lan/lanpairinghandler.h
index e953f38..3651aef 100644
--- a/core/backends/lan/lanpairinghandler.h
+++ b/core/backends/lan/lanpairinghandler.h
@@ -21,22 +21,34 @@
#ifndef KDECONNECT_LANPAIRINGHANDLER_H
#define KDECONNECT_LANPAIRINGHANDLER_H
+#include <QTimer>
+#include <backends/devicelink.h>
+
+#include "../../device.h"
#include "../pairinghandler.h"
+// This class is used pairing related stuff. It has direct access to links and can directly send packages
class LanPairingHandler
: public PairingHandler
{
+
+private:
+ QTimer m_pairingTimeout;
+
+private Q_SLOTS:
+ void pairingTimeout();
+
public:
- LanPairingHandler();
+ LanPairingHandler(Device* device);
virtual ~LanPairingHandler() { }
virtual void createPairPackage(NetworkPackage& np) Q_DECL_OVERRIDE;
- virtual bool packageReceived(Device *device,const NetworkPackage& np) Q_DECL_OVERRIDE;
- virtual bool requestPairing(Device *device) Q_DECL_OVERRIDE;
- virtual bool acceptPairing(Device *device) Q_DECL_OVERRIDE;
- virtual void rejectPairing(Device *device) Q_DECL_OVERRIDE;
- virtual void pairingDone(Device *device) Q_DECL_OVERRIDE;
- virtual void unpair(Device* device) Q_DECL_OVERRIDE;
+ virtual bool packageReceived(const NetworkPackage& np) Q_DECL_OVERRIDE;
+ virtual bool requestPairing() Q_DECL_OVERRIDE;
+ virtual bool acceptPairing() Q_DECL_OVERRIDE;
+ virtual void rejectPairing() Q_DECL_OVERRIDE;
+ virtual void pairingDone() Q_DECL_OVERRIDE;
+ virtual void unpair() Q_DECL_OVERRIDE;
};
diff --git a/core/backends/lan/server.h b/core/backends/lan/server.h
index a4e04ba..e0cabe6 100644
--- a/core/backends/lan/server.h
+++ b/core/backends/lan/server.h
@@ -25,6 +25,7 @@
#include <QSslError>
#include <QtNetwork/qsslsocket.h>
+// This class overrides QTcpServer to bind QSslSocket to native socket descriptor instead of QTcpSocket
class Server
: public QTcpServer
{
diff --git a/core/backends/linkprovider.h b/core/backends/linkprovider.h
index 0907756..4b1cf83 100644
--- a/core/backends/linkprovider.h
+++ b/core/backends/linkprovider.h
@@ -46,11 +46,6 @@ public:
virtual QString name() = 0;
virtual int priority() = 0;
- PairingHandler* pairingHandler() { return m_pairingHandler;}
-
-protected:
- PairingHandler* m_pairingHandler;
-
public Q_SLOTS:
virtual void onStart() = 0;
diff --git a/core/backends/loopback/loopbackdevicelink.cpp b/core/backends/loopback/loopbackdevicelink.cpp
index 718c5b8..b95cffa 100644
--- a/core/backends/loopback/loopbackdevicelink.cpp
+++ b/core/backends/loopback/loopbackdevicelink.cpp
@@ -21,6 +21,7 @@
#include "loopbackdevicelink.h"
#include "loopbacklinkprovider.h"
+#include "../lan/lanpairinghandler.h"
LoopbackDeviceLink::LoopbackDeviceLink(const QString& deviceId, LoopbackLinkProvider* provider)
: DeviceLink(deviceId, provider)
@@ -28,6 +29,15 @@ LoopbackDeviceLink::LoopbackDeviceLink(const QString& deviceId, LoopbackLinkProv
}
+QString LoopbackDeviceLink::name()
+{
+ return "LoopbackDeviceLink";
+}
+
+PairingHandler* LoopbackDeviceLink::createPairingHandler(Device *device)
+{
+ return new LanPairingHandler(device);
+}
bool LoopbackDeviceLink::sendPackageEncrypted(QCA::PublicKey& key, NetworkPackage& input)
{
if (mPrivateKey.isNull() || key.isNull()) {
diff --git a/core/backends/loopback/loopbackdevicelink.h b/core/backends/loopback/loopbackdevicelink.h
index 9d1ae14..906456a 100644
--- a/core/backends/loopback/loopbackdevicelink.h
+++ b/core/backends/loopback/loopbackdevicelink.h
@@ -32,6 +32,8 @@ class LoopbackDeviceLink
public:
LoopbackDeviceLink(const QString& d, LoopbackLinkProvider* a);
+ virtual QString name();
+ virtual PairingHandler* createPairingHandler(Device* device);
virtual bool sendPackage(NetworkPackage& np);
virtual bool sendPackageEncrypted(QCA::PublicKey& publicKey, NetworkPackage& np);
diff --git a/core/backends/pairinghandler.cpp b/core/backends/pairinghandler.cpp
index 6a1eab7..38ad968 100644
--- a/core/backends/pairinghandler.cpp
+++ b/core/backends/pairinghandler.cpp
@@ -20,6 +20,21 @@
#include "pairinghandler.h"
-PairingHandler::PairingHandler() {
- //gcc complains if we don't add something to compile on a class with virtual functions
+PairingHandler::PairingHandler(Device* device)
+{
+ m_device = device;
+}
+
+void PairingHandler::addLink(DeviceLink *dl)
+{
+ m_deviceLinks.append(dl);
+}
+
+void PairingHandler::linkDestroyed(QObject* o)
+{
+ DeviceLink* dl = static_cast<DeviceLink*>(o);
+ m_deviceLinks.removeOne(dl);
+ if (m_deviceLinks.isEmpty()) {
+ Q_EMIT noLinkAvailable();
+ }
}
\ No newline at end of file
diff --git a/core/backends/pairinghandler.h b/core/backends/pairinghandler.h
index 8aece5c..7b4eea7 100644
--- a/core/backends/pairinghandler.h
+++ b/core/backends/pairinghandler.h
@@ -21,23 +21,35 @@
#ifndef KDECONNECT_PAIRINGHANDLER_H
#define KDECONNECT_PAIRINGHANDLER_H
+#include "device.h"
+#include "networkpackage.h"
+#include "devicelink.h"
-#include <networkpackage.h>
-#include <device.h>
-
-class PairingHandler {
+class PairingHandler : public QObject
+{
+ Q_OBJECT
+protected:
+ Device* m_device;
+ QVector<DeviceLink*> m_deviceLinks;
public:
- PairingHandler();
+ PairingHandler(Device* device);
virtual ~PairingHandler() { }
+ void addLink(DeviceLink* dl);
virtual void createPairPackage(NetworkPackage& np) = 0;
- virtual bool packageReceived(Device *device,const NetworkPackage& np) = 0;
- virtual bool requestPairing(Device *device) = 0;
- virtual bool acceptPairing(Device *device) = 0;
- virtual void rejectPairing(Device *device) = 0;
- virtual void pairingDone(Device *device) = 0;
- virtual void unpair(Device *device) = 0;
+ virtual bool packageReceived(const NetworkPackage& np) = 0;
+ virtual bool requestPairing() = 0;
+ virtual bool acceptPairing() = 0;
+ virtual void rejectPairing() = 0;
+ virtual void pairingDone() = 0;
+ virtual void unpair() = 0;
+
+public Q_SLOTS:
+ void linkDestroyed(QObject*);
+
+Q_SIGNALS:
+ void noLinkAvailable();
};
diff --git a/core/device.cpp b/core/device.cpp
index 327edfe..4c9c19a 100644
--- a/core/device.cpp
+++ b/core/device.cpp
@@ -58,11 +58,6 @@ Device::Device(QObject* parent, const QString& id)
m_deviceType = str2type(info.deviceType);
m_publicKey = QCA::RSAPublicKey::fromPEM(info.publicKey);
- m_pairingTimeout.setSingleShot(true);
- m_pairingTimeout.setInterval(30 * 1000); //30 seconds of timeout
- connect(&m_pairingTimeout, SIGNAL(timeout()),
- this, SLOT(pairingTimeout()));
-
//Register in bus
QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportScriptableContents | QDBusConnection::ExportAdaptors);
}
@@ -93,7 +88,7 @@ Device::Device(QObject* parent, const NetworkPackage& identityPackage, DeviceLin
Device::~Device()
{
-
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers) delete ph; // Delete all pairing handlers on deletion of device
}
bool Device::hasPlugin(const QString& name) const
@@ -209,8 +204,8 @@ void Device::requestPair()
m_pairStatus = Device::Requested;
//Send our own public key
- Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
- bool success = dl->provider()->pairingHandler()->requestPairing(this);
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers.values()) {
+ bool success = ph->requestPairing();
if (!success) {
m_pairStatus = Device::NotPaired;
@@ -222,15 +217,13 @@ void Device::requestPair()
if (m_pairStatus == Device::Paired) {
return;
}
-
- m_pairingTimeout.start();
}
void Device::unpair()
{
- Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
- dl->provider()->pairingHandler()->unpair(this);
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers.values()) {
+ ph->unpair();
}
unpairInternal();
@@ -249,9 +242,6 @@ void Device::unpairInternal()
void Device::pairingTimeout()
{
- NetworkPackage np(PACKAGE_TYPE_PAIR);
- np.set("pair", false);
- sendPackage(np);
m_pairStatus = Device::NotPaired;
Q_EMIT pairingFailed(i18n("Timed out"));
}
@@ -302,6 +292,15 @@ void Device::addLink(const NetworkPackage& identityPackage, DeviceLink* link)
plugin->connected();
}
}
+
+ // One pairing handler per type of device link, so check if there is already a pairing handler of same type, if not add it to the list
+ if (!m_pairingHandlers.contains(link->name())) {
+ PairingHandler* pairingHandler = link->createPairingHandler(this);
+ m_pairingHandlers.insert(link->name(), pairingHandler);
+ connect(m_pairingHandlers[link->name()], SIGNAL(noLinkAvailable()), this, SLOT(destroyPairingHandler()));
+ }
+ m_pairingHandlers[link->name()]->addLink(link);
+ connect(link, SIGNAL(destroyed(QObject*)), m_pairingHandlers[link->name()], SLOT(linkDestroyed(QObject*)));
}
void Device::linkDestroyed(QObject* o)
@@ -321,6 +320,13 @@ void Device::removeLink(DeviceLink* link)
}
}
+void Device::destroyPairingHandler()
+{
+ PairingHandler* ph = qobject_cast<PairingHandler*>(sender());
+ m_pairingHandlers.remove(m_pairingHandlers.key(ph));
+ delete ph;
+}
+
bool Device::sendPackage(NetworkPackage& np)
{
if (np.type() != PACKAGE_TYPE_PAIR && isPaired()) {
@@ -349,12 +355,11 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
qCDebug(KDECONNECT_CORE) << "Already" << (wantsPair? "paired":"unpaired");
if (m_pairStatus == Device::Requested) {
m_pairStatus = Device::NotPaired;
- m_pairingTimeout.stop();
Q_EMIT pairingFailed(i18n("Canceled by other peer"));
} else if (m_pairStatus == Device::Paired) {
// If other request's pairing, and we have pair status Paired, send accept pairing
- Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
- dl->provider()->pairingHandler()->acceptPairing(this);
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers.values()) {
+ ph->acceptPairing();
}
}
return;
@@ -362,12 +367,11 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
if (wantsPair) {
- Q_FOREACH(DeviceLink* dl, m_deviceLinks) {
- bool success = dl->provider()->pairingHandler()->packageReceived(this, np);
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers.values()) {
+ bool success = ph->packageReceived(np);
if (!success) {
if (m_pairStatus == Device::Requested) {
m_pairStatus = Device::NotPaired;
- m_pairingTimeout.stop();
}
Q_EMIT pairingFailed(i18n("Received incorrect key"));
return;
@@ -395,7 +399,6 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
m_pairStatus = Device::NotPaired;
if (prevPairStatus == Device::Requested) {
- m_pairingTimeout.stop();
Q_EMIT pairingFailed(i18n("Canceled by other peer"));
} else if (prevPairStatus == Device::Paired) {
unpairInternal();
@@ -431,8 +434,8 @@ void Device::rejectPairing()
m_pairStatus = Device::NotPaired;
- Q_FOREACH(DeviceLink* link, m_deviceLinks) {
- link->provider()->pairingHandler()->rejectPairing(this);
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers.values()) {
+ ph->rejectPairing();
}
Q_EMIT pairingFailed(i18n("Canceled by the user"));
@@ -446,8 +449,8 @@ void Device::acceptPairing()
qCDebug(KDECONNECT_CORE) << "Accepted pairing";
bool success;
- Q_FOREACH(DeviceLink* link, m_deviceLinks) {
- success = link->provider()->pairingHandler()->acceptPairing(this);
+ Q_FOREACH(PairingHandler* ph, m_pairingHandlers.values()) {
+ success = ph->acceptPairing();
}
if (!success) {
@@ -466,8 +469,6 @@ void Device::setAsPaired()
m_pairStatus = Device::Paired;
- m_pairingTimeout.stop(); //Just in case it was started
-
//Save device info in the config
KdeConnectConfig::instance()->addTrustedDevice(id(), name(), type2str(m_deviceType), m_publicKey.toPEM(), QString::fromLatin1(m_certificate.toPem()));
diff --git a/core/device.h b/core/device.h
index 4416b1f..1c88dfd 100644
--- a/core/device.h
+++ b/core/device.h
@@ -26,14 +26,14 @@
#include <QVector>
#include <QSet>
#include <QSslKey>
-#include <QTimer>
#include <QtCrypto>
-#include <QtNetwork/qsslcertificate.h>
+#include <QSslCertificate>
#include "networkpackage.h"
class DeviceLink;
class KdeConnectPlugin;
+class PairingHandler;
class KDECONNECTCORE_EXPORT Device
: public QObject
@@ -109,6 +109,8 @@ public:
Q_SCRIPTABLE QString pluginsConfigFile() const;
+ void pairingTimeout();
+
public Q_SLOTS:
///sends a @p np package to the device
virtual bool sendPackage(NetworkPackage& np);
@@ -124,7 +126,7 @@ public Q_SLOTS:
private Q_SLOTS:
void privateReceivedPackage(const NetworkPackage& np);
void linkDestroyed(QObject* o);
- void pairingTimeout();
+ void destroyPairingHandler();
Q_SIGNALS:
Q_SCRIPTABLE void pluginsChanged();
@@ -154,10 +156,10 @@ private: //Fields (TODO: dPointer!)
QVector<DeviceLink*> m_deviceLinks;
QHash<QString, KdeConnectPlugin*> m_plugins;
+ QMap<QString, PairingHandler*> m_pairingHandlers;
QMultiMap<QString, KdeConnectPlugin*> m_pluginsByIncomingInterface;
QMultiMap<QString, KdeConnectPlugin*> m_pluginsByOutgoingInterface;
- QTimer m_pairingTimeout;
const QSet<QString> m_incomingCapabilities;
const QSet<QString> m_outgoingCapabilities;
diff --git a/plugins/sftp/mounter.h b/plugins/sftp/mounter.h
index 76ac860..41a7cbf 100644
--- a/plugins/sftp/mounter.h
+++ b/plugins/sftp/mounter.h
@@ -24,6 +24,8 @@
#include <KJob>
#include <KProcess>
+#include <QTimer>
+
#include "sftpplugin.h"
class Mounter
--
kdeconnect packaging
More information about the pkg-kde-commits
mailing list