OSDN Git Service

bluedevil: sync with upstream (v2.1.1)
authorIvailo Monev <xakepa10@gmail.com>
Thu, 23 Apr 2015 21:21:55 +0000 (21:21 +0000)
committerIvailo Monev <xakepa10@gmail.com>
Thu, 23 Apr 2015 21:21:55 +0000 (21:21 +0000)
24 files changed:
bluedevil/CMakeLists.txt
bluedevil/src/bluedevil-mime.xml
bluedevil/src/bluedevil.notifyrc
bluedevil/src/daemon/kded/BlueDevilDaemon.cpp
bluedevil/src/daemon/kded/filereceiver/receivefilejob.cpp
bluedevil/src/kcmodule/bluedeviladapters.desktop
bluedevil/src/kcmodule/bluedevildevices.desktop
bluedevil/src/kcmodule/bluedeviltransfer.desktop
bluedevil/src/kio/bluetooth/CMakeLists.txt
bluedevil/src/kio/obexftp/daemon/CMakeLists.txt
bluedevil/src/kio/obexftp/daemon/ObexFtpDaemon.cpp
bluedevil/src/kio/obexftp/daemon/ObexFtpDaemon.h
bluedevil/src/kio/obexftp/daemon/createsessionjob.cpp
bluedevil/src/kio/obexftp/daemon/createsessionjob.h
bluedevil/src/kio/obexftp/kded_obexftp.xml
bluedevil/src/kio/obexftp/kio_obexftp.cpp
bluedevil/src/kio/obexftp/kio_obexftp.h
bluedevil/src/wizard/CMakeLists.txt
bluedevil/src/wizard/bluewizard.cpp
bluedevil/src/wizard/bluewizard.h
bluedevil/src/wizard/pages/fail.cpp
bluedevil/src/wizard/pages/fail.ui
bluedevil/src/wizard/pages/nopairing.cpp
bluedevil/src/wizard/pages/nopairing.h

index 5e3a4a3..a55aad5 100644 (file)
@@ -4,7 +4,7 @@ find_package(KDE4 4.14.3 REQUIRED)
 
 set(CMAKE_BLUEDEVIL_VERSION_MAJOR 2)
 set(CMAKE_BLUEDEVIL_VERSION_MINOR 1)
-set(CMAKE_BLUEDEVIL_VERSION_PATCH 0)
+set(CMAKE_BLUEDEVIL_VERSION_PATCH 1)
 set(CMAKE_BLUEDEVIL_VERSION_STRING  "${CMAKE_BLUEDEVIL_VERSION_MAJOR}.${CMAKE_BLUEDEVIL_VERSION_MINOR}.${CMAKE_BLUEDEVIL_VERSION_PATCH}")
 configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h)
 
index 567e3fe..dc4af15 100644 (file)
@@ -17,6 +17,7 @@ Notes:
     <sub-class-of type="inode/directory"/>
     <generic-icon name="video-display"/>
     <comment>Known Device</comment>
+    <comment xml:lang="bs">Poznat uređaj</comment>
     <comment xml:lang="ca">Dispositiu conegut</comment>
     <comment xml:lang="cs">Známé zařízení</comment>
     <comment xml:lang="da">Kendt enhed</comment>
@@ -25,6 +26,7 @@ Notes:
     <comment xml:lang="en_GB">Known Device</comment>
     <comment xml:lang="es">Dispositivo conocido</comment>
     <comment xml:lang="fi">Tunnettu laite</comment>
+    <comment xml:lang="fr">Périphérique connu</comment>
     <comment xml:lang="it">Dispositivo conosciuto</comment>
     <comment xml:lang="nl">Bekend apparaat</comment>
     <comment xml:lang="pl">Znane urządzenie</comment>
@@ -36,12 +38,15 @@ Notes:
     <comment xml:lang="sr@ijekavian">познати уређај</comment>
     <comment xml:lang="sr@ijekavianlatin">poznati uređaj</comment>
     <comment xml:lang="sr@latin">poznati uređaj</comment>
+    <comment xml:lang="sv">Känd enhet</comment>
     <comment xml:lang="uk">Відомий пристрій</comment>
+    <comment xml:lang="zh_TW">已知的裝置</comment>
   </mime-type>
   <mime-type type="inode/vnd.kde.bluedevil.device.discovered">
     <sub-class-of type="inode/vnd.kde.bluedevil.device"/>
     <generic-icon name="video-display"/>
     <comment>Discovered Device</comment>
+    <comment xml:lang="bs">Otkriven uređaj</comment>
     <comment xml:lang="ca">Dispositiu descobert</comment>
     <comment xml:lang="cs">Objevené zařízení</comment>
     <comment xml:lang="da">Opdaget enhed</comment>
@@ -50,6 +55,7 @@ Notes:
     <comment xml:lang="en_GB">Discovered Device</comment>
     <comment xml:lang="es">Dispositivo descubierto</comment>
     <comment xml:lang="fi">Löydetty palvelu</comment>
+    <comment xml:lang="fr">Périphérique découvert</comment>
     <comment xml:lang="it">Dispositivo scoperto</comment>
     <comment xml:lang="nl">Gevonden apparaat</comment>
     <comment xml:lang="pl">Odkryte urządzenie</comment>
@@ -61,12 +67,15 @@ Notes:
     <comment xml:lang="sr@ijekavian">откривени уређај</comment>
     <comment xml:lang="sr@ijekavianlatin">otkriveni uređaj</comment>
     <comment xml:lang="sr@latin">otkriveni uređaj</comment>
+    <comment xml:lang="sv">Upptäckt enhet</comment>
     <comment xml:lang="uk">Виявлений пристрій</comment>
+    <comment xml:lang="zh_TW">已發現的裝置</comment>
   </mime-type>
   <mime-type type="inode/vnd.kde.bluedevil.service">
     <sub-class-of type="inode/directory"/>
     <generic-icon name="preferences-system-bluetooth"/>
     <comment>Service</comment>
+    <comment xml:lang="bs">Usluga</comment>
     <comment xml:lang="ca">Servei</comment>
     <comment xml:lang="cs">Služba</comment>
     <comment xml:lang="da">Tjeneste</comment>
@@ -75,6 +84,7 @@ Notes:
     <comment xml:lang="en_GB">Service</comment>
     <comment xml:lang="es">Servicio</comment>
     <comment xml:lang="fi">Palvelu</comment>
+    <comment xml:lang="fr">Service</comment>
     <comment xml:lang="it">Servizio</comment>
     <comment xml:lang="nl">Service</comment>
     <comment xml:lang="pl">Usługa</comment>
@@ -86,10 +96,13 @@ Notes:
     <comment xml:lang="sr@ijekavian">сервис</comment>
     <comment xml:lang="sr@ijekavianlatin">servis</comment>
     <comment xml:lang="sr@latin">servis</comment>
+    <comment xml:lang="sv">Tjänst</comment>
     <comment xml:lang="uk">Служба</comment>
+    <comment xml:lang="zh_TW">服務</comment>
   </mime-type>
   <mime-type type="application/vnd.kde.bluedevil-audio">
     <comment>Service</comment>
+    <comment xml:lang="bs">Usluga</comment>
     <comment xml:lang="ca">Servei</comment>
     <comment xml:lang="cs">Služba</comment>
     <comment xml:lang="da">Tjeneste</comment>
@@ -98,6 +111,7 @@ Notes:
     <comment xml:lang="en_GB">Service</comment>
     <comment xml:lang="es">Servicio</comment>
     <comment xml:lang="fi">Palvelu</comment>
+    <comment xml:lang="fr">Service</comment>
     <comment xml:lang="it">Servizio</comment>
     <comment xml:lang="nl">Service</comment>
     <comment xml:lang="pl">Usługa</comment>
@@ -109,10 +123,13 @@ Notes:
     <comment xml:lang="sr@ijekavian">сервис</comment>
     <comment xml:lang="sr@ijekavianlatin">servis</comment>
     <comment xml:lang="sr@latin">servis</comment>
+    <comment xml:lang="sv">Tjänst</comment>
     <comment xml:lang="uk">Служба</comment>
+    <comment xml:lang="zh_TW">服務</comment>
   </mime-type>
   <mime-type type="application/vnd.kde.bluedevil-network-panu">
     <comment>Service</comment>
+    <comment xml:lang="bs">Usluga</comment>
     <comment xml:lang="ca">Servei</comment>
     <comment xml:lang="cs">Služba</comment>
     <comment xml:lang="da">Tjeneste</comment>
@@ -121,6 +138,7 @@ Notes:
     <comment xml:lang="en_GB">Service</comment>
     <comment xml:lang="es">Servicio</comment>
     <comment xml:lang="fi">Palvelu</comment>
+    <comment xml:lang="fr">Service</comment>
     <comment xml:lang="it">Servizio</comment>
     <comment xml:lang="nl">Service</comment>
     <comment xml:lang="pl">Usługa</comment>
@@ -132,10 +150,13 @@ Notes:
     <comment xml:lang="sr@ijekavian">сервис</comment>
     <comment xml:lang="sr@ijekavianlatin">servis</comment>
     <comment xml:lang="sr@latin">servis</comment>
+    <comment xml:lang="sv">Tjänst</comment>
     <comment xml:lang="uk">Служба</comment>
+    <comment xml:lang="zh_TW">服務</comment>
   </mime-type>
   <mime-type type="application/vnd.kde.bluedevil-network-dun">
     <comment>Service</comment>
+    <comment xml:lang="bs">Usluga</comment>
     <comment xml:lang="ca">Servei</comment>
     <comment xml:lang="cs">Služba</comment>
     <comment xml:lang="da">Tjeneste</comment>
@@ -144,6 +165,7 @@ Notes:
     <comment xml:lang="en_GB">Service</comment>
     <comment xml:lang="es">Servicio</comment>
     <comment xml:lang="fi">Palvelu</comment>
+    <comment xml:lang="fr">Service</comment>
     <comment xml:lang="it">Servizio</comment>
     <comment xml:lang="nl">Service</comment>
     <comment xml:lang="pl">Usługa</comment>
@@ -155,10 +177,13 @@ Notes:
     <comment xml:lang="sr@ijekavian">сервис</comment>
     <comment xml:lang="sr@ijekavianlatin">servis</comment>
     <comment xml:lang="sr@latin">servis</comment>
+    <comment xml:lang="sv">Tjänst</comment>
     <comment xml:lang="uk">Служба</comment>
+    <comment xml:lang="zh_TW">服務</comment>
   </mime-type>
   <mime-type type="application/vnd.kde.bluedevil-sendfile">
       <comment>Service</comment>
+      <comment xml:lang="bs">Usluga</comment>
       <comment xml:lang="ca">Servei</comment>
       <comment xml:lang="cs">Služba</comment>
       <comment xml:lang="da">Tjeneste</comment>
@@ -167,6 +192,7 @@ Notes:
       <comment xml:lang="en_GB">Service</comment>
       <comment xml:lang="es">Servicio</comment>
       <comment xml:lang="fi">Palvelu</comment>
+      <comment xml:lang="fr">Service</comment>
       <comment xml:lang="it">Servizio</comment>
       <comment xml:lang="nl">Service</comment>
       <comment xml:lang="pl">Usługa</comment>
@@ -178,6 +204,8 @@ Notes:
       <comment xml:lang="sr@ijekavian">сервис</comment>
       <comment xml:lang="sr@ijekavianlatin">servis</comment>
       <comment xml:lang="sr@latin">servis</comment>
+      <comment xml:lang="sv">Tjänst</comment>
       <comment xml:lang="uk">Служба</comment>
+      <comment xml:lang="zh_TW">服務</comment>
   </mime-type>
 </mime-info>
index 0fcc564..8a70384 100644 (file)
@@ -249,7 +249,7 @@ Comment[sr@ijekavianlatin]=Režim Bluetootha će biti promijenjen (npr. s normal
 Comment[sr@latin]=Režim Bluetootha će biti promenjen (npr. s normalnog na letni)
 Comment[sv]=Blåtandläget ska just ändras (exempelvis från normal till flygning)
 Comment[th]=โหมดของบลูทูทจะถูกเปลี่ยนโหมด (เช่น จากโหมดปกติเป็นโหมดไฟลท์ เป็นต้น)
-Comment[tr]=Bluetooth kipi değiştirilmek üzere (örn. normal -> uçuş modu)
+Comment[tr]=Bluetooth kipi değiştirilmek üzere (örn. normal -> uçuş kipi)
 Comment[ug]=كۆكچىش ھالىتى ئۆزگەرتىلدى(مەسىلەن: نورمال -› ئۈچۈشقا)
 Comment[uk]=Зміна режиму роботи Bluetooth (наприклад, зі звичайного на автономний)
 Comment[x-test]=xxBluetooth mode is about to be changed (normal to flight for example)xx
index 12efc73..1a4c250 100644 (file)
@@ -375,7 +375,6 @@ void BlueDevilDaemon::monolithicQuit(QDBusPendingCallWatcher* watcher)
     QDBusPendingReply<void> reply = *watcher;
     if (reply.isError()) {
         qDebug() << "Error response: " << reply.error().message();
-        killMonolithic();
     }
 }
 
index daf6c57..1de755a 100644 (file)
@@ -85,20 +85,31 @@ void ReceiveFileJob::init()
             SLOT(transferPropertiesChanged(QString,QVariantMap,QStringList)));
 
     m_session = new org::bluez::obex::Session1("org.bluez.obex", m_transfer->session().path(), QDBusConnection::sessionBus(), this);
-    kDebug(dblue()) << m_session->destination();
 
-    Device* device = Manager::self()->usableAdapter()->deviceForAddress(m_session->destination());
-    kDebug(dblue()) << device;
+    kDebug(dblue()) << "Source:" << m_session->source();
+    kDebug(dblue()) << "Destination:" << m_session->destination();
+
+    Device *device = 0;
+    bool isDeviceTrusted = false;
+
+    Q_FOREACH (Adapter *adapter, Manager::self()->adapters()) {
+        if (adapter->address() == m_session->source()) {
+            device = adapter->deviceForAddress(m_session->destination());
+            break;
+        }
+    }
 
     m_deviceName = m_session->destination();
+
     if (device) {
         kDebug(dblue()) << device->name();
         m_deviceName = device->name();
+        isDeviceTrusted = device->isTrusted();
     }
 
     FileReceiverSettings::self()->readConfig();
     kDebug(dblue()) << "Auto Accept: " << FileReceiverSettings::self()->autoAccept();
-    if (FileReceiverSettings::self()->autoAccept() == 1 && device->isTrusted()) {
+    if (FileReceiverSettings::self()->autoAccept() == 1 && isDeviceTrusted) {
         slotAccept();
         return;
     } else if (FileReceiverSettings::self()->autoAccept() == 2) {
index edb3628..88a1555 100644 (file)
@@ -139,7 +139,7 @@ X-KDE-Keywords[sr@latin]=Network,Connectivity,Bluetooth,mreža,povezivanje,Bluet
 X-KDE-Keywords[sv]=Nätverk,Anslutningar,Blåtand
 X-KDE-Keywords[tr]=Ağ, Bağlanılabilirlik, Bluetooth
 X-KDE-Keywords[uk]=Network,Connectivity,Bluetooth,мережа,з’єднання,з'єднання
-X-KDE-Keywords[x-test]=xxNetwork,Connectivity,Bluetoothxx
+X-KDE-Keywords[x-test]=xxNetworkxx,xxConnectivityxx,xxBluetoothxx
 X-KDE-Keywords[zh_CN]=Network,Connectivity,Bluetooth,网络,连接,蓝牙
 X-KDE-Keywords[zh_TW]=Network,Connectivity,Bluetooth
 
index bb9fe57..6b2f448 100644 (file)
@@ -145,7 +145,7 @@ X-KDE-Keywords[sr@latin]=Network,Connectivity,Bluetooth,mreža,povezivanje,Bluet
 X-KDE-Keywords[sv]=Nätverk,Anslutningar,Blåtand
 X-KDE-Keywords[tr]=Ağ, Bağlanılabilirlik, Bluetooth
 X-KDE-Keywords[uk]=Network,Connectivity,Bluetooth,мережа,з’єднання,з'єднання
-X-KDE-Keywords[x-test]=xxNetwork,Connectivity,Bluetoothxx
+X-KDE-Keywords[x-test]=xxNetworkxx,xxConnectivityxx,xxBluetoothxx
 X-KDE-Keywords[zh_CN]=Network,Connectivity,Bluetooth,网络,连接,蓝牙
 X-KDE-Keywords[zh_TW]=Network,Connectivity,Bluetooth
 
index 6559ad6..1aab38d 100644 (file)
@@ -138,7 +138,7 @@ X-KDE-Keywords[sr@latin]=Network,Connectivity,Bluetooth,mreža,povezivanje,Bluet
 X-KDE-Keywords[sv]=Nätverk,Anslutningar,Blåtand
 X-KDE-Keywords[tr]=Ağ, Bağlanılabilirlik, Bluetooth
 X-KDE-Keywords[uk]=Network,Connectivity,Bluetooth,мережа,з’єднання,з'єднання
-X-KDE-Keywords[x-test]=xxNetwork,Connectivity,Bluetoothxx
+X-KDE-Keywords[x-test]=xxNetworkxx,xxConnectivityxx,xxBluetoothxx
 X-KDE-Keywords[zh_CN]=Network,Connectivity,Bluetooth,网络,连接,蓝牙
 X-KDE-Keywords[zh_TW]=Network,Connectivity,Bluetooth
 
index 85820bc..d407c0b 100644 (file)
@@ -11,7 +11,6 @@ target_link_libraries(kio_bluetooth
   ${KDE4_KDECORE_LIBS}
   ${KDE4_KIO_LIBRARY}
   ${KDE4_KDEUI_LIBS}
-  bluedevil
 )
 
 ########### install files ###############
index 3dcc000..699e1d4 100644 (file)
@@ -18,7 +18,6 @@ target_link_libraries(kded_obexftpdaemon
     ${KDE4_KDECORE_LIBS}
     ${KDE4_KDEUI_LIBS}
     ${KDE4_KFILE_LIBS}
-    bluedevil
 )
 
 install(TARGETS kded_obexftpdaemon DESTINATION ${PLUGIN_INSTALL_DIR})
index 782f8d3..d811291 100644 (file)
@@ -123,15 +123,13 @@ bool ObexFtpDaemon::isOnline()
     return d->m_status == Private::Online;
 }
 
-QString ObexFtpDaemon::session(QString address, const QDBusMessage& msg)
+QString ObexFtpDaemon::session(const QString &address, const QString &target, const QDBusMessage& msg)
 {
-    address.replace("-", ":");
-
     if (d->m_sessionMap.contains(address)) {
         return d->m_sessionMap[address];
     }
 
-    kDebug(dobex()) << "Creating session for" << address;
+    kDebug(dobex()) << "Creating session for" << address << "target" << target;
 
     // At this point we always want delayed reply
     msg.setDelayedReply(true);
@@ -141,7 +139,7 @@ QString ObexFtpDaemon::session(QString address, const QDBusMessage& msg)
         return QString();
     }
 
-    CreateSessionJob *job = new CreateSessionJob(address, msg);
+    CreateSessionJob *job = new CreateSessionJob(address, target, msg);
     connect(job, SIGNAL(finished(KJob*)), SLOT(sessionCreated(KJob*)));
     job->start();
 
index d06b391..e58a74d 100644 (file)
@@ -39,7 +39,7 @@ public:
 
 public Q_SLOTS:
     Q_SCRIPTABLE bool isOnline();
-    Q_SCRIPTABLE QString session(QString address, const QDBusMessage &msg);
+    Q_SCRIPTABLE QString session(const QString &address, const QString &target, const QDBusMessage &msg);
     Q_SCRIPTABLE bool cancelTransfer(const QString &transfer);
 
 private Q_SLOTS:
index e84f8ee..883fe11 100644 (file)
 #include <KDebug>
 
 // class
-CreateSessionJob::CreateSessionJob(const QString& address, const QDBusMessage& msg, QObject* parent)
+CreateSessionJob::CreateSessionJob(const QString &address, const QString &target, const QDBusMessage &msg, QObject *parent)
     : KJob(parent)
     , m_address(address)
+    , m_target(target)
     , m_client(0)
 {
     m_messages.append(msg);
@@ -53,7 +54,7 @@ void CreateSessionJob::addMessage(const QDBusMessage& msg)
     m_messages.append(msg);
 }
 
-const QList< QDBusMessage > CreateSessionJob::messages() const
+const QList<QDBusMessage> CreateSessionJob::messages() const
 {
     return m_messages;
 }
@@ -62,7 +63,7 @@ void CreateSessionJob::createSession()
 {
     kDebug(dobex());
     QVariantMap args;
-    args["Target"] = "ftp";
+    args["Target"] = m_target;
     m_client = new OrgBluezObexClient1Interface("org.bluez.obex",
                                                 "/org/bluez/obex",
                                                 QDBusConnection::sessionBus(), this);
index a457b02..667384b 100644 (file)
@@ -29,7 +29,7 @@ class CreateSessionJob : public KJob
 {
     Q_OBJECT
 public:
-    explicit CreateSessionJob(const QString &address, const QDBusMessage &msg, QObject* parent = 0);
+    explicit CreateSessionJob(const QString &address, const QString &target, const QDBusMessage &msg, QObject *parent = 0);
 
     virtual void start();
     QString path();
@@ -44,9 +44,10 @@ private Q_SLOTS:
 private:
     QString m_path;
     QString m_address;
+    QString m_target;
     QList<QDBusMessage> m_messages;
 
     OrgBluezObexClient1Interface* m_client;
 };
 
-#endif //CREATE_SESSION_JOB_H
\ No newline at end of file
+#endif //CREATE_SESSION_JOB_H
index ec718e6..06e3b14 100644 (file)
@@ -8,6 +8,7 @@
     </method>
     <method name="session">
       <arg name="address" type="s" direction="in"/>
+      <arg name="target" type="s" direction="in"/>
       <arg name="sessionPath" type="s" direction="out"/>
     </method>
     <method name="cancelTransfer">
index 5ae5920..82ce5cd 100644 (file)
@@ -35,6 +35,8 @@
 
 #include <unistd.h>
 
+Q_DECLARE_METATYPE(DeviceInfo)
+
 extern "C" int KDE_EXPORT kdemain(int argc, char **argv)
 {
     KAboutData about("kioobexftp", "bluedevil", ki18n("kioobexftp"), bluedevil_version);
@@ -64,6 +66,7 @@ KioFtp::KioFtp(const QByteArray &pool, const QByteArray &app)
     m_timer = new QTimer();
     m_timer->setInterval(100);
 
+    qDBusRegisterMetaType<DeviceInfo>();
     qDBusRegisterMetaType<QVariantMapList>();
     m_kded = new org::kde::ObexFtp("org.kde.kded", "/modules/obexftpdaemon", QDBusConnection::sessionBus(), 0);
 }
@@ -83,7 +86,36 @@ void KioFtp::launchProgressBar()
 
 void KioFtp::connectToHost()
 {
-    QDBusPendingReply<QString> reply = m_kded->session(m_host);
+    // Prefer pcsuite target on S60 devices
+    if (m_uuids.contains(QLatin1String("00005005-0000-1000-8000-0002EE000001"))) {
+        if (createSession("pcsuite")) {
+            return;
+        }
+        // Fallback to ftp
+    }
+
+    createSession("ftp");
+}
+
+bool KioFtp::testConnection()
+{
+    if (!m_kded->isOnline().value()) {
+        error(KIO::ERR_SLAVE_DEFINED, i18n("Obexd service is not running."));
+        return false;
+    }
+
+    connectToHost();
+
+    if (!m_transfer) {
+        error(KIO::ERR_COULD_NOT_CONNECT, m_host);
+        return false;
+    }
+    return true;
+}
+
+bool KioFtp::createSession(const QString &target)
+{
+    QDBusPendingReply<QString> reply = m_kded->session(m_host, target);
     reply.waitForFinished();
 
     const QString &sessionPath = reply.value();
@@ -95,7 +127,7 @@ void KioFtp::connectToHost()
         delete m_transfer;
         m_transfer = 0;
         m_sessionPath.clear();
-        return;
+        return false;
     }
 
     if (m_sessionPath != sessionPath) {
@@ -104,24 +136,11 @@ void KioFtp::connectToHost()
         m_transfer = new org::bluez::obex::FileTransfer1("org.bluez.obex", sessionPath, QDBusConnection::sessionBus());
         m_sessionPath = sessionPath;
     }
-}
-
-bool KioFtp::testConnection()
-{
-    if (!m_kded->isOnline().value()) {
-        error(KIO::ERR_SLAVE_DEFINED, i18n("Obexd service is not running."));
-        return false;
-    }
-
-    connectToHost();
 
-    if (!m_transfer) {
-        error(KIO::ERR_COULD_NOT_CONNECT, m_host);
-        return false;
-    }
     return true;
 }
 
+
 void KioFtp::updateProcess()
 {
     if (m_counter == 49) {
@@ -176,6 +195,7 @@ void KioFtp::copy(const KUrl &src, const KUrl &dest, int permissions, KIO::JobFl
     kDebug() << "copy: " << src.url() << " to " << dest.url();
 
     copyHelper(src, dest);
+    finished();
 }
 
 void KioFtp::rename(const KUrl& src, const KUrl& dest, KIO::JobFlags flags)
@@ -225,6 +245,17 @@ void KioFtp::setHost(const QString &host, quint16 port, const QString &user, con
     Q_UNUSED(pass)
 
     m_host = host;
+    m_host = m_host.replace(QLatin1Char('-'), QLatin1Char(':')).toUpper();
+
+    QDBusMessage call = QDBusMessage::createMethodCall("org.kde.kded",
+                            "/modules/bluedevil",
+                            "org.kde.BlueDevil",
+                            "device");
+    call << m_host;
+    QDBusReply<DeviceInfo> reply = QDBusConnection::sessionBus().call(call);
+    DeviceInfo info = reply.value();
+
+    m_uuids = info["UUIDs"];
 
     infoMessage(i18n("Connecting to the device"));
 
@@ -312,8 +343,6 @@ void KioFtp::copyWithinObexftp(const KUrl &src, const KUrl &dest)
     if (!copyFile(src.path(), dest.path())) {
         return;
     }
-
-    finished();
 }
 
 void KioFtp::copyFromObexftp(const KUrl& src, const KUrl& dest)
@@ -332,8 +361,6 @@ void KioFtp::copyFromObexftp(const KUrl& src, const KUrl& dest)
 
     TransferFileJob *getFile = new TransferFileJob(dbusPath, this);
     getFile->exec();
-
-    finished();
 }
 
 void KioFtp::copyToObexftp(const KUrl& src, const KUrl& dest)
@@ -352,8 +379,6 @@ void KioFtp::copyToObexftp(const KUrl& src, const KUrl& dest)
 
     TransferFileJob *putFile = new TransferFileJob(dbusPath, this);
     putFile->exec();
-
-    finished();
 }
 
 void KioFtp::statHelper(const KUrl& url)
index 6f22525..6fe0e56 100644 (file)
@@ -30,6 +30,8 @@
 
 #include <kio/slavebase.h>
 
+typedef QMap<QString, QString> DeviceInfo;
+
 class OrgBluezObexFileTransfer1Interface;
 class KioFtp
     : public QObject
@@ -72,11 +74,13 @@ private:
     void launchProgressBar();
     void connectToHost();
     bool testConnection();
+    bool createSession(const QString &target);
 
 private:
     int m_counter;
     QMap<QString, KIO::UDSEntry> m_statMap;
     QString m_host;
+    QString m_uuids;
     QString m_sessionPath;
     QTimer *m_timer;
     org::kde::ObexFtp *m_kded;
index 869db82..31ad981 100644 (file)
@@ -10,6 +10,7 @@ set(wizard_SRCS
     pages/keyboardpairing.cpp
     pages/ssppairing.cpp
     pages/fail.cpp
+    pages/success.cpp
 )
 
 kde4_add_ui_files(wizard_SRCS
@@ -19,6 +20,7 @@ kde4_add_ui_files(wizard_SRCS
             pages/keyboardpairing.ui
             pages/ssppairing.ui
             pages/fail.ui
+            pages/success.ui
 )
 
 kde4_add_executable(bluedevil-wizard ${wizard_SRCS})
index de241b0..91cb28f 100644 (file)
@@ -24,6 +24,7 @@
 #include "pages/legacypairingdatabase.h"
 #include "pages/keyboardpairing.h"
 #include "pages/ssppairing.h"
+#include "pages/success.h"
 #include "pages/fail.h"
 
 #include <QApplication>
@@ -57,6 +58,7 @@ BlueWizard::BlueWizard(const KUrl &url) : QWizard(), m_device(0), m_manualPin(fa
     setPage(LegacyPairingDatabase, new LegacyPairingPageDatabase(this));
     setPage(KeyboardPairing, new KeyboardPairingPage(this));
     setPage(SSPPairing, new SSPPairingPage(this));
+    setPage(Success, new SuccessPage(this));
     setPage(Fail, new FailPage(this));
 
     setButton(QWizard::BackButton, new KPushButton(KStandardGuiItem::back(KStandardGuiItem::UseRTL)));
index fcb2015..4685aca 100644 (file)
@@ -53,7 +53,7 @@ public:
 
     WizardAgent* agent() const;
 
-    enum {Discover, NoPairing, LegacyPairing, LegacyPairingDatabase, KeyboardPairing, SSPPairing, Fail, Connect};
+    enum {Discover, NoPairing, LegacyPairing, LegacyPairingDatabase, KeyboardPairing, SSPPairing, Success, Fail, Connect};
 
 public Q_SLOTS:
     void restartWizard();
index f7c065e..e9f44ef 100644 (file)
@@ -37,6 +37,8 @@ FailPage::FailPage(BlueWizard* parent) : QWizardPage(parent)
 , m_wizard(parent)
 {
     setupUi(this);
+
+    failIcon->setPixmap(KIcon("task-reject").pixmap(48));
 }
 
 void FailPage::initializePage()
index 0470e8f..375a4fb 100644 (file)
       </spacer>
      </item>
      <item>
+      <widget class="QLabel" name="failIcon">
+       <property name="maximumSize">
+        <size>
+         <width>48</width>
+         <height>48</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QLabel" name="failLbl">
        <property name="text">
         <string/>
index 65be653..c169a49 100644 (file)
 
 using namespace BlueDevil;
 
-NoPairingPage::NoPairingPage(BlueWizard* parent) : QWizardPage(parent)
-, m_validPage(false)
-, m_wizard(parent)
+NoPairingPage::NoPairingPage(BlueWizard *parent)
+    : QWizardPage(parent)
+    , m_success(false)
+    , m_wizard(parent)
 {
     setupUi(this);
     m_working = new KPixmapSequenceOverlayPainter(this);
@@ -42,6 +43,14 @@ NoPairingPage::NoPairingPage(BlueWizard* parent) : QWizardPage(parent)
     m_working->start();
 }
 
+int NoPairingPage::nextId() const
+{
+    if (m_success) {
+        return BlueWizard::Success;
+    }
+    return BlueWizard::Fail;
+}
+
 void NoPairingPage::initializePage()
 {
     kDebug();
@@ -49,10 +58,6 @@ void NoPairingPage::initializePage()
 
     connecting->setText(connecting->text().append(m_wizard->device()->name()));
 
-    //It can happen that the device is technically connected and trusted but we are not connected
-    //to the profile. We have no way to know if the profile was activated or not so we have to relay
-    //on a timeout (10s)
-    QTimer::singleShot(10000, this, SLOT(timeout()));
     connect(m_wizard->device(), SIGNAL(connectedChanged(bool)), SLOT(connectedChanged(bool)));
     connect(m_wizard->device(), SIGNAL(trustedChanged(bool)), SLOT(connectedChanged(bool)));
 
@@ -60,30 +65,14 @@ void NoPairingPage::initializePage()
     m_wizard->device()->setTrusted(true);
 }
 
-void NoPairingPage::timeout()
-{
-    connectedChanged(true);
-}
-
 void NoPairingPage::connectedChanged(bool connected)
 {
-    kDebug();
-
-    m_validPage = connected;
-    if (m_validPage) {
-        kDebug() << "Done";
-        m_wizard->done(0);
-    }
-}
-
-bool NoPairingPage::validatePage()
-{
-    return m_validPage;
-}
+    kDebug() << "Connect finished" << connected;
 
-int NoPairingPage::nextId() const
-{
-    return -1;
+    // Connect may fail but that doesn't really mean the device was setup incorrectly
+    // Device::connectDevice will fail eg. when A2DP profile could not be connected due to missing pulseaudio plugin
+    m_success = true;
+    QTimer::singleShot(500, m_wizard, SLOT(next()));
 }
 
 QList<QWizard::WizardButton> NoPairingPage::wizardButtonsLayout() const
@@ -91,6 +80,5 @@ QList<QWizard::WizardButton> NoPairingPage::wizardButtonsLayout() const
     QList <QWizard::WizardButton> list;
     list << QWizard::Stretch;
     list << QWizard::CancelButton;
-
     return list;
 }
index 9b9f4bf..ca03fb8 100644 (file)
@@ -46,21 +46,19 @@ Q_OBJECT
 public:
     NoPairingPage(BlueWizard* parent = 0);
 
-    virtual void initializePage();
-    virtual bool validatePage();
     virtual int nextId() const;
+    virtual void initializePage();
 
 protected:
     QList <QWizard::WizardButton> wizardButtonsLayout() const;
 
 private Q_SLOTS:
-    void timeout();
     void connectedChanged(bool connected);
 
 private:
-    bool                          m_validPage;
-    BlueWizard                    *m_wizard;
+    bool m_success;
+    BlueWizard *m_wizard;
     KPixmapSequenceOverlayPainter *m_working;
 };
 
-#endif // NOPAIRING_H
\ No newline at end of file
+#endif // NOPAIRING_H