|
|
a562b3 |
From 2d29f4ebc6f9a9c0d5d5807c662e64df56c8c711 Mon Sep 17 00:00:00 2001
|
|
|
a562b3 |
From: David Rosca <nowrep@gmail.com>
|
|
|
a562b3 |
Date: Mon, 29 Dec 2014 13:59:32 +0100
|
|
|
a562b3 |
Subject: [PATCH 05/20] kio_obexftp: Prefer "pcsuite" target for S60 devices
|
|
|
a562b3 |
|
|
|
a562b3 |
BUG: 342259
|
|
|
a562b3 |
---
|
|
|
a562b3 |
src/kio/obexftp/kio_obexftp.cpp | 61 ++++++++++++++++++++++++++++++-----------
|
|
|
a562b3 |
src/kio/obexftp/kio_obexftp.h | 4 +++
|
|
|
a562b3 |
2 files changed, 49 insertions(+), 16 deletions(-)
|
|
|
a562b3 |
|
|
|
a562b3 |
diff --git a/src/kio/obexftp/kio_obexftp.cpp b/src/kio/obexftp/kio_obexftp.cpp
|
|
|
a562b3 |
index a8c27e7..0783662 100644
|
|
|
a562b3 |
--- a/src/kio/obexftp/kio_obexftp.cpp
|
|
|
a562b3 |
+++ b/src/kio/obexftp/kio_obexftp.cpp
|
|
|
a562b3 |
@@ -35,6 +35,8 @@
|
|
|
a562b3 |
|
|
|
a562b3 |
#include <unistd.h>
|
|
|
a562b3 |
|
|
|
a562b3 |
+Q_DECLARE_METATYPE(DeviceInfo)
|
|
|
a562b3 |
+
|
|
|
a562b3 |
extern "C" int KDE_EXPORT kdemain(int argc, char **argv)
|
|
|
a562b3 |
{
|
|
|
a562b3 |
KAboutData about("kioobexftp", "bluedevil", ki18n("kioobexftp"), bluedevil_version);
|
|
|
a562b3 |
@@ -64,6 +66,7 @@ KioFtp::KioFtp(const QByteArray &pool, const QByteArray &app)
|
|
|
a562b3 |
m_timer = new QTimer();
|
|
|
a562b3 |
m_timer->setInterval(100);
|
|
|
a562b3 |
|
|
|
a562b3 |
+ qDBusRegisterMetaType<DeviceInfo>();
|
|
|
a562b3 |
qDBusRegisterMetaType<QVariantMapList>();
|
|
|
a562b3 |
m_kded = new org::kde::ObexFtp("org.kde.kded", "/modules/obexftpdaemon", QDBusConnection::sessionBus(), 0);
|
|
|
a562b3 |
}
|
|
|
a562b3 |
@@ -83,7 +86,36 @@ void KioFtp::launchProgressBar()
|
|
|
a562b3 |
|
|
|
a562b3 |
void KioFtp::connectToHost()
|
|
|
a562b3 |
{
|
|
|
a562b3 |
- QDBusPendingReply<QString> reply = m_kded->session(m_host, "ftp");
|
|
|
a562b3 |
+ // Prefer pcsuite target on S60 devices
|
|
|
a562b3 |
+ if (m_uuids.contains(QLatin1String("00005005-0000-1000-8000-0002EE000001"))) {
|
|
|
a562b3 |
+ if (createSession("pcsuite")) {
|
|
|
a562b3 |
+ return;
|
|
|
a562b3 |
+ }
|
|
|
a562b3 |
+ // Fallback to ftp
|
|
|
a562b3 |
+ }
|
|
|
a562b3 |
+
|
|
|
a562b3 |
+ createSession("ftp");
|
|
|
a562b3 |
+}
|
|
|
a562b3 |
+
|
|
|
a562b3 |
+bool KioFtp::testConnection()
|
|
|
a562b3 |
+{
|
|
|
a562b3 |
+ if (!m_kded->isOnline().value()) {
|
|
|
a562b3 |
+ error(KIO::ERR_SLAVE_DEFINED, i18n("Obexd service is not running."));
|
|
|
a562b3 |
+ return false;
|
|
|
a562b3 |
+ }
|
|
|
a562b3 |
+
|
|
|
a562b3 |
+ connectToHost();
|
|
|
a562b3 |
+
|
|
|
a562b3 |
+ if (!m_transfer) {
|
|
|
a562b3 |
+ error(KIO::ERR_COULD_NOT_CONNECT, m_host);
|
|
|
a562b3 |
+ return false;
|
|
|
a562b3 |
+ }
|
|
|
a562b3 |
+ return true;
|
|
|
a562b3 |
+}
|
|
|
a562b3 |
+
|
|
|
a562b3 |
+bool KioFtp::createSession(const QString &target)
|
|
|
a562b3 |
+{
|
|
|
a562b3 |
+ QDBusPendingReply<QString> reply = m_kded->session(m_host, target);
|
|
|
a562b3 |
reply.waitForFinished();
|
|
|
a562b3 |
|
|
|
a562b3 |
const QString &sessionPath = reply.value();
|
|
|
a562b3 |
@@ -95,7 +127,7 @@ void KioFtp::connectToHost()
|
|
|
a562b3 |
delete m_transfer;
|
|
|
a562b3 |
m_transfer = 0;
|
|
|
a562b3 |
m_sessionPath.clear();
|
|
|
a562b3 |
- return;
|
|
|
a562b3 |
+ return false;
|
|
|
a562b3 |
}
|
|
|
a562b3 |
|
|
|
a562b3 |
if (m_sessionPath != sessionPath) {
|
|
|
a562b3 |
@@ -104,24 +136,11 @@ void KioFtp::connectToHost()
|
|
|
a562b3 |
m_transfer = new org::bluez::obex::FileTransfer1("org.bluez.obex", sessionPath, QDBusConnection::sessionBus());
|
|
|
a562b3 |
m_sessionPath = sessionPath;
|
|
|
a562b3 |
}
|
|
|
a562b3 |
-}
|
|
|
a562b3 |
|
|
|
a562b3 |
-bool KioFtp::testConnection()
|
|
|
a562b3 |
-{
|
|
|
a562b3 |
- if (!m_kded->isOnline().value()) {
|
|
|
a562b3 |
- error(KIO::ERR_SLAVE_DEFINED, i18n("Obexd service is not running."));
|
|
|
a562b3 |
- return false;
|
|
|
a562b3 |
- }
|
|
|
a562b3 |
-
|
|
|
a562b3 |
- connectToHost();
|
|
|
a562b3 |
-
|
|
|
a562b3 |
- if (!m_transfer) {
|
|
|
a562b3 |
- error(KIO::ERR_COULD_NOT_CONNECT, m_host);
|
|
|
a562b3 |
- return false;
|
|
|
a562b3 |
- }
|
|
|
a562b3 |
return true;
|
|
|
a562b3 |
}
|
|
|
a562b3 |
|
|
|
a562b3 |
+
|
|
|
a562b3 |
void KioFtp::updateProcess()
|
|
|
a562b3 |
{
|
|
|
a562b3 |
if (m_counter == 49) {
|
|
|
a562b3 |
@@ -227,6 +246,16 @@ void KioFtp::setHost(const QString &host, quint16 port, const QString &user, con
|
|
|
a562b3 |
m_host = host;
|
|
|
a562b3 |
m_host = m_host.replace(QLatin1Char('-'), QLatin1Char(':')).toUpper();
|
|
|
a562b3 |
|
|
|
a562b3 |
+ QDBusMessage call = QDBusMessage::createMethodCall("org.kde.kded",
|
|
|
a562b3 |
+ "/modules/bluedevil",
|
|
|
a562b3 |
+ "org.kde.BlueDevil",
|
|
|
a562b3 |
+ "device");
|
|
|
a562b3 |
+ call << m_host;
|
|
|
a562b3 |
+ QDBusReply<DeviceInfo> reply = QDBusConnection::sessionBus().call(call);
|
|
|
a562b3 |
+ DeviceInfo info = reply.value();
|
|
|
a562b3 |
+
|
|
|
a562b3 |
+ m_uuids = info["UUIDs"];
|
|
|
a562b3 |
+
|
|
|
a562b3 |
infoMessage(i18n("Connecting to the device"));
|
|
|
a562b3 |
|
|
|
a562b3 |
connectToHost();
|
|
|
a562b3 |
diff --git a/src/kio/obexftp/kio_obexftp.h b/src/kio/obexftp/kio_obexftp.h
|
|
|
a562b3 |
index 6f22525..6fe0e56 100644
|
|
|
a562b3 |
--- a/src/kio/obexftp/kio_obexftp.h
|
|
|
a562b3 |
+++ b/src/kio/obexftp/kio_obexftp.h
|
|
|
a562b3 |
@@ -30,6 +30,8 @@
|
|
|
a562b3 |
|
|
|
a562b3 |
#include <kio/slavebase.h>
|
|
|
a562b3 |
|
|
|
a562b3 |
+typedef QMap<QString, QString> DeviceInfo;
|
|
|
a562b3 |
+
|
|
|
a562b3 |
class OrgBluezObexFileTransfer1Interface;
|
|
|
a562b3 |
class KioFtp
|
|
|
a562b3 |
: public QObject
|
|
|
a562b3 |
@@ -72,11 +74,13 @@ private:
|
|
|
a562b3 |
void launchProgressBar();
|
|
|
a562b3 |
void connectToHost();
|
|
|
a562b3 |
bool testConnection();
|
|
|
a562b3 |
+ bool createSession(const QString &target);
|
|
|
a562b3 |
|
|
|
a562b3 |
private:
|
|
|
a562b3 |
int m_counter;
|
|
|
a562b3 |
QMap<QString, KIO::UDSEntry> m_statMap;
|
|
|
a562b3 |
QString m_host;
|
|
|
a562b3 |
+ QString m_uuids;
|
|
|
a562b3 |
QString m_sessionPath;
|
|
|
a562b3 |
QTimer *m_timer;
|
|
|
a562b3 |
org::kde::ObexFtp *m_kded;
|
|
|
a562b3 |
--
|
|
|
a562b3 |
2.1.0
|
|
|
a562b3 |
|