diff --git a/bluedevil-5.2.2.tar.xz b/bluedevil-5.2.2.tar.xz
deleted file mode 100644
index 7c5efc4..0000000
--- a/bluedevil-5.2.2.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1a8ea46ad00af61b0b12d8f8c8b872276876adbd51566e60433bfc8959ce72a4
-size 107044
diff --git a/bluedevil-5.2.95.tar.xz b/bluedevil-5.2.95.tar.xz
new file mode 100644
index 0000000..1ba407c
--- /dev/null
+++ b/bluedevil-5.2.95.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fdc5a5d87c22c53d622d3ba8bdb4f83a2ece41dc4b422e1ae03d186f9bf57e1
+size 120608
diff --git a/bluedevil5.spec b/bluedevil5.spec
index 6363f89..db33fd4 100644
--- a/bluedevil5.spec
+++ b/bluedevil5.spec
@@ -18,7 +18,7 @@
Name: bluedevil5
-Version: 5.2.2
+Version: 5.2.95
Release: 0
Summary: Bluetooth Manager for KDE
License: GPL-2.0+
@@ -26,23 +26,23 @@ Group: Hardware/Other
Url: http://www.kde.org/
Source: bluedevil-%{version}.tar.xz
Source99: %{name}-rpmlintrc
-# PATCH-FIX-UPSTREAM sync-with-master.patch
-Patch0: sync-with-master.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: bluez-qt-devel >= %{version}
BuildRequires: kcoreaddons-devel
BuildRequires: kdbusaddons-devel
+BuildRequires: kded-devel
BuildRequires: kf5-filesystem
BuildRequires: ki18n-devel
BuildRequires: kiconthemes-devel
BuildRequires: kio-devel
BuildRequires: knotifications-devel
BuildRequires: kwidgetsaddons-devel
-BuildRequires: libbluedevil5-devel >= %{version}
+BuildRequires: plasma-framework-devel
BuildRequires: shared-mime-info
-BuildRequires: update-desktop-files
-BuildRequires: pkgconfig(Qt5Core) >= 5.2.0
-BuildRequires: pkgconfig(Qt5DBus) >= 5.2.0
-BuildRequires: pkgconfig(Qt5Widgets) >= 5.2.0
+BuildRequires: pkgconfig(Qt5Core) >= 5.4.0
+BuildRequires: pkgconfig(Qt5DBus) >= 5.4.0
+BuildRequires: pkgconfig(Qt5Widgets) >= 5.4.0
+Requires: bluez-qt-imports >= %{version}
# atop of the bluez itself, we also need bluez-obexd for kio_obexftp and both send/receive
Requires: bluez
# for connecting A2DP profile
@@ -59,7 +59,6 @@ Bluetooth daemon for KDE, handling connections.
%lang_package
%prep
%setup -q -n bluedevil-%{version}
-%patch0 -p1
%build
%cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=share/locale/kf5
@@ -68,9 +67,6 @@ Bluetooth daemon for KDE, handling connections.
%install
%kf5_makeinstall -C build
-%suse_update_desktop_file -r org.kde.bluedevilmonolithic Qt KDE Utility DesktopUtility
-sed -i '/^Icon=/d' %{buildroot}%{_kf5_applicationsdir}/org.kde.bluedevilmonolithic.desktop
-
%post
/usr/bin/update-mime-database %{_datadir}/mime > /dev/null 2>&1 || :
@@ -88,6 +84,8 @@ sed -i '/^Icon=/d' %{buildroot}%{_kf5_applicationsdir}/org.kde.bluedevilmonolith
%{_kf5_notifydir}/
%{_kf5_plugindir}/
%{_kf5_servicesdir}/
+%{_kf5_qmldir}/
+%{_kf5_plasmadir}/
%files lang
%defattr(-,root,root)
diff --git a/sync-with-master.patch b/sync-with-master.patch
deleted file mode 100644
index 54d50a9..0000000
--- a/sync-with-master.patch
+++ /dev/null
@@ -1,6363 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 002f464148c98734cc58617135b8307a9c41d2b1..c5f2a2701a9e7d8955307446dab6ba600c43ae6e 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,5 +1,6 @@
- project(bluedevil)
--set(PROJECT_VERSION "5.2.2")
-+set(PROJECT_VERSION "5.2.90")
-+set(PROJECT_VERSION_MAJOR 5)
-
- cmake_minimum_required(VERSION 2.8.12)
-
-@@ -8,7 +9,7 @@ configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h)
- find_package(ECM REQUIRED NO_MODULE)
- set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
-
--set(QT_MIN_VERSION "5.2.0")
-+set(QT_MIN_VERSION "5.4.0")
- find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
- Core
- Widgets
-diff --git a/README b/README
-index b701b77d822dbc5509b4972faaa158e6c670e44f..b819ed7f170473ac0f3c232c5946b6b7a9d80ecf 100644
---- a/README
-+++ b/README
-@@ -1,14 +1,11 @@
- BlueDevil runtime dependencies:
-- -obex-data-server
-+ -bluez5
-+ -General Bluetooth management
-+
-+ -bluez-obexd
- -Be able to "Browse File" aka kio_obexftp
-+ -Be able to "Send Files" (bluedevil-sendfile)
- -Be able to receive files
-
-- -obexd-client
-- -Be able to Send files (bluedevil-sendfile)
--
-- -If you're using Alsa:
-- The best way of having "automagical headset configuration" is having the bluetooth.conf hook
-- enabled
--
-- NOTE: Be sure to install only obexd-client and not obexd-server, since the last will conflic
-- with obex-data-server.
-\ No newline at end of file
-+ -pulseaudio-module-bluetooth
-+ -Be able to connect A2DP profile
-diff --git a/src/XmlMessages.sh b/src/XmlMessages.sh
-new file mode 100644
-index 0000000000000000000000000000000000000000..05651f53259aaee2876b97570a8ba47e5f6d4cf5
---- /dev/null
-+++ b/src/XmlMessages.sh
-@@ -0,0 +1,22 @@
-+function get_files
-+{
-+ echo bluedevil-mime.xml
-+}
-+
-+function po_for_file
-+{
-+ case "$1" in
-+ bluedevil-mime.xml)
-+ echo bluedevil_xml_mimetypes.po
-+ ;;
-+ esac
-+}
-+
-+function tags_for_file
-+{
-+ case "$1" in
-+ bluedevil-mime.xml)
-+ echo comment
-+ ;;
-+ esac
-+}
-diff --git a/src/bluedevil-mime.xml b/src/bluedevil-mime.xml
-index 669147d204d1be05a40a0c9d3b10128fc02b1c45..dc4af15e8ac92684bfab6426aa939922cb80c97b 100644
---- a/src/bluedevil-mime.xml
-+++ b/src/bluedevil-mime.xml
-@@ -17,27 +17,195 @@ Notes:
-
-
- Known Device
-+ Poznat uređaj
-+ Dispositiu conegut
-+ Známé zařízení
-+ Kendt enhed
-+ Bekanntes Gerät
-+ Γνωστή συσκευή
-+ Known Device
-+ Dispositivo conocido
-+ Tunnettu laite
-+ Périphérique connu
-+ Dispositivo conosciuto
-+ Bekend apparaat
-+ Znane urządzenie
-+ Dispositivo Conhecido
-+ Dispositivo conhecido
-+ Známe zariadenie
-+ Znana naprava
-+ познати уређај
-+ познати уређај
-+ poznati uređaj
-+ poznati uređaj
-+ Känd enhet
-+ Відомий пристрій
-+ 已知的裝置
-
-
-
-
- Discovered Device
-+ Otkriven uređaj
-+ Dispositiu descobert
-+ Objevené zařízení
-+ Opdaget enhed
-+ Erkanntes Gerät
-+ Ευρεθείσα συσκευή
-+ Discovered Device
-+ Dispositivo descubierto
-+ Löydetty palvelu
-+ Périphérique découvert
-+ Dispositivo scoperto
-+ Gevonden apparaat
-+ Odkryte urządzenie
-+ Dispositivo Descoberto
-+ Dispositivo descoberto
-+ Objavené zariadenie
-+ Odkrita naprava
-+ откривени уређај
-+ откривени уређај
-+ otkriveni uređaj
-+ otkriveni uređaj
-+ Upptäckt enhet
-+ Виявлений пристрій
-+ 已發現的裝置
-
-
-
-
- Service
-+ Usluga
-+ Servei
-+ Služba
-+ Tjeneste
-+ Dienst
-+ Υπηρεσία
-+ Service
-+ Servicio
-+ Palvelu
-+ Service
-+ Servizio
-+ Service
-+ Usługa
-+ Serviço
-+ Serviço
-+ Služba
-+ Storitev
-+ сервис
-+ сервис
-+ servis
-+ servis
-+ Tjänst
-+ Служба
-+ 服務
-
-
- Service
-+ Usluga
-+ Servei
-+ Služba
-+ Tjeneste
-+ Dienst
-+ Υπηρεσία
-+ Service
-+ Servicio
-+ Palvelu
-+ Service
-+ Servizio
-+ Service
-+ Usługa
-+ Serviço
-+ Serviço
-+ Služba
-+ Storitev
-+ сервис
-+ сервис
-+ servis
-+ servis
-+ Tjänst
-+ Служба
-+ 服務
-
-
- Service
-+ Usluga
-+ Servei
-+ Služba
-+ Tjeneste
-+ Dienst
-+ Υπηρεσία
-+ Service
-+ Servicio
-+ Palvelu
-+ Service
-+ Servizio
-+ Service
-+ Usługa
-+ Serviço
-+ Serviço
-+ Služba
-+ Storitev
-+ сервис
-+ сервис
-+ servis
-+ servis
-+ Tjänst
-+ Служба
-+ 服務
-
-
- Service
-+ Usluga
-+ Servei
-+ Služba
-+ Tjeneste
-+ Dienst
-+ Υπηρεσία
-+ Service
-+ Servicio
-+ Palvelu
-+ Service
-+ Servizio
-+ Service
-+ Usługa
-+ Serviço
-+ Serviço
-+ Služba
-+ Storitev
-+ сервис
-+ сервис
-+ servis
-+ servis
-+ Tjänst
-+ Служба
-+ 服務
-
-
- Service
-+ Usluga
-+ Servei
-+ Služba
-+ Tjeneste
-+ Dienst
-+ Υπηρεσία
-+ Service
-+ Servicio
-+ Palvelu
-+ Service
-+ Servizio
-+ Service
-+ Usługa
-+ Serviço
-+ Serviço
-+ Služba
-+ Storitev
-+ сервис
-+ сервис
-+ servis
-+ servis
-+ Tjänst
-+ Служба
-+ 服務
-
-
-diff --git a/src/bluedevil.notifyrc b/src/bluedevil.notifyrc
-index 27b45743d42597b033158e51e5fdebbd8e32e4f4..4082c625e22c3c8555f0cd587d7634c9e8a720f5 100644
---- a/src/bluedevil.notifyrc
-+++ b/src/bluedevil.notifyrc
-@@ -241,6 +241,7 @@ Name[fr]=Demande de code « PIN »
- Name[it]=Richiesta PIN
- Name[nb]=Be om PIN
- Name[nl]=Om PIN verzoeken
-+Name[pa]=ਬੇਨਤੀ ਪਿਨ
- Name[pl]=Żąda numeru PIN
- Name[pt]=Pedir o PIN
- Name[pt_BR]=Solicitar o PIN
-@@ -299,6 +300,7 @@ Name[fr]=Fichier entrant
- Name[it]=File in arrivo
- Name[nb]=Innkommende fil
- Name[nl]=Bestand aangeboden
-+Name[pa]=ਆ ਰਹੀ ਫਾਇਲ
- Name[pl]=Przychodzący plik
- Name[pt]=Ficheiro Recebido
- Name[pt_BR]=Arquivo recebido
-diff --git a/src/daemon/helpers/authorize/authorize.cpp b/src/daemon/helpers/authorize/authorize.cpp
-index c6f44daf2e770ef7ea1c220dae259dbb1267a599..6847ba94dd9a784c06b80f2fbe9976dfcdafaca9 100644
---- a/src/daemon/helpers/authorize/authorize.cpp
-+++ b/src/daemon/helpers/authorize/authorize.cpp
-@@ -39,33 +39,33 @@ Authorize::Authorize()
-
- notification->setText(i18nc(
- "Show a notification asking to authorize or deny access to this computer from Bluetooth. The %1 is the name of the bluetooth device",
-- "%1 is requesting access to this computer", qApp->arguments()[1])
-+ "%1 is requesting access to this computer", qApp->arguments().at(1))
- );
-
- QStringList actions;
- actions.append(i18nc("Button to trust a bluetooth remote device and authorize it to connect", "Trust and Authorize"));
-- actions.append(i18nc("Button to authorize a bluetooth remote device to connect ", "Authorize Only"));
-+ actions.append(i18nc("Button to authorize a bluetooth remote device to connect", "Authorize Only"));
- actions.append(i18nc("Deny access to a remote bluetooth device", "Deny"));
-
- notification->setActions(actions);
-
-- connect(notification, SIGNAL(action1Activated()),this, SLOT(trust()));
-- connect(notification, SIGNAL(action2Activated()),this, SLOT(authorize()));
-- connect(notification, SIGNAL(action3Activated()),this, SLOT(deny()));
-- connect(notification, SIGNAL(closed()), this, SLOT(deny()));
-- connect(notification, SIGNAL(ignored()), this, SLOT(deny()));
-+ connect(notification, &KNotification::action1Activated, this, &Authorize::trust);
-+ connect(notification, &KNotification::action2Activated, this, &Authorize::authorize);
-+ connect(notification, &KNotification::action3Activated, this, &Authorize::deny);
-+ connect(notification, &KNotification::closed, this, &Authorize::deny);
-+ connect(notification, &KNotification::ignored, this, &Authorize::deny);
-
-- notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42, 42));
-+ notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42));
-
- // We're using persistent notifications so we have to use our own timeout (10s)
-- QTimer::singleShot(10000, notification, SLOT(close()));
-+ QTimer::singleShot(10000, notification, &KNotification::close);
- notification->sendEvent();
- }
-
- void Authorize::trust()
- {
- qDebug() << "Trusted";
-- BlueDevil::Manager::self()->usableAdapter()->deviceForUBI(qApp->arguments()[2])->setTrusted(true);
-+ BlueDevil::Manager::self()->usableAdapter()->deviceForUBI(qApp->arguments().at(2))->setTrusted(true);
- qApp->exit(0);
- }
-
-diff --git a/src/daemon/helpers/authorize/authorize.h b/src/daemon/helpers/authorize/authorize.h
-index d881baa0dd3d5f9d1244d70a28b7c4d6af03bdb3..b3b41902e56831091d6bb009254f8ee76e0e00ed 100644
---- a/src/daemon/helpers/authorize/authorize.h
-+++ b/src/daemon/helpers/authorize/authorize.h
-@@ -32,8 +32,7 @@
- * Deny quits the app with 1 (which means denied)
- * @internal
- */
--class Authorize
-- : public QObject
-+class Authorize : public QObject
- {
- Q_OBJECT
-
-@@ -42,7 +41,7 @@ public:
- * Launch the KNotification which the respective actions, also makes the needed connection
- * between those actions and the slots
- */
-- Authorize();
-+ explicit Authorize();
-
- private Q_SLOTS:
- /**
-@@ -60,4 +59,5 @@ private Q_SLOTS:
- */
- void deny();
- };
--#endif
-+
-+#endif // AUTHORIZE_H
-diff --git a/src/daemon/helpers/authorize/main.cpp b/src/daemon/helpers/authorize/main.cpp
-index 615245f4fcd38bb3d8a1e2ca65febbe4e123b647..8106ff697e861a18d468330c9d5c5050400bc4b1 100644
---- a/src/daemon/helpers/authorize/main.cpp
-+++ b/src/daemon/helpers/authorize/main.cpp
-@@ -18,15 +18,10 @@
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
- *************************************************************************************/
-
--
- #include "authorize.h"
-
- #include
-
--#include
--
--static const KLocalizedString description = ki18n("KDE Bluetooth System");
--
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
-diff --git a/src/daemon/helpers/confirmmodechange/confirmmodechange.cpp b/src/daemon/helpers/confirmmodechange/confirmmodechange.cpp
-index 1328f74cba667fddf14c8ce23a3e7e4b54e45fdf..62eccd32840e48cb8919ee538844381db57d48d7 100644
---- a/src/daemon/helpers/confirmmodechange/confirmmodechange.cpp
-+++ b/src/daemon/helpers/confirmmodechange/confirmmodechange.cpp
-@@ -37,7 +37,7 @@ ConfirmModeChange::ConfirmModeChange()
-
- notification->setText(i18nc(
- "Showed in a notification when the Bluetooth mode is going to be changed (for example to flight mode), the %1 is the name of the mode",
-- "Change Bluetooth mode to '%1'?", qApp->arguments()[1])
-+ "Change Bluetooth mode to '%1'?", qApp->arguments().at(1))
- );
-
- QStringList actions;
-@@ -46,14 +46,14 @@ ConfirmModeChange::ConfirmModeChange()
-
- notification->setActions(actions);
-
-- connect(notification, SIGNAL(action1Activated()),this, SLOT(confirm()));
-- connect(notification, SIGNAL(action2Activated()),this, SLOT(deny()));
-- connect(notification, SIGNAL(closed()), this, SLOT(deny()));
-- connect(notification, SIGNAL(ignored()), this, SLOT(deny()));
-+ connect(notification, &KNotification::action1Activated,this, &ConfirmModeChange::confirm);
-+ connect(notification, &KNotification::action2Activated,this, &ConfirmModeChange::deny);
-+ connect(notification, &KNotification::closed, this, &ConfirmModeChange::deny);
-+ connect(notification, &KNotification::ignored, this, &ConfirmModeChange::deny);
-
- // We're using persistent notifications so we have to use our own timeout (10s)
-- QTimer::singleShot(10000, notification, SLOT(close()));
-- notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42, 42));
-+ QTimer::singleShot(10000, notification, &KNotification::close);
-+ notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42));
- notification->sendEvent();
- }
-
-@@ -68,4 +68,3 @@ void ConfirmModeChange::deny()
- qDebug() << "Denied";
- qApp->exit(1);
- }
--
-diff --git a/src/daemon/helpers/confirmmodechange/confirmmodechange.h b/src/daemon/helpers/confirmmodechange/confirmmodechange.h
-index 4d79b02b16457e377dc364de32ab51d9ad41f156..572fb57e2a6544cce08a13fb48d13b17ad14e121 100644
---- a/src/daemon/helpers/confirmmodechange/confirmmodechange.h
-+++ b/src/daemon/helpers/confirmmodechange/confirmmodechange.h
-@@ -19,8 +19,8 @@
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
--#ifndef AUTHORIZE_H
--#define AUTHORIZE_H
-+#ifndef CONFIRM_MODE_CHANGE_H
-+#define CONFIRM_MODE_CHANGE_H
-
- #include
-
-@@ -32,8 +32,7 @@
- * Deny quits the app with 1 (which means denied)
- * @internal
- */
--class ConfirmModeChange
-- : public QObject
-+class ConfirmModeChange : public QObject
- {
- Q_OBJECT
-
-@@ -42,7 +41,7 @@ public:
- * Launch the KNotification which the respective actions, also makes the needed connection
- * between those actions and the slots
- */
-- ConfirmModeChange();
-+ explicit ConfirmModeChange();
-
- private Q_SLOTS:
- /**
-@@ -55,4 +54,5 @@ private Q_SLOTS:
- */
- void deny();
- };
--#endif
-+
-+#endif // CONFIRM_MODE_CHANGE_H
-diff --git a/src/daemon/helpers/confirmmodechange/main.cpp b/src/daemon/helpers/confirmmodechange/main.cpp
-index b4ed9463740c200643f468a44bebf5040ae30d70..a2e05bb510e3ea60032fe3c3760573c34595b3ed 100644
---- a/src/daemon/helpers/confirmmodechange/main.cpp
-+++ b/src/daemon/helpers/confirmmodechange/main.cpp
-@@ -18,15 +18,10 @@
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
- *************************************************************************************/
-
--
- #include "confirmmodechange.h"
-
- #include
-
--#include
--
--static const KLocalizedString description = ki18n("KDE Bluetooth System");
--
- int main(int argc, char *argv[])
- {
- QApplication app(argc,argv);
-diff --git a/src/daemon/helpers/requestconfirmation/main.cpp b/src/daemon/helpers/requestconfirmation/main.cpp
-index e7ecde08ffc89456739563f54350c49067352520..f32406041b35212154d6ac7e854a6a908588e65b 100644
---- a/src/daemon/helpers/requestconfirmation/main.cpp
-+++ b/src/daemon/helpers/requestconfirmation/main.cpp
-@@ -22,10 +22,6 @@
-
- #include
-
--#include
--
--static const KLocalizedString description = ki18n("KDE Bluetooth System");
--
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
-diff --git a/src/daemon/helpers/requestconfirmation/requestconfirmation.cpp b/src/daemon/helpers/requestconfirmation/requestconfirmation.cpp
-index ac24731af2f14c5978177cdd3f278c07323f78b3..31b15c361665763c0d2bb6fd5bd758d3adb899c9 100644
---- a/src/daemon/helpers/requestconfirmation/requestconfirmation.cpp
-+++ b/src/daemon/helpers/requestconfirmation/requestconfirmation.cpp
-@@ -35,7 +35,7 @@ RequestConfirmation::RequestConfirmation() : QObject()
-
- notification->setText(i18nc(
- "The text is shown in a notification to know if the PIN is correct, %1 is the remote bluetooth device and %2 is the pin",
-- "%1 is asking if the PIN is correct: %2", qApp->arguments()[1], qApp->arguments()[2])
-+ "%1 is asking if the PIN is correct: %2", qApp->arguments().at(1), qApp->arguments().at(2))
- );
-
- QStringList actions;
-@@ -44,14 +44,14 @@ RequestConfirmation::RequestConfirmation() : QObject()
-
- notification->setActions(actions);
-
-- connect(notification, SIGNAL(action1Activated()),this, SLOT(pinCorrect()));
-- connect(notification, SIGNAL(action2Activated()),this, SLOT(pinWrong()));
-- connect(notification, SIGNAL(closed()), this, SLOT(pinWrong()));
-- connect(notification, SIGNAL(ignored()), this, SLOT(pinWrong()));
-+ connect(notification, &KNotification::action1Activated, this, &RequestConfirmation::pinCorrect);
-+ connect(notification, &KNotification::action2Activated, this, &RequestConfirmation::pinWrong);
-+ connect(notification, &KNotification::closed, this, &RequestConfirmation::pinWrong);
-+ connect(notification, &KNotification::ignored, this, &RequestConfirmation::pinWrong);
-
-- //We're using persistent notifications so we have to use our own timeout (10s)
-- QTimer::singleShot(10000, notification, SLOT(close()));
-- notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42,42));
-+ // We're using persistent notifications so we have to use our own timeout (10s)
-+ QTimer::singleShot(10000, notification, &KNotification::close);
-+ notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42));
- notification->sendEvent();
- }
-
-diff --git a/src/daemon/helpers/requestconfirmation/requestconfirmation.h b/src/daemon/helpers/requestconfirmation/requestconfirmation.h
-index 60ebff85b074371422f1518902a70964dd1c20a7..59c6cfa4847d3738924e53b9996b7328d0edb1e1 100644
---- a/src/daemon/helpers/requestconfirmation/requestconfirmation.h
-+++ b/src/daemon/helpers/requestconfirmation/requestconfirmation.h
-@@ -19,8 +19,8 @@
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
--#ifndef AUTHORIZE_H
--#define AUTHORIZE_H
-+#ifndef REQUEST_CONFIRMATION_H
-+#define REQUEST_CONFIRMATION_H
-
- #include
-
-@@ -32,8 +32,7 @@
- * Deny quits the app with 1 (which means denied)
- * @internal
- */
--class RequestConfirmation
-- : public QObject
-+class RequestConfirmation : public QObject
- {
- Q_OBJECT
-
-@@ -42,7 +41,7 @@ public:
- * Launch the KNotification which the respective actions, also makes the needed connection
- * between those actions and the slots
- */
-- RequestConfirmation();
-+ explicit RequestConfirmation();
-
- private Q_SLOTS:
- /**
-@@ -55,4 +54,5 @@ private Q_SLOTS:
- */
- void pinWrong();
- };
--#endif
-+
-+#endif // REQUEST_CONFIRMATION_H
-diff --git a/src/daemon/helpers/requestpin/dialogWidget.ui b/src/daemon/helpers/requestpin/dialogWidget.ui
-index 478f1be9610ce09342b748ddc36bc0b408b4a5de..8e769a374a0e14fc3914560342750ef9395f919e 100644
---- a/src/daemon/helpers/requestpin/dialogWidget.ui
-+++ b/src/daemon/helpers/requestpin/dialogWidget.ui
-@@ -7,7 +7,7 @@
- 0
- 0
- 259
-- 127
-+ 138
-
-
-
-@@ -61,12 +61,6 @@
- 0
-
-
--
--
--
--
-- 32767
--
-
- 1234
-
-diff --git a/src/daemon/helpers/requestpin/main.cpp b/src/daemon/helpers/requestpin/main.cpp
-index 8472108a253c064b5b4030b2d2e55d8b2a04bf95..e3cfb29961d8485e036897ad0676fe07b6c658b0 100644
---- a/src/daemon/helpers/requestpin/main.cpp
-+++ b/src/daemon/helpers/requestpin/main.cpp
-@@ -22,10 +22,6 @@
-
- #include
-
--#include
--
--static const KLocalizedString description = ki18n("KDE Bluetooth System");
--
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
-diff --git a/src/daemon/helpers/requestpin/requestpin.cpp b/src/daemon/helpers/requestpin/requestpin.cpp
-index 7402b25dbd16a16ad3b7bd9e057162101c8d1744..8b5f88c904c2237bf95b340c9ef8f0dbbfaff04a 100644
---- a/src/daemon/helpers/requestpin/requestpin.cpp
-+++ b/src/daemon/helpers/requestpin/requestpin.cpp
-@@ -37,9 +37,7 @@
- #include
- #include
-
--using namespace std;
--RequestPin::RequestPin()
-- : QObject()
-+RequestPin::RequestPin() : QObject()
- , m_dialogWidget(0)
- {
- m_notification = new KNotification(QStringLiteral("bluedevilRequestPin"),
-@@ -47,7 +45,7 @@ RequestPin::RequestPin()
-
- m_notification->setText(i18nc(
- "Shown in a notification to announce that a PIN is needed to accomplish a pair action, %1 is the name of the bluetooth device",
-- "PIN needed to pair with %1",qApp->arguments()[1])
-+ "PIN needed to pair with %1", qApp->arguments().at(1))
- );
-
- QStringList actions;
-@@ -58,17 +56,17 @@ RequestPin::RequestPin()
-
- m_notification->setActions(actions);
-
-- connect(m_notification, SIGNAL(action1Activated()),this, SLOT(introducePin()));
-- connect(m_notification, SIGNAL(closed()), this, SLOT(quit()));
-- connect(m_notification, SIGNAL(ignored()), this, SLOT(quit()));
-+ connect(m_notification, &KNotification::action1Activated,this, &RequestPin::introducePin);
-+ connect(m_notification, &KNotification::closed, this, &RequestPin::quit);
-+ connect(m_notification, &KNotification::ignored, this, &RequestPin::quit);
-
-- //We're using persistent notifications so we have to use our own timeout (10s)
-+ // We're using persistent notifications so we have to use our own timeout (10s)
- m_timer.setSingleShot(true);
- m_timer.setInterval(10000);
- m_timer.start();
-- connect(&m_timer, SIGNAL(timeout()), m_notification, SLOT(close()));
-+ connect(&m_timer, &QTimer::timeout, m_notification, &KNotification::close);
-
-- m_notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42,42));
-+ m_notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(42));
- m_notification->sendEvent();
- }
-
-@@ -90,27 +88,27 @@ void RequestPin::introducePin()
- m_dialogWidget->descLabel->setText(i18nc(
- "Shown in a dialog which asks to introduce a PIN that will be used to pair a Bluetooth device, %1 is the name of the Bluetooth device",
- "In order to pair this computer with %1, you have to enter a PIN. Please do it below.",
-- qApp->arguments()[1])
-+ qApp->arguments().at(1))
- );
-- m_dialogWidget->pixmap->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(64,64));
-+ m_dialogWidget->pixmap->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(64));
-
-- connect(m_dialogWidget->pin, SIGNAL(textChanged(QString)), SLOT(checkPin(QString)));
-- connect(m_dialogWidget->pin, SIGNAL(returnPressed()), dialog, SLOT(accept()));
-+ connect(m_dialogWidget->pin, &KLineEdit::textChanged, this, &RequestPin::checkPin);
-+ connect(m_dialogWidget->pin, &KLineEdit::returnPressed, dialog, &QDialog::accept);
-
- m_dialogWidget->pin->setFocus(Qt::ActiveWindowFocusReason);
-- qDebug() << qApp->arguments();
-- if (qApp->arguments().count() > 2 && qApp->arguments()[2] == QLatin1String("numeric")) {
-- m_dialogWidget->pin->setValidator(new QRegExpValidator(QRegExp(QStringLiteral("[0-9]{1,6}")), this ));
-+
-+ if (qApp->arguments().count() > 2 && qApp->arguments().at(2) == QLatin1String("numeric")) {
-+ m_dialogWidget->pin->setValidator(new QRegExpValidator(QRegExp(QStringLiteral("[0-9]{1,6}")), this));
- } else {
-- m_dialogWidget->pin->setValidator(new QRegExpValidator(QRegExp(QStringLiteral("[A-Za-z0-9]{1,16}")), this ));
-+ m_dialogWidget->pin->setValidator(new QRegExpValidator(QRegExp(QStringLiteral("[A-Za-z0-9]{1,16}")), this));
- }
-
- m_dialogWidget->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
- dialog->setMinimumSize(dialog->sizeHint());
- dialog->setMaximumSize(dialog->sizeHint());
- if (dialog->exec()) {
-- cout << m_dialogWidget->pin->text().toLatin1().constData();
-- flush(cout);
-+ std::cout << m_dialogWidget->pin->text().toLatin1().constData();
-+ std::flush(std::cout);
- delete dialog;
- qApp->exit(0);
- return;
-@@ -120,7 +118,7 @@ void RequestPin::introducePin()
- qApp->exit(1);
- }
-
--void RequestPin::checkPin(const QString& pin)
-+void RequestPin::checkPin(const QString &pin)
- {
- m_dialogWidget->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!pin.isEmpty());
- }
-diff --git a/src/daemon/helpers/requestpin/requestpin.h b/src/daemon/helpers/requestpin/requestpin.h
-index 3cc09e6de018d22b035e19b70499cb556951cc22..bfa96dc859f4587b2d94ee14aa10db19f73c6db4 100644
---- a/src/daemon/helpers/requestpin/requestpin.h
-+++ b/src/daemon/helpers/requestpin/requestpin.h
-@@ -19,14 +19,15 @@
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
--#ifndef REQUESTPIN_H
--#define REQUESTPIN_H
-+#ifndef REQUEST_PIN_H
-+#define REQUEST_PIN_H
-
- #include
- #include
-
--namespace Ui {
--class dialogWidget;
-+namespace Ui
-+{
-+ class dialogWidget;
- }
-
- class KNotification;
-@@ -39,8 +40,7 @@ class KNotification;
- * Deny quits the app with 1 (which means denied)
- * @internal
- */
--class RequestPin
-- : public QObject
-+class RequestPin : public QObject
- {
- Q_OBJECT
-
-@@ -49,7 +49,7 @@ public:
- * Launch the KNotification which the respective actions, also makes the needed connection
- * between those actions and the slots
- */
-- RequestPin();
-+ explicit RequestPin();
-
- private Q_SLOTS:
- /**
-@@ -70,4 +70,5 @@ private:
- Ui::dialogWidget *m_dialogWidget;
- KNotification *m_notification;
- };
--#endif //REQUESTPIN_H
-+
-+#endif // REQUEST_PIN_H
-diff --git a/src/daemon/kded/BlueDevilDaemon.cpp b/src/daemon/kded/BlueDevilDaemon.cpp
-index 12111036565365212f9d7a520b881197652ee3e6..0b59ce5d45ef33630408a933a4f67bffb6f14597 100644
---- a/src/daemon/kded/BlueDevilDaemon.cpp
-+++ b/src/daemon/kded/BlueDevilDaemon.cpp
-@@ -38,6 +38,7 @@
- #include
- #include
- #include
-+#include
-
- #include
- #include
-@@ -59,21 +60,21 @@ struct BlueDevilDaemon::Private
- Offline
- } m_status;
-
-- BluezAgent *m_bluezAgent;
-- KFilePlacesModel *m_placesModel;
-- Adapter *m_adapter;
-- QDBusServiceWatcher *m_monolithicWatcher;
-- FileReceiver *m_fileReceiver;
-- QList m_discovered;
-- QTimer m_timer;
-+ BluezAgent *m_bluezAgent;
-+ KFilePlacesModel *m_placesModel;
-+ Adapter *m_adapter;
-+ QDBusServiceWatcher *m_monolithicWatcher;
-+ FileReceiver *m_fileReceiver;
-+ KSharedConfig::Ptr m_config;
-+ QTimer m_timer;
- };
-
- BlueDevilDaemon::BlueDevilDaemon(QObject *parent, const QList&)
- : KDEDModule(parent)
- , d(new Private)
- {
-- qDBusRegisterMetaType ();
-- qDBusRegisterMetaType ();
-+ qDBusRegisterMetaType();
-+ qDBusRegisterMetaType();
-
- d->m_bluezAgent = 0;
- d->m_adapter = 0;
-@@ -81,8 +82,8 @@ BlueDevilDaemon::BlueDevilDaemon(QObject *parent, const QList&)
- d->m_fileReceiver = 0;
- d->m_monolithicWatcher = new QDBusServiceWatcher(QStringLiteral("org.kde.bluedevilmonolithic")
- , QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForUnregistration, this);
-- d->m_timer.setInterval(20000);
- d->m_timer.setSingleShot(true);
-+ d->m_config = KSharedConfig::openConfig(QStringLiteral("bluedevilglobalrc"));
-
- KAboutData aboutData(
- QStringLiteral("bluedevildaemon"),
-@@ -102,12 +103,25 @@ BlueDevilDaemon::BlueDevilDaemon(QObject *parent, const QList&)
- aboutData.setComponentName(QStringLiteral("bluedevil"));
- KAboutData::registerPluginData(aboutData);
-
-- connect(d->m_monolithicWatcher, SIGNAL(serviceUnregistered(const QString &)), SLOT(monolithicFinished(const QString &)));
-+ connect(d->m_monolithicWatcher, &QDBusServiceWatcher::serviceUnregistered, this, &BlueDevilDaemon::monolithicFinished);
-+ connect(&d->m_timer, &QTimer::timeout, this, &BlueDevilDaemon::stopDiscovering);
-
-- connect(Manager::self(), SIGNAL(usableAdapterChanged(Adapter*)),
-- this, SLOT(usableAdapterChanged(Adapter*)));
-+ connect(Manager::self(), &Manager::usableAdapterChanged, this, &BlueDevilDaemon::usableAdapterChanged);
-+ connect(Manager::self(), &Manager::adapterAdded, this, &BlueDevilDaemon::adapterAdded);
-+ connect(Manager::self(), &Manager::adapterRemoved, this, &BlueDevilDaemon::adapterRemoved);
-+
-+ // Catch suspend/resume events
-+ QDBusConnection::systemBus().connect(QStringLiteral("org.freedesktop.login1"),
-+ QStringLiteral("/org/freedesktop/login1"),
-+ QStringLiteral("org.freedesktop.login1.Manager"),
-+ QStringLiteral("PrepareForSleep"),
-+ this,
-+ SLOT(login1PrepareForSleep(bool))
-+ );
-
- d->m_status = Private::Offline;
-+
-+ restoreAdaptersState();
- usableAdapterChanged(Manager::self()->usableAdapter());
-
- if (!Manager::self()->adapters().isEmpty()) {
-@@ -117,6 +131,8 @@ BlueDevilDaemon::BlueDevilDaemon(QObject *parent, const QList&)
-
- BlueDevilDaemon::~BlueDevilDaemon()
- {
-+ saveAdaptersState();
-+
- if (d->m_status == Private::Online) {
- offlineMode();
- }
-@@ -124,93 +140,111 @@ BlueDevilDaemon::~BlueDevilDaemon()
- delete d;
- }
-
--bool BlueDevilDaemon::isOnline()
-+void BlueDevilDaemon::login1PrepareForSleep(bool active)
- {
-- if (d->m_status == Private::Offline) {
-- return false;
-+ if (active) {
-+ qCDebug(BLUEDAEMON) << "About to suspend";
-+ saveAdaptersState();
-+ } else {
-+ qCDebug(BLUEDAEMON) << "About to resume";
-+ restoreAdaptersState();
- }
-- return true;
- }
-
--QMapDeviceInfo BlueDevilDaemon::knownDevices()
-+bool BlueDevilDaemon::isOnline()
-+{
-+ return d->m_status == Private::Online;
-+}
-+
-+QMapDeviceInfo BlueDevilDaemon::allDevices()
- {
- QMapDeviceInfo devices;
-+ QList list = Manager::self()->usableAdapter()->devices();
-
-- QList list = Manager::self()->usableAdapter()->devices();
-- qCDebug(BLUEDAEMON) << "List: " << list.length();
-- DeviceInfo info;
-- Q_FOREACH(Device *const device, list) {
-- info[QStringLiteral("name")] = device->friendlyName();
-- info[QStringLiteral("icon")] = device->icon();
-- info[QStringLiteral("address")] = device->address();
-- info[QStringLiteral("UUIDs")] = device->UUIDs().join(QStringLiteral(","));
-- devices[device->address()] = info;
-+ Q_FOREACH (Device *const device, list) {
-+ devices[device->address()] = deviceToInfo(device);
- }
-
-- if (!d->m_timer.isActive()) {
-- qCDebug(BLUEDAEMON) << "Start Discovery";
-- Manager::self()->usableAdapter()->startStableDiscovery();
-- d->m_discovered.clear();
-- d->m_timer.start();
-- }
-+ return devices;
-+}
-
-- Q_FOREACH(const DeviceInfo& info, d->m_discovered) {
-- if (!devices.contains(info[QStringLiteral("address")])) {
-- devices[info[QStringLiteral("address")]] = info;
-+DeviceInfo BlueDevilDaemon::device(const QString &address)
-+{
-+ Q_FOREACH (Device *const device, Manager::self()->devices()) {
-+ if (device->address() == address) {
-+ return deviceToInfo(device);
- }
- }
-- return devices;
-+
-+ return DeviceInfo();
-+}
-+
-+void BlueDevilDaemon::startDiscovering(quint32 timeout)
-+{
-+ if (!d->m_adapter) {
-+ return;
-+ }
-+
-+ qCDebug(BLUEDAEMON) << "Start discovering for" << timeout << "ms";
-+
-+ d->m_adapter->startDiscovery();
-+
-+ if (timeout > 0) {
-+ d->m_timer.start(timeout);
-+ }
- }
-
- void BlueDevilDaemon::stopDiscovering()
- {
-- qCDebug(BLUEDAEMON) << "Stopping discovering";
-- d->m_timer.stop();
-- Manager::self()->usableAdapter()->stopDiscovery();
-+ if (!d->m_adapter) {
-+ return;
-+ }
-+
-+ qCDebug(BLUEDAEMON) << "Stop discovering";
-+
-+ if (d->m_adapter->isDiscovering()) {
-+ d->m_adapter->stopDiscovery();
-+ }
- }
-
- void BlueDevilDaemon::executeMonolithic()
- {
-- qCDebug(BLUEDAEMON);
--
- QProcess process;
- if (!process.startDetached(QStringLiteral("bluedevil-monolithic"))) {
-- qCritical() << "Could not start bluedevil-monolithic";
-+ qCCritical(BLUEDAEMON) << "Could not start bluedevil-monolithic";
- }
- }
-
- void BlueDevilDaemon::killMonolithic()
- {
-- qCDebug(BLUEDAEMON);
- QDBusMessage msg = QDBusMessage::createMethodCall(
- QStringLiteral("org.kde.bluedevilmonolithic"),
- QStringLiteral("/MainApplication"),
- QStringLiteral("org.kde.KApplication"),
- QStringLiteral("quit")
- );
-+
- QDBusPendingCall pending = QDBusConnection::sessionBus().asyncCall(msg);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pending);
-- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(monolithicQuit(QDBusPendingCallWatcher*)));
-+ connect(watcher, &QDBusPendingCallWatcher::finished, this, &BlueDevilDaemon::monolithicQuit);
- }
-
- void BlueDevilDaemon::onlineMode()
- {
-- qCDebug(BLUEDAEMON);
- if (d->m_status == Private::Online) {
- qCDebug(BLUEDAEMON) << "Already in onlineMode";
- return;
- }
-
- d->m_bluezAgent = new BluezAgent(new QObject());
-- connect(d->m_bluezAgent, SIGNAL(agentReleased()), this, SLOT(agentReleased()));
--
-- connect(d->m_adapter, SIGNAL(deviceFound(Device*)), this, SLOT(deviceFound(Device*)));
-- connect(&d->m_timer, SIGNAL(timeout()), d->m_adapter, SLOT(stopDiscovery()));
-+ connect(d->m_bluezAgent, &BluezAgent::agentReleased, this, &BlueDevilDaemon::agentReleased);
-+ connect(d->m_adapter, &Adapter::deviceFound, this, &BlueDevilDaemon::deviceFound);
-
- FileReceiverSettings::self()->load();
- if (!d->m_fileReceiver && FileReceiverSettings::self()->enabled()) {
- d->m_fileReceiver = new FileReceiver(this);
- }
-+
- if (d->m_fileReceiver && !FileReceiverSettings::self()->enabled()) {
- qCDebug(BLUEDAEMON) << "Stoppping server";
- delete d->m_fileReceiver;
-@@ -221,7 +255,7 @@ void BlueDevilDaemon::onlineMode()
- d->m_placesModel = new KFilePlacesModel();
- }
-
-- //Just in case kded was killed or crashed
-+ // Just in case kded was killed or crashed
- QModelIndex index = d->m_placesModel->closestItem(QUrl(QStringLiteral("bluetooth:/")));
- while (index.row() != -1) {
- d->m_placesModel->removePlace(index);
-@@ -237,8 +271,6 @@ void BlueDevilDaemon::onlineMode()
-
- void BlueDevilDaemon::monolithicFinished(const QString &)
- {
-- qCDebug(BLUEDAEMON);
--
- if (d->m_status == Private::Online) {
- executeMonolithic();
- }
-@@ -247,6 +279,7 @@ void BlueDevilDaemon::monolithicFinished(const QString &)
- void BlueDevilDaemon::offlineMode()
- {
- qCDebug(BLUEDAEMON) << "Offline mode";
-+
- if (d->m_status == Private::Offline) {
- qCDebug(BLUEDAEMON) << "Already in offlineMode";
- return;
-@@ -255,7 +288,7 @@ void BlueDevilDaemon::offlineMode()
- d->m_adapter = 0;
-
- if (d->m_bluezAgent) {
-- delete d->m_bluezAgent->parent(); // we meed to delete the parent for not leaking it
-+ delete d->m_bluezAgent->parent(); // we need to delete the parent for not leaking it
- d->m_bluezAgent = 0;
- }
-
-@@ -265,15 +298,12 @@ void BlueDevilDaemon::offlineMode()
- d->m_fileReceiver = 0;
- }
-
-- //Just to be sure that online was called
-+ // Just to be sure that online was called
- if (d->m_placesModel) {
- QModelIndex index = d->m_placesModel->closestItem(QUrl(QStringLiteral("bluetooth:/")));
- d->m_placesModel->removePlace(index);
- }
-
-- if (BlueDevil::Manager::self()->adapters().isEmpty()) {
-- killMonolithic();
-- }
- d->m_status = Private::Offline;
- }
-
-@@ -301,31 +331,84 @@ void BlueDevilDaemon::usableAdapterChanged(Adapter *adapter)
- }
- }
-
-+void BlueDevilDaemon::adapterAdded(Adapter *adapter)
-+{
-+ restoreAdapterState(adapter);
-+}
-+
-+void BlueDevilDaemon::adapterRemoved(Adapter *adapter)
-+{
-+ Q_UNUSED(adapter)
-+
-+ if (BlueDevil::Manager::self()->adapters().isEmpty()) {
-+ killMonolithic();
-+ }
-+}
-+
- void BlueDevilDaemon::deviceFound(Device *device)
- {
- qCDebug(BLUEDAEMON) << "DeviceFound: " << device->name();
-- d->m_discovered.append(deviceToInfo(device));
- org::kde::KDirNotify::emitFilesAdded(QUrl(QStringLiteral("bluetooth:/")));
- }
-
--void BlueDevilDaemon::monolithicQuit(QDBusPendingCallWatcher* watcher)
-+void BlueDevilDaemon::monolithicQuit(QDBusPendingCallWatcher *watcher)
- {
-- qCDebug(BLUEDAEMON);
- QDBusPendingReply reply = *watcher;
- if (reply.isError()) {
-- qDebug() << "Error response: " << reply.error().message();
-- killMonolithic();
-+ qCDebug(BLUEDAEMON) << "Error response: " << reply.error().message();
-+ }
-+}
-+
-+void BlueDevilDaemon::saveAdaptersState()
-+{
-+ Manager *manager = Manager::self();
-+ if (!manager) {
-+ return;
-+ }
-+
-+ KConfigGroup adaptersGroup = d->m_config->group("Adapters");
-+
-+ Q_FOREACH (Adapter *adapter, manager->adapters()) {
-+ const QString key = QString(QStringLiteral("%1_powered")).arg(adapter->address());
-+ adaptersGroup.writeEntry(key, adapter->isPowered());
-+ }
-+
-+ d->m_config->sync();
-+}
-+
-+// New adapters are automatically powered on
-+void BlueDevilDaemon::restoreAdaptersState()
-+{
-+ Manager *manager = Manager::self();
-+ if (!manager) {
-+ return;
-+ }
-+
-+ KConfigGroup adaptersGroup = d->m_config->group("Adapters");
-+
-+ Q_FOREACH (Adapter *adapter, manager->adapters()) {
-+ const QString key = QString(QStringLiteral("%1_powered")).arg(adapter->address());
-+ adapter->setPowered(adaptersGroup.readEntry(key, true));
- }
- }
-
-+void BlueDevilDaemon::restoreAdapterState(Adapter *adapter)
-+{
-+ KConfigGroup adaptersGroup = d->m_config->group("Adapters");
-+
-+ const QString key = QString(QStringLiteral("%1_powered")).arg(adapter->address());
-+ adapter->setPowered(adaptersGroup.readEntry(key, true));
-+}
-+
- DeviceInfo BlueDevilDaemon::deviceToInfo(Device *const device) const
- {
- DeviceInfo info;
-+
- info[QStringLiteral("name")] = device->friendlyName();
- info[QStringLiteral("icon")] = device->icon();
- info[QStringLiteral("address")] = device->address();
-- info[QStringLiteral("discovered")] = QStringLiteral("true");
-- info[QStringLiteral("UUIDs")] = device->UUIDs().join(QStringLiteral(","));
-+ info[QStringLiteral("UBI")] = device->UBI();
-+ info[QStringLiteral("UUIDs")] = device->UUIDs().join(QLatin1Char(','));
-
- return info;
- }
-diff --git a/src/daemon/kded/BlueDevilDaemon.h b/src/daemon/kded/BlueDevilDaemon.h
-index a8688ae18871454e34a586f76aa10693180f5cbe..a4a396b576294593d0cf886369a833d059d91ab3 100644
---- a/src/daemon/kded/BlueDevilDaemon.h
-+++ b/src/daemon/kded/BlueDevilDaemon.h
-@@ -22,43 +22,59 @@
- #ifndef BLUEDEVILDAEMON_H
- #define BLUEDEVILDAEMON_H
-
--#include
-+#include
- #include
-
--typedef QMap DeviceInfo;
-+typedef QMap DeviceInfo;
- typedef QMap QMapDeviceInfo;
-
- class QDBusPendingCallWatcher;
--namespace BlueDevil {
-+
-+namespace BlueDevil
-+{
- class Adapter;
- class Device;
- }
-+
- using namespace BlueDevil;
-
--class Q_DECL_EXPORT BlueDevilDaemon
-- : public KDEDModule
-+class Q_DECL_EXPORT BlueDevilDaemon : public KDEDModule
- {
- Q_OBJECT
- Q_CLASSINFO("D-Bus Interface", "org.kde.BlueDevil")
-
- public:
- /**
-- * Stablish basics connections with libbluedevil signals and calls online if interfaces are availables
-+ * Establish basics connections with libbluedevil signals and calls online if interfaces are availables
- */
- BlueDevilDaemon(QObject *parent, const QList&);
-- virtual ~BlueDevilDaemon();
-+ ~BlueDevilDaemon();
-
- public Q_SLOTS:
-+ /**
-+ * Returns whether the daemon is in online mode (eg. Bluez services are
-+ * running and we have usable adapter)
-+ */
- Q_SCRIPTABLE bool isOnline();
-
- /**
-- * This slot will return a list of devices made of: configured and discovered devices.
-- * Going deeper, the first time that this slot is called a discovery of X seconds will start
-- * Then if this slot is consulted again it will return configured and discovered device. Once
-- * the discovery ends it won't start a new discovery until N seconds pass.
-+ * Returns QMap with all known devices
-+ */
-+ Q_SCRIPTABLE QMapDeviceInfo allDevices();
-+
-+ /**
-+ * Returns DeviceInfo for one device.
- */
-- Q_SCRIPTABLE QMapDeviceInfo knownDevices();
-+ Q_SCRIPTABLE DeviceInfo device(const QString &address);
-
-+ /**
-+ * Starts discovery for timeout miliseconds (0 = forever)
-+ */
-+ Q_SCRIPTABLE void startDiscovering(quint32 timeout);
-+
-+ /**
-+ * Stops discovery (if it was previously started)
-+ */
- Q_SCRIPTABLE void stopDiscovering();
-
- private:
-@@ -81,20 +97,29 @@ private Q_SLOTS:
- */
- void usableAdapterChanged(Adapter *adapter);
-
-+ void adapterAdded(Adapter *adapter);
-+ void adapterRemoved(Adapter *adapter);
-+
- /**
- * When the agent is released this is called to unload it
- */
- void agentReleased();
-
-- void deviceFound(Device*);
-- void monolithicQuit(QDBusPendingCallWatcher* watcher);
-+ void login1PrepareForSleep(bool active);
-+
-+ void deviceFound(Device *device);
-+ void monolithicQuit(QDBusPendingCallWatcher *watcher);
- void monolithicFinished(const QString &);
-
- private:
- void executeMonolithic();
- void killMonolithic();
-
-- DeviceInfo deviceToInfo (Device *const device) const;
-+ void saveAdaptersState();
-+ void restoreAdaptersState();
-+ void restoreAdapterState(Adapter *adapter);
-+
-+ DeviceInfo deviceToInfo(Device *const device) const;
-
- private:
- struct Private;
-diff --git a/src/daemon/kded/CMakeLists.txt b/src/daemon/kded/CMakeLists.txt
-index 3a8ddb75db866034dcc2a0b80b93e460f164fba4..651e68dd47f4919061713d223c4395e2e8a0f231 100644
---- a/src/daemon/kded/CMakeLists.txt
-+++ b/src/daemon/kded/CMakeLists.txt
-@@ -26,7 +26,7 @@ kconfig_add_kcfg_files(kded_bluedevil_SRCS ../../settings/filereceiversettings.k
-
- add_library(kded_bluedevil MODULE ${kded_bluedevil_SRCS})
-
--kservice_desktop_to_json(kded_bluedevil bluedevil.desktop)
-+kcoreaddons_desktop_to_json(kded_bluedevil bluedevil.desktop)
-
- target_link_libraries(kded_bluedevil
- Qt5::Gui
-diff --git a/src/daemon/kded/bluezagent.h b/src/daemon/kded/bluezagent.h
-index aedfc90876e6bdee5d0335ad9b72c577d508f3cc..d5f4db7684fd032702a5268946c0840a395a2911 100644
---- a/src/daemon/kded/bluezagent.h
-+++ b/src/daemon/kded/bluezagent.h
-@@ -19,7 +19,6 @@
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
--
- #ifndef BLUEZAGENT_H
- #define BLUEZAGENT_H
-
-@@ -28,7 +27,9 @@
- #include
-
- class QProcess;
--namespace BlueDevil {
-+
-+namespace BlueDevil
-+{
- class Adapter;
- }
-
-@@ -41,8 +42,7 @@ namespace BlueDevil {
- * @ref AgentListenerWorker
- * @since 1.0
- */
--class BluezAgent
-- : public QDBusAbstractAdaptor
-+class BluezAgent : public QDBusAbstractAdaptor
- {
- Q_OBJECT
- Q_CLASSINFO("D-Bus Interface", "org.bluez.Agent1")
-@@ -51,7 +51,7 @@ public:
- /**
- * Register the path and initialize the m_adapter
- */
-- BluezAgent(QObject *parent);
-+ explicit BluezAgent(QObject *parent);
-
- public Q_SLOTS:
- /**
-@@ -62,12 +62,12 @@ public Q_SLOTS:
- /**
- * Called by bluez to ask for a device authoritation
- */
-- void AuthorizeService(const QDBusObjectPath &device, const QString& uuid, const QDBusMessage &msg);
-+ void AuthorizeService(const QDBusObjectPath &device, const QString &uuid, const QDBusMessage &msg);
-
- /**
- * Called by bluez to ask for a PIN
- */
-- QString RequestPinCode(const QDBusObjectPath& device, const QDBusMessage& msg);
-+ QString RequestPinCode(const QDBusObjectPath &device, const QDBusMessage &msg);
-
- /**
- * Called by bluez to ask for a passkey, currently is a aslias of RequestPinCode
-@@ -112,6 +112,7 @@ public Q_SLOTS:
- * This slot gets called when the RequestPasskey helper ends
- */
- void processClosedPasskey(int exitCode);
-+
- Q_SIGNALS:
- /**
- * Emited to propagate the release call (so BlueDevil can decide what to do)
-@@ -131,7 +132,7 @@ private:
- * @param helper Name of the helper
- * @param msg The msg got from bluez
- */
-- void sendBluezError(const QString& helper, const QDBusMessage &msg);
-+ void sendBluezError(const QString &helper, const QDBusMessage &msg);
-
- /**
- * Returns the name of the device if it is registered on the bus
-@@ -142,8 +143,9 @@ private:
- QString deviceName(const QString &UBI);
-
- private:
-- QProcess *m_process;
-- QDBusMessage m_msg;
-- QString m_currentHelper;
-+ QProcess *m_process;
-+ QDBusMessage m_msg;
-+ QString m_currentHelper;
- };
--#endif
-+
-+#endif // BLUEZAGENT_H
-diff --git a/src/daemon/kded/filereceiver/filereceiver.cpp b/src/daemon/kded/filereceiver/filereceiver.cpp
-index 00405b1f254cb60aaeb5b3b7ecf292a2ef7044c4..91d20051b2e3100a73261af0f70c9a3a75e0739e 100644
---- a/src/daemon/kded/filereceiver/filereceiver.cpp
-+++ b/src/daemon/kded/filereceiver/filereceiver.cpp
-@@ -19,40 +19,46 @@
- #include "filereceiver.h"
- #include "../BlueDevilDaemon.h"
- #include "obexagent.h"
--#include "obex_agent_manager.h"
-
- #include
- #include
- #include
-+#include
-
--FileReceiver::FileReceiver(QObject* parent)
-+FileReceiver::FileReceiver(QObject *parent)
- : QObject(parent)
- {
-- qCDebug(BLUEDAEMON);
- qDBusRegisterMetaType();
-
- new ObexAgent(this);
-- org::bluez::obex::AgentManager1 *agent = new org::bluez::obex::AgentManager1(QStringLiteral("org.bluez.obex"),
-- QStringLiteral("/org/bluez/obex"),
-- QDBusConnection::sessionBus(),
-- this);
-+ m_agentManager = new org::bluez::obex::AgentManager1(QStringLiteral("org.bluez.obex"),
-+ QStringLiteral("/org/bluez/obex"),
-+ QDBusConnection::sessionBus(),
-+ this);
-
-- QDBusPendingReply r = agent->RegisterAgent(QDBusObjectPath(QStringLiteral("/BlueDevil_receiveAgent")));
-- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(r, this);
-- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(agentRegistered(QDBusPendingCallWatcher*)));
-+ registerAgent();
-+
-+ // obexd should be set to auto-start by D-Bus (D-Bus activation), so this should restart it in case of crash
-+ QDBusServiceWatcher *serviceWatcher = new QDBusServiceWatcher(QStringLiteral("org.bluez.obex"), QDBusConnection::sessionBus(),
-+ QDBusServiceWatcher::WatchForUnregistration, this);
-+ connect(serviceWatcher, &QDBusServiceWatcher::serviceUnregistered, this, &FileReceiver::registerAgent);
- }
-
--FileReceiver::~FileReceiver()
-+void FileReceiver::registerAgent()
- {
--
-+ QDBusPendingReply r = m_agentManager->RegisterAgent(QDBusObjectPath(QStringLiteral("/BlueDevil_receiveAgent")));
-+ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(r, this);
-+ connect(watcher, &QDBusPendingCallWatcher::finished, this, &FileReceiver::agentRegistered);
- }
-
--void FileReceiver::agentRegistered(QDBusPendingCallWatcher* call)
-+void FileReceiver::agentRegistered(QDBusPendingCallWatcher *call)
- {
-- QDBusPendingReply r = *call;
-- qCDebug(BLUEDAEMON) << "Error: " << r.isError();
-+ QDBusPendingReply r = *call;
-+
- if (r.isError()) {
-- qCDebug(BLUEDAEMON) << r.error().message();
-+ qCWarning(BLUEDAEMON) << "Error registering agent" << r.error().message();
-+ } else {
-+ qCDebug(BLUEDAEMON) << "Agent registered";
- }
-
- call->deleteLater();
-diff --git a/src/daemon/kded/filereceiver/filereceiver.h b/src/daemon/kded/filereceiver/filereceiver.h
-index e6dc6fb075923a33a90b69773f5eeaf46d48ad64..7011f4a4d00e13ca44684498d9bf1539e1b133a0 100644
---- a/src/daemon/kded/filereceiver/filereceiver.h
-+++ b/src/daemon/kded/filereceiver/filereceiver.h
-@@ -21,16 +21,23 @@
-
- #include
-
-+#include "obex_agent_manager.h"
-+
- class QDBusPendingCallWatcher;
-+
- class FileReceiver : public QObject
- {
- Q_OBJECT
-- public:
-- explicit FileReceiver(QObject* parent = 0);
-- virtual ~FileReceiver();
-
-- private Q_SLOTS:
-- void agentRegistered(QDBusPendingCallWatcher* call);
-+public:
-+ explicit FileReceiver(QObject *parent = 0);
-+
-+private Q_SLOTS:
-+ void registerAgent();
-+ void agentRegistered(QDBusPendingCallWatcher *call);
-+
-+private:
-+ org::bluez::obex::AgentManager1 *m_agentManager;
- };
-
--#endif //FILE_RECEIVER_H
-+#endif // FILE_RECEIVER_H
-diff --git a/src/daemon/kded/filereceiver/obexagent.cpp b/src/daemon/kded/filereceiver/obexagent.cpp
-index 7fc7bca4c201905c3f2ba23b85085a6cc6984b86..5af1400671b5a9f0dd20ac44f3751ef7f5e80cc9 100644
---- a/src/daemon/kded/filereceiver/obexagent.cpp
-+++ b/src/daemon/kded/filereceiver/obexagent.cpp
-@@ -24,24 +24,17 @@
- #include
- #include
-
--ObexAgent::ObexAgent(QObject* parent)
-+ObexAgent::ObexAgent(QObject *parent)
- : QDBusAbstractAdaptor(parent)
- {
-- qCDebug(BLUEDAEMON);
- if (!QDBusConnection::sessionBus().registerObject(QStringLiteral("/BlueDevil_receiveAgent"), parent)) {
-- qDebug() << "The dbus object can't be registered";
-- return;
-+ qCWarning(BLUEDAEMON) << "The DBus object can't be registered";
- }
- }
-
--ObexAgent::~ObexAgent()
--{
--
--}
--
- QString ObexAgent::AuthorizePush(const QDBusObjectPath& path, const QDBusMessage &msg)
- {
-- qCDebug(BLUEDAEMON);
-+ qCDebug(BLUEDAEMON) << "AuthorizePush" << path.path();
-
- msg.setDelayedReply(true);
-
-@@ -53,11 +46,10 @@ QString ObexAgent::AuthorizePush(const QDBusObjectPath& path, const QDBusMessage
-
- void ObexAgent::Cancel()
- {
-- qCDebug(BLUEDAEMON);
-+ qCDebug(BLUEDAEMON) << "Cancel";
- }
-
--
- void ObexAgent::Release()
- {
-- qCDebug(BLUEDAEMON);
-+ qCDebug(BLUEDAEMON) << "Release";
- }
-diff --git a/src/daemon/kded/filereceiver/obexagent.h b/src/daemon/kded/filereceiver/obexagent.h
-index 72c322028886039580d11d90569b6bd9812f8646..2300fe3176fad594899be25eca5040d3f5b939d5 100644
---- a/src/daemon/kded/filereceiver/obexagent.h
-+++ b/src/daemon/kded/filereceiver/obexagent.h
-@@ -24,20 +24,19 @@
- #include
-
- class QDBusMessage;
-+
- class ObexAgent : public QDBusAbstractAdaptor
- {
- Q_OBJECT
- Q_CLASSINFO("D-Bus Interface", "org.bluez.obex.Agent1")
-
-- public:
-- explicit ObexAgent(QObject* parent);
-- virtual ~ObexAgent();
--
-- public Q_SLOTS:
-- QString AuthorizePush(const QDBusObjectPath &path, const QDBusMessage &msg);
-+public:
-+ explicit ObexAgent(QObject *parent);
-
-- void Release();
-- void Cancel();
-+public Q_SLOTS:
-+ QString AuthorizePush(const QDBusObjectPath &path, const QDBusMessage &msg);
-+ void Release();
-+ void Cancel();
- };
-
--#endif //OBEX_AGENT_H
-+#endif // OBEX_AGENT_H
-diff --git a/src/daemon/kded/filereceiver/receivefilejob.cpp b/src/daemon/kded/filereceiver/receivefilejob.cpp
-index 5b9a8f4918ddea5e2be3c65d10195aaa04d301b5..f6342fd6bac721afd1b72df97fd085c1d5be7ff4 100644
---- a/src/daemon/kded/filereceiver/receivefilejob.cpp
-+++ b/src/daemon/kded/filereceiver/receivefilejob.cpp
-@@ -42,7 +42,7 @@
-
- using namespace BlueDevil;
-
--ReceiveFileJob::ReceiveFileJob(const QDBusMessage& msg, const QString &path, QObject* parent)
-+ReceiveFileJob::ReceiveFileJob(const QDBusMessage &msg, const QString &path, QObject *parent)
- : KJob(parent)
- , m_speedBytes(0)
- , m_path(path)
-@@ -51,11 +51,6 @@ ReceiveFileJob::ReceiveFileJob(const QDBusMessage& msg, const QString &path, QOb
- setCapabilities(Killable);
- }
-
--ReceiveFileJob::~ReceiveFileJob()
--{
--
--}
--
- void ReceiveFileJob::start()
- {
- QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection);
-@@ -63,7 +58,6 @@ void ReceiveFileJob::start()
-
- bool ReceiveFileJob::doKill()
- {
-- qCDebug(BLUEDAEMON);
- m_transfer->Cancel();
- return true;
- }
-@@ -85,28 +79,40 @@ void ReceiveFileJob::init()
- m_path,
- QDBusConnection::sessionBus(),
- this);
-- connect(m_transferProps,
-- SIGNAL(PropertiesChanged(QString,QVariantMap,QStringList)),
-- SLOT(transferPropertiesChanged(QString,QVariantMap,QStringList)));
-+ connect(m_transferProps, &org::freedesktop::DBus::Properties::PropertiesChanged,
-+ this, &ReceiveFileJob::transferPropertiesChanged);
-
- m_session = new org::bluez::obex::Session1(QStringLiteral("org.bluez.obex"),
- m_transfer->session().path(),
- QDBusConnection::sessionBus(),
- this);
-+
- qCDebug(BLUEDAEMON) << m_session->destination();
-
-- Device* device = Manager::self()->usableAdapter()->deviceForAddress(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;
-+ }
-+ }
-+
- qCDebug(BLUEDAEMON) << device;
-
- m_deviceName = m_session->destination();
-+
- if (device) {
- qCDebug(BLUEDAEMON) << device->name();
- m_deviceName = device->name();
-+ isDeviceTrusted = device->isTrusted();
- }
-
- FileReceiverSettings::self()->load();
- qCDebug(BLUEDAEMON) << "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) {
-@@ -133,9 +139,9 @@ void ReceiveFileJob::showNotification()
-
- m_notification->setActions(actions);
-
-- connect(m_notification, SIGNAL(action1Activated()), SLOT(slotAccept()));
-- connect(m_notification, SIGNAL(action2Activated()), SLOT(slotCancel()));
-- connect(m_notification, SIGNAL(closed()), SLOT(slotCancel()));
-+ connect(m_notification, &KNotification::action1Activated, this, &ReceiveFileJob::slotAccept);
-+ connect(m_notification, &KNotification::action2Activated, this, &ReceiveFileJob::slotCancel);
-+ connect(m_notification, &KNotification::closed, this, &ReceiveFileJob::slotCancel);
-
- int size = IconSize(KIconLoader::Desktop);
- m_notification->setPixmap(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")).pixmap(size, size));
-@@ -145,12 +151,13 @@ void ReceiveFileJob::showNotification()
-
- void ReceiveFileJob::slotAccept()
- {
-- qCDebug(BLUEDAEMON);
- KIO::getJobTracker()->registerJob(this);
-
- m_originalFileName = m_transfer->name();
- m_tempPath = createTempPath(m_transfer->name());
-+
- qCDebug(BLUEDAEMON) << m_tempPath;
-+
- QDBusMessage msg = m_msg.createReply(m_tempPath);
- QDBusConnection::sessionBus().send(msg);
- }
-@@ -166,13 +173,12 @@ void ReceiveFileJob::slotSaveAs()
-
- void ReceiveFileJob::slotCancel()
- {
-- qCDebug(BLUEDAEMON);
- QDBusMessage msg = m_msg.createErrorReply(QStringLiteral("org.bluez.obex.Error.Rejected"),
- QStringLiteral("org.bluez.obex.Error.Rejected"));
- QDBusConnection::sessionBus().send(msg);
- }
-
--void ReceiveFileJob::transferPropertiesChanged(const QString& interface, const QVariantMap& properties, const QStringList& invalidatedProperties)
-+void ReceiveFileJob::transferPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProperties)
- {
- qCDebug(BLUEDAEMON) << interface;
- qCDebug(BLUEDAEMON) << properties;
-@@ -188,9 +194,10 @@ void ReceiveFileJob::transferPropertiesChanged(const QString& interface, const Q
- }
- }
-
--void ReceiveFileJob::statusChanged(const QVariant& value)
-+void ReceiveFileJob::statusChanged(const QVariant &value)
- {
- qCDebug(BLUEDAEMON) << value;
-+
- QString status = value.toString();
-
- FileReceiverSettings::self()->load();
-@@ -210,7 +217,7 @@ void ReceiveFileJob::statusChanged(const QVariant& value)
- } else if (status == QLatin1String("complete")) {
- KIO::CopyJob* job = KIO::move(QUrl::fromLocalFile(m_tempPath), savePath, KIO::HideProgressInfo);
- job->setUiDelegate(0);
-- connect(job, SIGNAL(finished(KJob*)), SLOT(moveFinished(KJob*)));
-+ connect(job, &KIO::CopyJob::finished, this, &ReceiveFileJob::moveFinished);
- return;
- } else if (status == QLatin1String("error")) {
- setError(KJob::UserDefinedError);
-@@ -224,6 +231,7 @@ void ReceiveFileJob::statusChanged(const QVariant& value)
- void ReceiveFileJob::transferChanged(const QVariant& value)
- {
- qCDebug(BLUEDAEMON) << value;
-+
- bool ok = false;
- qulonglong bytes = value.toULongLong(&ok);
- if (!ok) {
-@@ -231,7 +239,7 @@ void ReceiveFileJob::transferChanged(const QVariant& value)
- return;
- }
-
-- //If a least 1 second has passed since last update
-+ // If a least 1 second has passed since last update
- int secondsSinceLastTime = m_time.secsTo(QTime::currentTime());
- if (secondsSinceLastTime > 0) {
- float speed = (bytes - m_speedBytes) / secondsSinceLastTime;
-@@ -260,13 +268,13 @@ QString ReceiveFileJob::createTempPath(const QString &fileName) const
- {
- QString xdgCacheHome = QFile::decodeName(qgetenv("XDG_CACHE_HOME"));
- if (xdgCacheHome.isEmpty()) {
-- xdgCacheHome = QDir::homePath() + QLatin1String("/.cache");
-+ xdgCacheHome = QDir::homePath() + QLatin1String("/.cache");
- }
-
- xdgCacheHome.append(QLatin1String("/obexd/"));
-- QString path = xdgCacheHome + fileName;
-- int i = 0;
-+ QString path = xdgCacheHome + fileName;
-
-+ int i = 0;
- while (QFile::exists(path)) {
- path = xdgCacheHome + fileName + QString::number(i);
- i++;
-diff --git a/src/daemon/kded/filereceiver/receivefilejob.h b/src/daemon/kded/filereceiver/receivefilejob.h
-index 13c69134a569b4a62ae1f82da34b7f5dbd8307d6..68a88feab782bcb9d93c9deb01fa32af51e0b722 100644
---- a/src/daemon/kded/filereceiver/receivefilejob.h
-+++ b/src/daemon/kded/filereceiver/receivefilejob.h
-@@ -16,7 +16,6 @@
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
- *************************************************************************************/
-
--
- #ifndef RECEIVE_FILE_JOB_H
- #define RECEIVE_FILE_JOB_H
-
-@@ -28,42 +27,44 @@
- class OrgBluezObexSession1Interface;
- class OrgBluezObexTransfer1Interface;
- class OrgFreedesktopDBusPropertiesInterface;
-+
- class ReceiveFileJob : public KJob
- {
- Q_OBJECT
-- public:
-- explicit ReceiveFileJob(const QDBusMessage &msg, const QString &path, QObject* parent = 0);
-- virtual ~ReceiveFileJob();
-
-- virtual void start();
-- protected:
-- virtual bool doKill();
-+public:
-+ explicit ReceiveFileJob(const QDBusMessage &msg, const QString &path, QObject *parent = 0);
-+
-+ void start() Q_DECL_OVERRIDE;
-+
-+protected:
-+ bool doKill() Q_DECL_OVERRIDE;
-
-- private Q_SLOTS:
-- void init();
-- void showNotification();
-- void slotCancel();
-- void slotAccept();
-- void slotSaveAs();
-- void transferPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProperties);
-- void moveFinished(KJob* job);
-+private Q_SLOTS:
-+ void init();
-+ void showNotification();
-+ void slotCancel();
-+ void slotAccept();
-+ void slotSaveAs();
-+ void transferPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProperties);
-+ void moveFinished(KJob *job);
-
-- private:
-- void transferChanged(const QVariant &value);
-- void statusChanged(const QVariant &value);
-- QString createTempPath(const QString &fileName) const;
-+private:
-+ void transferChanged(const QVariant &value);
-+ void statusChanged(const QVariant &value);
-+ QString createTempPath(const QString &fileName) const;
-
-- QTime m_time;
-- qulonglong m_speedBytes;
-- QString m_path;
-- QString m_tempPath;
-- QString m_originalFileName;
-- QString m_deviceName;
-- QDBusMessage m_msg;
-- OrgBluezObexSession1Interface *m_session;
-- OrgBluezObexTransfer1Interface *m_transfer;
-- OrgFreedesktopDBusPropertiesInterface *m_transferProps;
-+ QTime m_time;
-+ qulonglong m_speedBytes;
-+ QString m_path;
-+ QString m_tempPath;
-+ QString m_originalFileName;
-+ QString m_deviceName;
-+ QDBusMessage m_msg;
-+ OrgBluezObexSession1Interface *m_session;
-+ OrgBluezObexTransfer1Interface *m_transfer;
-+ OrgFreedesktopDBusPropertiesInterface *m_transferProps;
- };
-
--#endif //RECEIVE_FILE_JOB_H
-+#endif // RECEIVE_FILE_JOB_H
-
-diff --git a/src/fileitemactionplugin/CMakeLists.txt b/src/fileitemactionplugin/CMakeLists.txt
-index 3737c683922efc0d21222281a55e56bc9a70748f..39d6e33e58b8d7309a145a61fe2a3911d77433d3 100644
---- a/src/fileitemactionplugin/CMakeLists.txt
-+++ b/src/fileitemactionplugin/CMakeLists.txt
-@@ -1,9 +1,17 @@
--add_library(bluetoothfileitemaction MODULE sendfileitemaction.cpp)
--kservice_desktop_to_json(bluetoothfileitemaction bluedevilsendfile.desktop)
-+set(fileitemactionplugin_SRCS
-+ sendfileitemaction.cpp)
-+
-+set(kded_bluedevil.xml ${CMAKE_CURRENT_SOURCE_DIR}/kded_bluedevil.xml)
-+set_source_files_properties(${kded_bluedevil.xml} PROPERTIES INCLUDE "types.h")
-+qt5_add_dbus_interface(fileitemactionplugin_SRCS ${kded_bluedevil.xml} kded_bluedevil)
-+
-+add_library(bluetoothfileitemaction MODULE ${fileitemactionplugin_SRCS})
-+kcoreaddons_desktop_to_json(bluetoothfileitemaction bluedevilsendfile.desktop)
- target_link_libraries(bluetoothfileitemaction
- Qt5::Widgets
- KF5::I18n
- KF5::KIOFileWidgets
- ${LibBlueDevil_LIBRARIES})
-+
- install(TARGETS bluetoothfileitemaction DESTINATION ${PLUGIN_INSTALL_DIR})
- install(FILES bluedevilsendfile.desktop DESTINATION ${SERVICES_INSTALL_DIR})
-diff --git a/src/fileitemactionplugin/kded_bluedevil.xml b/src/fileitemactionplugin/kded_bluedevil.xml
-new file mode 100644
-index 0000000000000000000000000000000000000000..e4478975fd84d080888138513dd73c985117a894
---- /dev/null
-+++ b/src/fileitemactionplugin/kded_bluedevil.xml
-@@ -0,0 +1,23 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/fileitemactionplugin/sendfileitemaction.cpp b/src/fileitemactionplugin/sendfileitemaction.cpp
-index c750bc4f3319ee93151b3c9b88b040993330285e..ba9d1fde43ed7c1fce90f9a30d377b968fffadef 100644
---- a/src/fileitemactionplugin/sendfileitemaction.cpp
-+++ b/src/fileitemactionplugin/sendfileitemaction.cpp
-@@ -33,57 +33,56 @@
- #include
- #include
-
--#include
--
--using namespace BlueDevil;
--
- K_PLUGIN_FACTORY_WITH_JSON(SendFileItemActionFactory,
- "bluedevilsendfile.json",
- registerPlugin();)
-
--SendFileItemAction::SendFileItemAction(QObject* parent, const QVariantList& args)
-+SendFileItemAction::SendFileItemAction(QObject *parent, const QVariantList &args)
- : KAbstractFileItemActionPlugin(parent)
- {
- Q_UNUSED(args)
-+
-+ qDBusRegisterMetaType();
-+ qDBusRegisterMetaType();
-+
-+ m_kded = new org::kde::BlueDevil(QStringLiteral("org.kde.kded5"), QStringLiteral("/modules/bluedevil"),
-+ QDBusConnection::sessionBus(), this);
- }
-
--QList< QAction* > SendFileItemAction::actions(const KFileItemListProperties& fileItemInfos, QWidget* parentWidget)
-+QList SendFileItemAction::actions(const KFileItemListProperties &infos, QWidget *parent)
- {
-- Q_UNUSED(parentWidget)
-- QList< QAction* > list;
-+ Q_UNUSED(parent)
-
-- m_fileItemInfos = fileItemInfos;
-+ QList list;
-
-- //If there is no adaptor, there is no bluetooth
-- if (!Manager::self()->usableAdapter()) {
-+ // Don't show the action for files that we can't send or when Bluetooth is offline.
-+ if (!infos.isLocal() || !m_kded->isOnline()) {
- return list;
- }
-- Adapter *adapter = Manager::self()->usableAdapter();
-+
-+ m_infos = infos;
-
- QAction *menuAction = new QAction(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")), i18n("Send via Bluetooth"), this);
- QMenu *menu = new QMenu();
-
-- //If we have configured devices, put them first
-- QList< Device * > devices = adapter->devices();
-- if (!devices.isEmpty()) {
-- Q_FOREACH(Device *device, devices) {
-- if (device->UUIDs().contains(QLatin1String("00001105-0000-1000-8000-00805F9B34FB"), Qt::CaseInsensitive)) {
-- QAction *action = new QAction(QIcon::fromTheme(device->icon()), device->name(), this);
-- connect(action, SIGNAL(triggered(bool)), this, SLOT(deviceTriggered()));
-- action->setData(device->UBI());
-- menu->addAction(action);
-- }
-+ const QMapDeviceInfo &devices = m_kded->allDevices().value();
-+ Q_FOREACH (const DeviceInfo &device, devices) {
-+ if (device.value(QStringLiteral("UUIDs")).contains(QLatin1String("00001105-0000-1000-8000-00805F9B34FB"))) {
-+ QAction *action = new QAction(QIcon::fromTheme(device[QStringLiteral("icon")]), device.value(QStringLiteral("name")), this);
-+ connect(action, &QAction::triggered, this, &SendFileItemAction::deviceTriggered);
-+ action->setData(device.value(QStringLiteral("UBI")));
-+ menu->addAction(action);
- }
- }
-
- QAction *otherAction = new QAction(this);
-- connect(otherAction, SIGNAL(triggered(bool)), this, SLOT(otherTriggered()));
- if (menu->actions().isEmpty()) {
- otherAction->setText(i18nc("Find Bluetooth device", "Find Device..."));
- } else {
- menu->addSeparator();
- otherAction->setText(i18nc("Other Bluetooth device", "Other..."));
- }
-+ connect(otherAction, &QAction::triggered, this, &SendFileItemAction::otherTriggered);
- menu->addAction(otherAction);
-
- menuAction->setMenu(menu);
-@@ -94,13 +93,13 @@ QList< QAction* > SendFileItemAction::actions(const KFileItemListProperties& fil
- void SendFileItemAction::deviceTriggered()
- {
- QStringList args;
-- args.append(QLatin1String("-u") % static_cast(sender())->data().toString());
-+ args.append(QStringLiteral("-u") % static_cast(sender())->data().toString());
-
-- const QList &fileList = m_fileItemInfos.urlList();
-- Q_FOREACH(const QUrl &url, fileList) {
-- args.append(QLatin1String("-f") % url.path());
-+ const QList &fileList = m_infos.urlList();
-+ Q_FOREACH (const QUrl &url, fileList) {
-+ args.append(QStringLiteral("-f") % url.path());
- }
-- qDebug() << args;
-+
- KProcess process;
- process.setProgram(QStringLiteral("bluedevil-sendfile"), args);
- process.startDetached();
-@@ -108,12 +107,11 @@ void SendFileItemAction::deviceTriggered()
-
- void SendFileItemAction::otherTriggered()
- {
-- qDebug();
- QStringList args;
-
-- const QList &fileList = m_fileItemInfos.urlList();
-- Q_FOREACH(const QUrl &url, fileList) {
-- args.append(QLatin1String("-f") % url.path());
-+ const QList &fileList = m_infos.urlList();
-+ Q_FOREACH (const QUrl &url, fileList) {
-+ args.append(QStringLiteral("-f") % url.path());
- }
-
- KProcess process;
-diff --git a/src/fileitemactionplugin/sendfileitemaction.h b/src/fileitemactionplugin/sendfileitemaction.h
-index f9eecc3a524c418330b706b666324eb76b731b6b..a1948319f4501710a6cbd1eb57b1202da726ac88 100644
---- a/src/fileitemactionplugin/sendfileitemaction.h
-+++ b/src/fileitemactionplugin/sendfileitemaction.h
-@@ -24,22 +24,26 @@
- #include
- #include
-
-+#include "kded_bluedevil.h"
-+
- class QAction;
- class QWidget;
-
- class SendFileItemAction : public KAbstractFileItemActionPlugin
- {
--Q_OBJECT
-+ Q_OBJECT
-+
- public:
-- SendFileItemAction(QObject* parent, const QVariantList &args);
-- virtual QList< QAction* > actions(const KFileItemListProperties& fileItemInfos, QWidget* parentWidget);
-+ SendFileItemAction(QObject *parent, const QVariantList &args);
-+ QList actions(const KFileItemListProperties &infos, QWidget *parent) Q_DECL_OVERRIDE;
-
- private Q_SLOTS:
- void deviceTriggered();
- void otherTriggered();
-
- private:
-- KFileItemListProperties m_fileItemInfos;
-+ org::kde::BlueDevil *m_kded;
-+ KFileItemListProperties m_infos;
- };
-
- #endif // SENDFILEITEMACTION_H
-diff --git a/src/fileitemactionplugin/types.h b/src/fileitemactionplugin/types.h
-new file mode 100644
-index 0000000000000000000000000000000000000000..53f2e4a9db60946e70ca50b630f77fa90942ffec
---- /dev/null
-+++ b/src/fileitemactionplugin/types.h
-@@ -0,0 +1,11 @@
-+#ifndef FILEITEMACTIONPLUGINTYPES
-+#define FILEITEMACTIONPLUGINTYPES
-+
-+#include
-+
-+typedef QMap DeviceInfo;
-+typedef QMap QMapDeviceInfo;
-+Q_DECLARE_METATYPE(DeviceInfo)
-+Q_DECLARE_METATYPE(QMapDeviceInfo)
-+
-+#endif
-diff --git a/src/kcmodule/CMakeLists.txt b/src/kcmodule/CMakeLists.txt
-index 64e6050abd87c098659c13cf25d12933ed111616..4145c1bc814c84e4a84220d7b2da7243491d16ac 100644
---- a/src/kcmodule/CMakeLists.txt
-+++ b/src/kcmodule/CMakeLists.txt
-@@ -24,9 +24,9 @@ add_library(kcm_bluedevildevices MODULE ${kcm_bluedevildevices_PART_SRCS})
- add_library(kcm_bluedeviladapters MODULE ${kcm_bluedeviladapters_PART_SRCS})
- add_library(kcm_bluedeviltransfer MODULE ${kcm_bluedeviltransfer_PART_SRCS} ${kcm_bluedeviltransfer_PART_SRCS_UI})
-
--kservice_desktop_to_json(kcm_bluedevildevices bluedevildevices.desktop)
--kservice_desktop_to_json(kcm_bluedeviladapters bluedeviladapters.desktop)
--kservice_desktop_to_json(kcm_bluedeviltransfer bluedeviltransfer.desktop)
-+kcoreaddons_desktop_to_json(kcm_bluedevildevices bluedevildevices.desktop)
-+kcoreaddons_desktop_to_json(kcm_bluedeviladapters bluedeviladapters.desktop)
-+kcoreaddons_desktop_to_json(kcm_bluedeviltransfer bluedeviltransfer.desktop)
-
- target_link_libraries(kcm_bluedevildevices
- Qt5::Widgets
-diff --git a/src/kcmodule/bluedeviladapters.cpp b/src/kcmodule/bluedeviladapters.cpp
-index 9185552f02bb3406b8448cd0e64eb818a6fbe117..13504c9a12a33c6deefd9f51ce6f54d9cb90c02a 100644
---- a/src/kcmodule/bluedeviladapters.cpp
-+++ b/src/kcmodule/bluedeviladapters.cpp
-@@ -62,8 +62,8 @@ AdapterSettings::AdapterSettings(Adapter *adapter, KCModule *parent)
- buttonGroup->addButton(m_alwaysVisible);
- buttonGroup->addButton(m_temporaryVisible);
-
-- m_name->setText(adapter->alias());
-- m_nameOrig = adapter->alias();
-+ m_name->setText(adapter->name());
-+ m_nameOrig = adapter->name();
- m_hiddenOrig = false;
- m_alwaysVisibleOrig = false;
- m_temporaryVisibleOrig = false;
-@@ -119,9 +119,9 @@ AdapterSettings::AdapterSettings(Adapter *adapter, KCModule *parent)
- connect(m_powered, SIGNAL(stateChanged(int)), this, SLOT(slotSettingsChanged()));
-
- if (BlueDevil::Manager::self()->usableAdapter() == adapter) {
-- setTitle(i18n("Default adapter: %1 (%2)", adapter->alias(), adapter->address()));
-+ setTitle(i18n("Default adapter: %1 (%2)", adapter->name(), adapter->address()));
- } else {
-- setTitle(i18n("Adapter: %1 (%2)", adapter->alias(), adapter->address()));
-+ setTitle(i18n("Adapter: %1 (%2)", adapter->name(), adapter->address()));
- }
- }
-
-@@ -188,7 +188,7 @@ void AdapterSettings::readChanges()
- {
- blockSignals(true);
-
-- m_nameOrig = m_adapter->alias();
-+ m_nameOrig = m_adapter->name();
- m_hiddenOrig = !m_adapter->isDiscoverable();
- m_alwaysVisibleOrig = m_adapter->isDiscoverable() && !m_adapter->discoverableTimeout();
- m_temporaryVisibleOrig = m_adapter->isDiscoverable() && m_adapter->discoverableTimeout();
-@@ -204,9 +204,9 @@ void AdapterSettings::readChanges()
-
- m_discoverTimeLabel->setText(i18np("1 minute", "%1 minutes", m_discoverTime->value()));
- if (BlueDevil::Manager::self()->usableAdapter() == m_adapter) {
-- setTitle(i18n("Default adapter: %1 (%2)", m_adapter->alias(), m_adapter->address()));
-+ setTitle(i18n("Default adapter: %1 (%2)", m_adapter->name(), m_adapter->address()));
- } else {
-- setTitle(i18n("Adapter: %1 (%2)", m_adapter->alias(), m_adapter->address()));
-+ setTitle(i18n("Adapter: %1 (%2)", m_adapter->name(), m_adapter->address()));
- }
-
- blockSignals(false);
-@@ -320,7 +320,7 @@ void KCMBlueDevilAdapters::generateNoAdaptersMessage()
- QGridLayout *layout = new QGridLayout;
- m_noAdaptersMessage = new QWidget(this);
- QLabel *label = new QLabel(m_noAdaptersMessage);
-- label->setPixmap(QIcon::fromTheme(QStringLiteral("dialog-information")).pixmap(128, 128));
-+ label->setPixmap(QIcon::fromTheme(QStringLiteral("dialog-information")).pixmap(128));
- layout->addWidget(label, 0, 1, Qt::AlignHCenter);
- layout->addWidget(new QLabel(i18n("No adapters found. Please connect one."), m_noAdaptersMessage),
- 1, 1, Qt::AlignHCenter);
-diff --git a/src/kcmodule/bluedeviladapters.desktop b/src/kcmodule/bluedeviladapters.desktop
-index 1c08977f52ffaeb5349e13c85d01d9221d67d95f..b4befcc61e2379a392701cccb822c5c874c8228e 100644
---- a/src/kcmodule/bluedeviladapters.desktop
-+++ b/src/kcmodule/bluedeviladapters.desktop
-@@ -80,6 +80,7 @@ X-KDE-Keywords[fr]=Réseau, connectivité, Bluetooth
- X-KDE-Keywords[it]=Rete,Connettività,Bluetooth
- X-KDE-Keywords[nb]=Nettverk,sammenkobling,blåtann
- X-KDE-Keywords[nl]=Netwerkverbinding,connectiviteit,bluetooth
-+X-KDE-Keywords[pa]=ਨੈਟਵਰਕ,ਕਨੈਕਟਵਿਟੀ,ਬਲਿਊਟੁੱਥ
- X-KDE-Keywords[pl]=Sieć,Łączność,Bluetooth
- X-KDE-Keywords[pt]=Rede,Conectividade,Bluetooth
- X-KDE-Keywords[pt_BR]=Rede,Conectividade,Bluetooth
-diff --git a/src/kcmodule/bluedeviladapters.h b/src/kcmodule/bluedeviladapters.h
-index 5a775bd2667ee2d2f97bb15d47953884ff57fa3f..7ecbeb84c5188f4321d4105a3568e7e7f36711de 100644
---- a/src/kcmodule/bluedeviladapters.h
-+++ b/src/kcmodule/bluedeviladapters.h
-@@ -36,7 +36,8 @@ class QLineEdit;
- class SystemCheck;
- class AdapterSettings;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Adapter;
- }
-
-diff --git a/src/kcmodule/bluedevildevices.cpp b/src/kcmodule/bluedevildevices.cpp
-index 1135d6f35e36165743428331ef5af9003bcbd78a..9474e93f096a9a5d55071262e2d06ecd9565f5f9 100644
---- a/src/kcmodule/bluedevildevices.cpp
-+++ b/src/kcmodule/bluedevildevices.cpp
-@@ -226,11 +226,11 @@ BluetoothDevicesDelegate::BluetoothDevicesDelegate(QObject *parent)
- : QStyledItemDelegate(parent)
- , smallIconSize(IconSize(KIconLoader::Toolbar))
- {
-- m_blockedPixmap = QIcon::fromTheme(QStringLiteral("dialog-cancel")).pixmap(smallIconSize, smallIconSize);
-- m_trustedPixmap = QIcon::fromTheme(QStringLiteral("security-high")).pixmap(smallIconSize, smallIconSize);
-- m_untrustedPixmap = QIcon::fromTheme(QStringLiteral("security-low")).pixmap(smallIconSize, smallIconSize);
-- m_connectedPixmap = QIcon::fromTheme(QStringLiteral("user-online")).pixmap(smallIconSize, smallIconSize);
-- m_disconnectedPixmap = QIcon::fromTheme(QStringLiteral("user-offline")).pixmap(smallIconSize, smallIconSize);
-+ m_blockedPixmap = QIcon::fromTheme(QStringLiteral("dialog-cancel")).pixmap(smallIconSize);
-+ m_trustedPixmap = QIcon::fromTheme(QStringLiteral("security-high")).pixmap(smallIconSize);
-+ m_untrustedPixmap = QIcon::fromTheme(QStringLiteral("security-low")).pixmap(smallIconSize);
-+ m_connectedPixmap = QIcon::fromTheme(QStringLiteral("user-online")).pixmap(smallIconSize);
-+ m_disconnectedPixmap = QIcon::fromTheme(QStringLiteral("user-offline")).pixmap(smallIconSize);
- }
-
- BluetoothDevicesDelegate::~BluetoothDevicesDelegate()
-@@ -518,7 +518,11 @@ void KCMBlueDevilDevices::usableAdapterChanged(Adapter *adapter)
- if (adapter) {
- connect(adapter, SIGNAL(discoverableChanged(bool)),
- this, SLOT(adapterDiscoverableChanged()));
-- connect(adapter, SIGNAL(devicesChanged(QList)),
-+ connect(adapter, SIGNAL(deviceChanged(Device*)),
-+ this, SLOT(adapterDevicesChanged()));
-+ connect(adapter, SIGNAL(deviceRemoved(Device*)),
-+ this, SLOT(adapterDevicesChanged()));
-+ connect(adapter, SIGNAL(deviceFound(Device*)),
- this, SLOT(adapterDevicesChanged()));
- }
- fillRemoteDevicesModelInformation();
-@@ -547,7 +551,7 @@ void KCMBlueDevilDevices::generateNoDevicesMessage()
- m_noDevicesMessage->setBackgroundRole(QPalette::Base);
- m_noDevicesMessage->setAutoFillBackground(true);
- QLabel *label = new QLabel(m_noDevicesMessage);
-- label->setPixmap(QIcon::fromTheme(QStringLiteral("dialog-information")).pixmap(128, 128));
-+ label->setPixmap(QIcon::fromTheme(QStringLiteral("dialog-information")).pixmap(128));
- layout->addWidget(label, 0, 1, Qt::AlignHCenter);
- layout->addWidget(new QLabel(i18n("No remote devices have been added"), m_noDevicesMessage),
- 1, 1, Qt::AlignHCenter);
-diff --git a/src/kcmodule/bluedevildevices.desktop b/src/kcmodule/bluedevildevices.desktop
-index ba05bfc4789feb36ca9dd2ef0de7376ec2495e30..7e7235a4e1645673425b6c17030310d87a4471f2 100644
---- a/src/kcmodule/bluedevildevices.desktop
-+++ b/src/kcmodule/bluedevildevices.desktop
-@@ -81,6 +81,7 @@ X-KDE-Keywords[fr]=Réseau, connectivité, Bluetooth
- X-KDE-Keywords[it]=Rete,Connettività,Bluetooth
- X-KDE-Keywords[nb]=Nettverk,sammenkobling,blåtann
- X-KDE-Keywords[nl]=Netwerkverbinding,connectiviteit,bluetooth
-+X-KDE-Keywords[pa]=ਨੈਟਵਰਕ,ਕਨੈਕਟਵਿਟੀ,ਬਲਿਊਟੁੱਥ
- X-KDE-Keywords[pl]=Sieć,Łączność,Bluetooth
- X-KDE-Keywords[pt]=Rede,Conectividade,Bluetooth
- X-KDE-Keywords[pt_BR]=Rede,Conectividade,Bluetooth
-diff --git a/src/kcmodule/bluedevildevices.h b/src/kcmodule/bluedevildevices.h
-index e47b43e91f6f89a449e806daeec531a3fe32be72..db28629dee426f89bb3ed7cb6b250d0615fa2c55 100644
---- a/src/kcmodule/bluedevildevices.h
-+++ b/src/kcmodule/bluedevildevices.h
-@@ -32,7 +32,8 @@ class QCheckBox;
- class QPushButton;
- class QItemSelection;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Adapter;
- class Device;
- }
-diff --git a/src/kcmodule/bluedeviltransfer.cpp b/src/kcmodule/bluedeviltransfer.cpp
-index fd1b1200bf036dc5300c9a2acd8080f737e14faf..fa0d55f929bb0ff203a113745a929ec8d58d7b98 100644
---- a/src/kcmodule/bluedeviltransfer.cpp
-+++ b/src/kcmodule/bluedeviltransfer.cpp
-@@ -40,6 +40,8 @@ K_PLUGIN_FACTORY_WITH_JSON(BlueDevilFactory,
- "bluedeviltransfer.json",
- registerPlugin();)
-
-+using namespace BlueDevil;
-+
- ////////////////////////////////////////////////////////////////////////////////////////////////////
-
- KCMBlueDevilTransfer::KCMBlueDevilTransfer(QWidget *parent, const QVariantList&)
-@@ -78,8 +80,7 @@ KCMBlueDevilTransfer::KCMBlueDevilTransfer(QWidget *parent, const QVariantList&)
-
- addConfig(FileReceiverSettings::self(), transfer);
-
-- connect(BlueDevil::Manager::self(), SIGNAL(usableAdapterChanged(Adapter*)),
-- this, SLOT(usableAdapterChanged(Adapter*)));
-+ connect(BlueDevil::Manager::self(), &Manager::usableAdapterChanged, this, &KCMBlueDevilTransfer::usableAdapterChanged);
-
- BlueDevil::Adapter *const usableAdapter = BlueDevil::Manager::self()->usableAdapter();
- if (usableAdapter) {
-@@ -90,10 +91,6 @@ KCMBlueDevilTransfer::KCMBlueDevilTransfer(QWidget *parent, const QVariantList&)
- updateInformationState();
- }
-
--KCMBlueDevilTransfer::~KCMBlueDevilTransfer()
--{
--}
--
- void KCMBlueDevilTransfer::save()
- {
- if (!m_restartNeeded) {
-diff --git a/src/kcmodule/bluedeviltransfer.desktop b/src/kcmodule/bluedeviltransfer.desktop
-index 526e04799a5ec442c1902e54cc087802855807c5..6dc96e7744fb55d3b5b536cdd9e6d7ec22c02dad 100644
---- a/src/kcmodule/bluedeviltransfer.desktop
-+++ b/src/kcmodule/bluedeviltransfer.desktop
-@@ -79,6 +79,7 @@ X-KDE-Keywords[fr]=Réseau, connectivité, Bluetooth
- X-KDE-Keywords[it]=Rete,Connettività,Bluetooth
- X-KDE-Keywords[nb]=Nettverk,sammenkobling,blåtann
- X-KDE-Keywords[nl]=Netwerkverbinding,connectiviteit,bluetooth
-+X-KDE-Keywords[pa]=ਨੈਟਵਰਕ,ਕਨੈਕਟਵਿਟੀ,ਬਲਿਊਟੁੱਥ
- X-KDE-Keywords[pl]=Sieć,Łączność,Bluetooth
- X-KDE-Keywords[pt]=Rede,Conectividade,Bluetooth
- X-KDE-Keywords[pt_BR]=Rede,Conectividade,Bluetooth
-diff --git a/src/kcmodule/bluedeviltransfer.h b/src/kcmodule/bluedeviltransfer.h
-index 5be3ae345beca5aa192a39118718ff427bc17393..ace854222bb036b2533aec23ef5dada4beeff923 100644
---- a/src/kcmodule/bluedeviltransfer.h
-+++ b/src/kcmodule/bluedeviltransfer.h
-@@ -24,26 +24,28 @@
- #include
-
- class SystemCheck;
--namespace Ui {
-+
-+namespace Ui
-+{
- class Transfer;
- }
--namespace BlueDevil {
-+
-+namespace BlueDevil
-+{
- class Adapter;
- }
-
--typedef BlueDevil::Adapter Adapter;
--
- class KCMBlueDevilTransfer : public KCModule
- {
- Q_OBJECT
-
- public:
- KCMBlueDevilTransfer(QWidget *parent, const QVariantList&);
-- virtual ~KCMBlueDevilTransfer();
-
-- virtual void save();
-+ void save() Q_DECL_OVERRIDE;
-+
- private Q_SLOTS:
-- void usableAdapterChanged(Adapter *adapter);
-+ void usableAdapterChanged(BlueDevil::Adapter *adapter);
- void adapterDiscoverableChanged();
- void updateInformationState();
- void changed(bool);
-@@ -54,4 +56,4 @@ private:
- bool m_restartNeeded;
- };
-
--#endif
-+#endif // _BLUEDEVILTRANSFER_H
-diff --git a/src/kcmodule/devicedetails.h b/src/kcmodule/devicedetails.h
-index b612587b996e0ef24077d7e0f146d9d71730a972..37326da8c0fb398d0a97fc36b87968fbb4b3ec8c 100644
---- a/src/kcmodule/devicedetails.h
-+++ b/src/kcmodule/devicedetails.h
-@@ -28,7 +28,8 @@ class QLineEdit;
- class QAbstractButton;
- class QDialogButtonBox;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- }
-
-diff --git a/src/kcmodule/systemcheck.cpp b/src/kcmodule/systemcheck.cpp
-index 122021b98adc57c1b979a757005709ec76e404b7..43cd86450e3453bd7acf27aebc938d8381160d19 100644
---- a/src/kcmodule/systemcheck.cpp
-+++ b/src/kcmodule/systemcheck.cpp
-@@ -41,6 +41,7 @@ SystemCheck::SystemCheck(QWidget *parent)
- , m_kded(new KDED(QStringLiteral("org.kde.kded5"), QStringLiteral("/kded"), QDBusConnection::sessionBus()))
- , m_parent(parent)
- , m_noAdaptersError(0)
-+ , m_noUsableAdapterError(0)
- , m_notDiscoverableAdapterError(0)
- , m_disabledNotificationsError(0)
- {
-@@ -48,9 +49,6 @@ SystemCheck::SystemCheck(QWidget *parent)
-
- SystemCheck::~SystemCheck()
- {
-- m_noAdaptersError = 0;
-- m_notDiscoverableAdapterError = 0;
-- m_disabledNotificationsError = 0;
- delete m_kded;
- }
-
-@@ -66,6 +64,16 @@ void SystemCheck::createWarnings(QVBoxLayout *layout)
- m_noAdaptersError->setText(i18n("No Bluetooth adapters have been found."));
- layout->addWidget(m_noAdaptersError);
-
-+ m_noUsableAdapterError = new KMessageWidget(m_parent);
-+ m_noUsableAdapterError->setMessageType(KMessageWidget::Warning);
-+ m_noUsableAdapterError->setCloseButtonVisible(false);
-+ m_noUsableAdapterError->setText(i18n("Your Bluetooth adapter is powered off."));
-+
-+ QAction *fixNoUsableAdapter = new QAction(QIcon::fromTheme(QStringLiteral("dialog-ok-apply")), i18nc("Action to fix a problem", "Fix it"), m_noUsableAdapterError);
-+ connect(fixNoUsableAdapter, SIGNAL(triggered(bool)), this, SLOT(fixNoUsableAdapterError()));
-+ m_noUsableAdapterError->addAction(fixNoUsableAdapter);
-+ layout->addWidget(m_noUsableAdapterError);
-+
- m_notDiscoverableAdapterError = new KMessageWidget(m_parent);
- m_notDiscoverableAdapterError->setMessageType(KMessageWidget::Warning);
- m_notDiscoverableAdapterError->setCloseButtonVisible(false);
-@@ -142,6 +150,7 @@ void SystemCheck::updateInformationState()
- {
- m_noAdaptersError->setEnabled(true);
- m_noAdaptersError->setVisible(false);
-+ m_noUsableAdapterError->setVisible(false);
- m_notDiscoverableAdapterError->setVisible(false);
- m_disabledNotificationsError->setVisible(false);
- m_noKDEDRunning->setVisible(false);
-@@ -151,9 +160,14 @@ void SystemCheck::updateInformationState()
- return;
- }
-
-+ if (BlueDevil::Manager::self()->adapters().isEmpty()) {
-+ m_noAdaptersError->setVisible(true);
-+ return;
-+ }
-+
- BlueDevil::Adapter *const usableAdapter = BlueDevil::Manager::self()->usableAdapter();
- if (!usableAdapter) {
-- m_noAdaptersError->setVisible(true);
-+ m_noUsableAdapterError->setVisible(true);
- return;
- }
- if (!usableAdapter->isDiscoverable()) {
-@@ -176,6 +190,12 @@ void SystemCheck::fixNoKDEDRunning()
- m_kded->loadModule(QStringLiteral("bluedevil"));
- }
-
-+void SystemCheck::fixNoUsableAdapterError()
-+{
-+ m_noUsableAdapterError->setVisible(false);
-+ BlueDevil::Manager::self()->adapters().first()->setPowered(true);
-+}
-+
- void SystemCheck::fixNotDiscoverableAdapterError()
- {
- m_notDiscoverableAdapterError->setVisible(false);
-diff --git a/src/kcmodule/systemcheck.h b/src/kcmodule/systemcheck.h
-index 74f9128b08eecbcb7770ab3c5b3f5b1ebd9b10be..cccf899a7bebd164086c23a6174bff56a35a3231 100644
---- a/src/kcmodule/systemcheck.h
-+++ b/src/kcmodule/systemcheck.h
-@@ -36,17 +36,6 @@ public:
- SystemCheck(QWidget *parent);
- virtual ~SystemCheck();
-
-- struct SystemCheckResult {
-- enum Result {
-- NoWarnings = 0,
-- BluetoothDisabled,
-- NoAdapters,
-- NotificationsDisabled,
-- DefaultAdapterHidden
-- } result;
-- QWidget *warningWidget;
-- };
--
- void createWarnings(QVBoxLayout *layout);
-
- bool checkKDEDModuleLoaded();
-@@ -61,6 +50,7 @@ public Q_SLOTS:
-
- private Q_SLOTS:
- void fixNoKDEDRunning();
-+ void fixNoUsableAdapterError();
- void fixNotDiscoverableAdapterError();
- void fixDisabledNotificationsError();
-
-@@ -68,6 +58,7 @@ private:
- KDED *m_kded;
- QWidget *m_parent;
- KMessageWidget *m_noAdaptersError;
-+ KMessageWidget *m_noUsableAdapterError;
- KMessageWidget *m_noKDEDRunning;
- KMessageWidget *m_notDiscoverableAdapterError;
- KMessageWidget *m_disabledNotificationsError;
-diff --git a/src/kio/bluetooth/kded_bluedevil.xml b/src/kio/bluetooth/kded_bluedevil.xml
-index cb4d6fdd3aeb8d5546833a8ee5de796c5e007537..e4478975fd84d080888138513dd73c985117a894 100644
---- a/src/kio/bluetooth/kded_bluedevil.xml
-+++ b/src/kio/bluetooth/kded_bluedevil.xml
-@@ -5,11 +5,19 @@
-
-
-
--
-+
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
--
-\ No newline at end of file
-+
-diff --git a/src/kio/bluetooth/kiobluetooth.cpp b/src/kio/bluetooth/kiobluetooth.cpp
-index e7b128983e77e865c11d095b5222caff7e8a3f33..7d529e6093097f32fb6fe86a3fe7037b3b21f553 100644
---- a/src/kio/bluetooth/kiobluetooth.cpp
-+++ b/src/kio/bluetooth/kiobluetooth.cpp
-@@ -30,10 +30,6 @@
- #include
- #include
-
--#include
--
--using namespace BlueDevil;
--
- extern "C" int Q_DECL_EXPORT kdemain(int argc, char **argv)
- {
- QCoreApplication app(argc, argv);
-@@ -61,27 +57,30 @@ KioBluetooth::KioBluetooth(const QByteArray &pool, const QByteArray &app)
- s.icon = QStringLiteral("edit-copy");
- s.mimetype = QStringLiteral("application/vnd.kde.bluedevil-sendfile");
- s.uuid = QStringLiteral("00001105-0000-1000-8000-00805F9B34FB");
-- m_supportedServices.insert(QStringLiteral("00001105-0000-1000-8000-00805F9B34FB"), s);
-+ m_supportedServices.insert(s.uuid, s);
-+
- s.name = i18n("Browse Files");
- s.icon = QStringLiteral("edit-find");
- s.mimetype = QString();
- s.uuid = QStringLiteral("00001106-0000-1000-8000-00805F9B34FB");
-- m_supportedServices.insert(QStringLiteral("00001106-0000-1000-8000-00805F9B34FB"), s);
-+ m_supportedServices.insert(s.uuid, s);
-
-- if (!Manager::self()->usableAdapter()) {
-- qCDebug(BLUETOOTH) << "No available interface";
-+ qCDebug(BLUETOOTH) << "Kio Bluetooth instanced!";
-+
-+ m_kded = new org::kde::BlueDevil(QStringLiteral("org.kde.kded5"), QStringLiteral("/modules/bluedevil"),
-+ QDBusConnection::sessionBus());
-+
-+ if (!m_kded->isOnline()) {
-+ qCDebug(BLUETOOTH) << "Bluetooth is offline";
- infoMessage(i18n("No Bluetooth adapters have been found."));
- return;
- }
--
-- qCDebug(BLUETOOTH) << "Kio Bluetooth instanced!";
-- m_kded = new org::kde::BlueDevil(QStringLiteral("org.kde.kded5"), QStringLiteral("/modules/bluedevil"),
-- QDBusConnection::sessionBus(), 0);
- }
-
- QList KioBluetooth::getSupportedServices(const QStringList &uuids)
- {
- qCDebug(BLUETOOTH) << "supported services: " << uuids;
-+
- QList retValue;
- Q_FOREACH (const QString &uuid, uuids) {
- if (m_supportedServices.contains(uuid)) {
-@@ -93,14 +92,22 @@ QList KioBluetooth::getSupportedServices(const QStringLis
-
- void KioBluetooth::listRemoteDeviceServices()
- {
-- m_kded->stopDiscovering();
- infoMessage(i18n("Retrieving services..."));
-
- qCDebug(BLUETOOTH) << "Listing remote devices";
-- m_currentHost = Manager::self()->usableAdapter()->deviceForAddress(m_currentHostname.replace('-', ':').toUpper());
-- m_currentHostServices = getSupportedServices(m_currentHost->UUIDs());
-+
-+ const DeviceInfo &info = m_kded->device(m_currentHostAddress).value();
-+ if (info.isEmpty()) {
-+ qCDebug(BLUETOOTH) << "Invalid hostname!";
-+ infoMessage(i18n("This address is unavailable."));
-+ finished();
-+ return;
-+ }
-+
-+ m_currentHostServices = getSupportedServices(info.value(QStringLiteral("UUIDs")).split(QLatin1Char(',')));
-
- qCDebug(BLUETOOTH) << "Num of supported services: " << m_currentHostServices.size();
-+
- totalSize(m_currentHostServices.count());
- int i = 1;
- Q_FOREACH (const Service &service, m_currentHostServices) {
-@@ -109,7 +116,7 @@ void KioBluetooth::listRemoteDeviceServices()
- entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, service.name);
- entry.insert(KIO::UDSEntry::UDS_ICON_NAME, service.icon);
-
-- //If it is browse files, act as a folder
-+ // If it is browse files, act as a folder
- if (service.uuid == QLatin1String("00001106-0000-1000-8000-00805F9B34FB")) {
- QUrl obexUrl;
- obexUrl.setScheme(QStringLiteral("obexftp"));
-@@ -137,11 +144,15 @@ void KioBluetooth::listRemoteDeviceServices()
- void KioBluetooth::listDevices()
- {
- qCDebug(BLUETOOTH) << "Asking kded for devices";
-- QMapDeviceInfo devices = m_kded->knownDevices().value();
-+ const QMapDeviceInfo &devices = m_kded->allDevices().value();
- qCDebug(BLUETOOTH) << devices.keys();
-+
- Q_FOREACH(const DeviceInfo device, devices) {
- listDevice(device);
- }
-+
-+ m_kded->startDiscovering(10 * 1000);
-+
- infoMessage(i18n("Scanning for new devices..."));
- finished();
- }
-@@ -173,8 +184,8 @@ void KioBluetooth::listDir(const QUrl &url)
- {
- qCDebug(BLUETOOTH) << "Listing..." << url;
-
-- /// Url is not used here becuase all we could care about the url is the host, and that's already
-- /// handled in @p setHost
-+ // Url is not used here becuase all we could care about the url is the host, and that's already
-+ // handled in @p setHost
- Q_UNUSED(url);
-
- // If we are not online (ie. there's no working bluetooth adapter), list an empty dir
-@@ -207,24 +218,24 @@ void KioBluetooth::get(const QUrl &url)
- finished();
- }
-
--void KioBluetooth::setHost(const QString &constHostname, quint16 port, const QString &user,
-- const QString &pass)
-+void KioBluetooth::setHost(const QString &hostname, quint16 port, const QString &user, const QString &pass)
- {
-- qCDebug(BLUETOOTH) << "Setting host: " << constHostname;
-+ qCDebug(BLUETOOTH) << "Setting host: " << hostname;
-
- // In this kio only the hostname (constHostname) is used
- Q_UNUSED(port)
- Q_UNUSED(user)
- Q_UNUSED(pass)
-
-- QString hostname = constHostname;
-- hostname = hostname.replace(QLatin1Char('-'), QLatin1Char(':')).toUpper();
- if (hostname.isEmpty()) {
- m_hasCurrentHost = false;
- } else {
- m_hasCurrentHost = true;
-- m_currentHostname = constHostname;
- m_currentHostServices.clear();
-+
-+ m_currentHostname = hostname;
-+ m_currentHostAddress = hostname.toUpper();
-+ m_currentHostAddress.replace(QLatin1Char('-'), QLatin1Char(':'));
- }
- }
-
-diff --git a/src/kio/bluetooth/kiobluetooth.h b/src/kio/bluetooth/kiobluetooth.h
-index a353ca9473c70d77baf596f112b8894844e66fe5..756bf9246a6a69da90bd7633162e92f092c34cf8 100644
---- a/src/kio/bluetooth/kiobluetooth.h
-+++ b/src/kio/bluetooth/kiobluetooth.h
-@@ -36,13 +36,6 @@
- */
- class KioBluetoothPrivate;
-
--namespace BlueDevil {
-- class Device;
-- class Adapter;
--}
--
--using namespace BlueDevil;
--
- class KioBluetooth : public QObject, public KIO::SlaveBase
- {
- Q_OBJECT
-@@ -62,7 +55,7 @@ public:
- * get function shall not do much other than setting a mimetype and returning some data that
- * could be useful for the mimetype handler.
- */
-- void get(const QUrl &url);
-+ void get(const QUrl &url) Q_DECL_OVERRIDE;
-
- /**
- * List current directory. There are two types of current directories in this kio:
-@@ -72,16 +65,16 @@ public:
- * 2. Remote device directory (something like bluetoth:/00_12_34_56_6d_34). This directory lists
- * the services provided by the given remote device.
- */
-- void listDir(const QUrl &url);
-+ void listDir(const QUrl &url) Q_DECL_OVERRIDE;
-
-- void stat(const QUrl &url);
-+ void stat(const QUrl &url) Q_DECL_OVERRIDE;
-
- /**
- * As at the momento we don't handle more than one level url paths, @p setHost has not much
- * difference with @p listDir
- *
- */
-- void setHost(const QString &constHostname, quint16 port, const QString &user, const QString &pass);
-+ void setHost(const QString &hostname, quint16 port, const QString &user, const QString &pass) Q_DECL_OVERRIDE;
-
- /**
- * Returns a list of supported service names corresponding to the given uuids list. If an uuid is
-@@ -104,7 +97,6 @@ public Q_SLOTS:
- void listDevice(const DeviceInfo device);
-
- private:
--
- /**
- * This is set to true when @p setHost is called to list a given remote device, like for example
- * 00:2a:5E:8e:6e:f5. If listing the remote devices (bluetooth:/ uri), it's set back to false.
-@@ -120,10 +112,9 @@ private:
- QString m_currentHostname;
-
- /**
-- * Represents the current host when @p hasCurrentHost is set to true. This is set in
-- * @p listRemoteDeviceServices function.
-+ * Uppercase colon separated address (ex. 00:2A:5E:8E:6E:F5)
- */
-- Device *m_currentHost;
-+ QString m_currentHostAddress;
-
- /**
- * When @p hasCurrentHost to true, this list holds the list of service names provided by the
-@@ -133,12 +124,6 @@ private:
-
- /**
- * This is an array containing as key the uuid and as value the name of the service that the
-- * given uuid represents.
-- */
-- QMap m_serviceNames;
--
-- /**
-- * This is an array containing as key the uuid and as value the name of the service that the
- * given uuid represents, and a representative icon. It only contains the supported service names.
- */
- QMap m_supportedServices;
-diff --git a/src/kio/obexftp/CMakeLists.txt b/src/kio/obexftp/CMakeLists.txt
-index d50825bd2b5c0e299e34a7bd5029f409c92bc2ed..a7702382f2b4837a4dd3c87b84eb9e0bdd57640a 100644
---- a/src/kio/obexftp/CMakeLists.txt
-+++ b/src/kio/obexftp/CMakeLists.txt
-@@ -1,5 +1,3 @@
--project(kio_obexftp)
--
- add_subdirectory(daemon)
-
- set(kio_obexftp_SRCS
-diff --git a/src/kio/obexftp/daemon/CMakeLists.txt b/src/kio/obexftp/daemon/CMakeLists.txt
-index b7ad5d215523faaed7393f8d1edb537ccb609b63..8a4ff87f3a04af3c504fba740d6e87231b5f8d3b 100644
---- a/src/kio/obexftp/daemon/CMakeLists.txt
-+++ b/src/kio/obexftp/daemon/CMakeLists.txt
-@@ -12,7 +12,7 @@ qt5_add_dbus_interface(kded_obexftp_SRCS org.freedesktop.DBus.ObjectManager.xml
-
- add_library(kded_obexftpdaemon MODULE ${kded_obexftp_SRCS})
-
--kservice_desktop_to_json(kded_obexftpdaemon obexftpdaemon.desktop)
-+kcoreaddons_desktop_to_json(kded_obexftpdaemon obexftpdaemon.desktop)
-
- target_link_libraries(kded_obexftpdaemon
- Qt5::Core
-diff --git a/src/kio/obexftp/daemon/ObexFtpDaemon.cpp b/src/kio/obexftp/daemon/ObexFtpDaemon.cpp
-index af66c7ce4f47ddbb8581e39a89f0ef50ef5a4078..4170193ea42ab01fae7151ae6952acdec9a292f3 100644
---- a/src/kio/obexftp/daemon/ObexFtpDaemon.cpp
-+++ b/src/kio/obexftp/daemon/ObexFtpDaemon.cpp
-@@ -29,10 +29,6 @@
- #include
- #include
-
--#include
--#include
--
--using namespace BlueDevil;
- K_PLUGIN_FACTORY_WITH_JSON(ObexFtpFactory,
- "obexftpdaemon.json",
- registerPlugin();)
-@@ -58,8 +54,6 @@ ObexFtpDaemon::ObexFtpDaemon(QObject *parent, const QList&)
- qDBusRegisterMetaType();
- qDBusRegisterMetaType();
-
-- d->m_status = Private::Offline;
--
- KAboutData aboutData(QStringLiteral("obexftpdaemon"),
- i18n("ObexFtp Daemon"),
- bluedevil_version,
-@@ -70,13 +64,10 @@ ObexFtpDaemon::ObexFtpDaemon(QObject *parent, const QList&)
- aboutData.addAuthor(i18n("Alejandro Fiestas Olivares"), i18n("Maintainer"),
- QStringLiteral("afiestas@kde.org"), QStringLiteral("http://www.afiestas.org"));
-
-- connect(Manager::self(), SIGNAL(usableAdapterChanged(Adapter*)),
-- SLOT(usableAdapterChanged(Adapter*)));
--
-+ d->m_status = Private::Offline;
- d->m_interface = new OrgFreedesktopDBusObjectManagerInterface(QStringLiteral("org.bluez.obex"),
- QStringLiteral("/"),
- QDBusConnection::sessionBus(), this);
--
- connect(d->m_interface, SIGNAL(InterfacesRemoved(QDBusObjectPath,QStringList)),
- SLOT(interfaceRemoved(QDBusObjectPath,QStringList)));
-
-@@ -84,11 +75,13 @@ ObexFtpDaemon::ObexFtpDaemon(QObject *parent, const QList&)
- QDBusConnection::sessionBus(),
- QDBusServiceWatcher::WatchForUnregistration, this);
-
-- connect(d->m_serviceWatcher, SIGNAL(serviceUnregistered(QString)), SLOT(serviceUnregistered(QString)));
-+ connect(d->m_serviceWatcher, SIGNAL(serviceRegistered(QString)), SLOT(serviceRegistered()));
-+ connect(d->m_serviceWatcher, SIGNAL(serviceUnregistered(QString)), SLOT(serviceUnregistered()));
-
-- //WARNING this blocks if org.bluez in system bus is dead
-- if (Manager::self()->usableAdapter()) {
-+ if (QDBusConnection::sessionBus().interface()->isServiceRegistered(QStringLiteral("org.bluez.obex"))) {
- onlineMode();
-+ } else {
-+ offlineMode();
- }
- }
-
-@@ -114,6 +107,7 @@ void ObexFtpDaemon::onlineMode()
- void ObexFtpDaemon::offlineMode()
- {
- qCDebug(OBEXDAEMON) << "Offline mode";
-+
- if (d->m_status == Private::Offline) {
- qCDebug(OBEXDAEMON) << "Already in offlineMode";
- return;
-@@ -125,33 +119,28 @@ void ObexFtpDaemon::offlineMode()
- d->m_status = Private::Offline;
- }
-
--void ObexFtpDaemon::usableAdapterChanged(Adapter *adapter)
-+bool ObexFtpDaemon::isOnline()
- {
-- if (!adapter) {
-- offlineMode();
-- return;
-- }
--
-- onlineMode();
-+ 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)
- {
-- qCDebug(OBEXDAEMON) << address;
-- address.replace(QLatin1Char('-'), QLatin1Char(':'));
--
- if (d->m_sessionMap.contains(address)) {
- return d->m_sessionMap[address];
- }
-
-- //At this point we always want delayed reply
-+ qCDebug(OBEXDAEMON) << "Creating session for" << address << "target" << target;
-+
-+ // At this point we always want delayed reply
- msg.setDelayedReply(true);
-+
- if (d->m_wipSessions.contains(address)) {
- d->m_wipSessions[address]->addMessage(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();
-
-@@ -159,30 +148,46 @@ QString ObexFtpDaemon::session(QString address, const QDBusMessage& msg)
- return QString();
- }
-
-+bool ObexFtpDaemon::cancelTransfer(const QString &transfer)
-+{
-+ // We need this function because kio_obexftp is not owner of the transfer,
-+ // and thus cannot cancel it.
-+
-+ QDBusMessage call = QDBusMessage::createMethodCall(QStringLiteral("org.bluez.obex"),
-+ transfer,
-+ QStringLiteral("org.bluez.obex.Transfer1"),
-+ QStringLiteral("Cancel"));
-+
-+ QDBusReply reply = QDBusConnection::sessionBus().call(call);
-+ return reply.isValid();
-+}
-+
- void ObexFtpDaemon::sessionCreated(KJob* job)
- {
- CreateSessionJob* cJob = qobject_cast(job);
- qCDebug(OBEXDAEMON) << cJob->path();
-
- d->m_wipSessions.remove(cJob->address());
-- d->m_sessionMap.insert(cJob->address(), cJob->path());
-- d->m_reverseSessionMap.insert(cJob->path(), cJob->address());
-
-- const QList messages = cJob->messages();
-- Q_FOREACH(const QDBusMessage &msg, messages) {
-+ Q_FOREACH (const QDBusMessage &msg, cJob->messages()) {
- QDBusMessage reply = msg.createReply(cJob->path());
-- QDBusConnection::sessionBus().asyncCall(reply);
-+ QDBusConnection::sessionBus().send(reply);
-+ }
-+
-+ if (!cJob->error()) {
-+ d->m_sessionMap.insert(cJob->address(), cJob->path());
-+ d->m_reverseSessionMap.insert(cJob->path(), cJob->address());
- }
- }
-
--void ObexFtpDaemon::serviceUnregistered(const QString& service)
-+void ObexFtpDaemon::serviceRegistered()
- {
-- if (service != QLatin1String("org.bluez.obex")) {
-- return;
-- }
-+ onlineMode();
-+}
-
-- d->m_sessionMap.clear();
-- d->m_reverseSessionMap.clear();
-+void ObexFtpDaemon::serviceUnregistered()
-+{
-+ offlineMode();
- }
-
- void ObexFtpDaemon::interfaceRemoved(const QDBusObjectPath &dbusPath, const QStringList& interfaces)
-diff --git a/src/kio/obexftp/daemon/ObexFtpDaemon.h b/src/kio/obexftp/daemon/ObexFtpDaemon.h
-index d56b73da04cef4ba21fdcae9b332257c94c8df0f..28c34abb8a6e84ba68752289b8870b63ff4fd9ad 100644
---- a/src/kio/obexftp/daemon/ObexFtpDaemon.h
-+++ b/src/kio/obexftp/daemon/ObexFtpDaemon.h
-@@ -30,44 +30,28 @@ class QDBusMessage;
- class QDBusObjectPath;
- class QDBusPendingCallWatcher;
-
--namespace BlueDevil {
-- class Adapter;
--};
--using namespace BlueDevil;
--
--class Q_DECL_EXPORT ObexFtpDaemon
-- : public KDEDModule
-+class Q_DECL_EXPORT ObexFtpDaemon : public KDEDModule
- {
- Q_OBJECT
- Q_CLASSINFO("D-Bus Interface", "org.kde.ObexFtp")
-
- public:
-- /**
-- * Connects to usableAdapterChanged
-- */
- ObexFtpDaemon(QObject *parent, const QList&);
- virtual ~ObexFtpDaemon();
-
- public Q_SLOTS:
-- Q_SCRIPTABLE QString session(QString address, const QDBusMessage &msg);
-+ Q_SCRIPTABLE bool isOnline();
-+ Q_SCRIPTABLE QString session(const QString &address, const QString &target, const QDBusMessage &msg);
-+ Q_SCRIPTABLE bool cancelTransfer(const QString &transfer);
-
- private Q_SLOTS:
-- void usableAdapterChanged(Adapter* adapter);
- void sessionCreated(KJob* job);
-- void serviceUnregistered(const QString &service);
-+ void serviceRegistered();
-+ void serviceUnregistered();
- void interfaceRemoved(const QDBusObjectPath &path, const QStringList &interfaces);
-
- private:
-- /**
-- * Called by constructor or eventually by adapterAdded initialize all the helpers
-- * @see helpers
-- */
-- void onlineMode();
--
-- /**
-- * Called eventually adapterRemoved shutdown all the helpers
-- * @see helpers
-- */
-+ void onlineMode();
- void offlineMode();
-
- struct Private;
-diff --git a/src/kio/obexftp/daemon/createsessionjob.cpp b/src/kio/obexftp/daemon/createsessionjob.cpp
-index 2eba3566a0cd971ba88eba27d11db3f6d5d2bb95..c0191563d99d2a071a823666be00d3ef6c8981eb 100644
---- a/src/kio/obexftp/daemon/createsessionjob.cpp
-+++ b/src/kio/obexftp/daemon/createsessionjob.cpp
-@@ -24,9 +24,10 @@
- #include
-
- // 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);
-@@ -52,7 +53,7 @@ void CreateSessionJob::addMessage(const QDBusMessage& msg)
- m_messages.append(msg);
- }
-
--const QList< QDBusMessage > CreateSessionJob::messages() const
-+const QList CreateSessionJob::messages() const
- {
- return m_messages;
- }
-@@ -61,8 +62,7 @@ void CreateSessionJob::createSession()
- {
- qCDebug(OBEXDAEMON);
- QVariantMap args;
-- args[QStringLiteral("Target")] = QStringLiteral("ftp");
--// args["Source"] = "00:02:72:D6:8F:2C";
-+ args[QStringLiteral("Target")] = m_target;
- m_client = new OrgBluezObexClient1Interface(QStringLiteral("org.bluez.obex"),
- QStringLiteral("/org/bluez/obex"),
- QDBusConnection::sessionBus(), this);
-@@ -70,7 +70,6 @@ void CreateSessionJob::createSession()
- QDBusPendingReply reply = m_client->CreateSession(m_address, args);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply);
-
-- qCDebug(OBEXDAEMON) << "DROGUES";
- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(sessionCreated(QDBusPendingCallWatcher*)));
- }
-
-@@ -83,12 +82,7 @@ void CreateSessionJob::sessionCreated(QDBusPendingCallWatcher* watcher)
- qCDebug(OBEXDAEMON) << "Error:";
- qCDebug(OBEXDAEMON) << reply.error().name();
- qCDebug(OBEXDAEMON) << reply.error().message();
--// Q_FOREACH(const QDBusMessage &msg, m_msgs) {
--// qCDebug(OBEXDAEMON) << msg.service() << msg.path();
--// QDBusMessage errorMsg = msg.createErrorReply("org.kde.kded.Error", i18n("Can't stablish connection"));
--// QDBusConnection::sessionBus().send(errorMsg);
--// }C
--// m_status = Error;
-+
- setError(reply.error().type());
- setErrorText(reply.error().message());
- emitResult();
-diff --git a/src/kio/obexftp/daemon/createsessionjob.h b/src/kio/obexftp/daemon/createsessionjob.h
-index a457b0288993ac0ec4fa310e9350fb13f9bd2a85..667384bcc1602ecf2f2228e88318b3a03a517849 100644
---- a/src/kio/obexftp/daemon/createsessionjob.h
-+++ b/src/kio/obexftp/daemon/createsessionjob.h
-@@ -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 m_messages;
-
- OrgBluezObexClient1Interface* m_client;
- };
-
--#endif //CREATE_SESSION_JOB_H
-\ No newline at end of file
-+#endif //CREATE_SESSION_JOB_H
-diff --git a/src/kio/obexftp/kded_obexftp.xml b/src/kio/obexftp/kded_obexftp.xml
-index 24c6c5cc196574c7a9f3d42290d5d48af43178c3..06e3b1442ee48c8cda816867b0749ab58413e832 100644
---- a/src/kio/obexftp/kded_obexftp.xml
-+++ b/src/kio/obexftp/kded_obexftp.xml
-@@ -3,9 +3,17 @@
- "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
-
-
-+
-+
-+
-
-
-+
-
-
-+
-+
-+
-+
-
--
-\ No newline at end of file
-+
-diff --git a/src/kio/obexftp/kio_obexftp.cpp b/src/kio/obexftp/kio_obexftp.cpp
-index b5b93d81e3a563af3aff2fedac37babaa420108e..17eefec61bba3998bf5f159f468cb2f34f586561 100644
---- a/src/kio/obexftp/kio_obexftp.cpp
-+++ b/src/kio/obexftp/kio_obexftp.cpp
-@@ -61,16 +61,21 @@ static QString urlFileName(const QUrl &url)
- return u.fileName();
- }
-
-+static bool urlIsRoot(const QUrl &url)
-+{
-+ const QString &directory = urlDirectory(url);
-+ return (directory.isEmpty() || directory == QLatin1String("/")) && urlFileName(url).isEmpty();
-+}
-+
- KioFtp::KioFtp(const QByteArray &pool, const QByteArray &app)
- : SlaveBase(QByteArrayLiteral("obexftp"), pool, app)
-- , m_settingHost(false)
- , m_transfer(0)
- {
-- qDBusRegisterMetaType();
--
- m_timer = new QTimer();
- m_timer->setInterval(100);
-
-+ qDBusRegisterMetaType();
-+ qDBusRegisterMetaType();
- m_kded = new org::kde::ObexFtp(QStringLiteral("org.kde.kded5"), QStringLiteral("/modules/obexftpdaemon"),
- QDBusConnection::sessionBus(), 0);
- }
-@@ -88,6 +93,63 @@ void KioFtp::launchProgressBar()
- m_timer->start();
- }
-
-+void KioFtp::connectToHost()
-+{
-+ // 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 reply = m_kded->session(m_host, target);
-+ reply.waitForFinished();
-+
-+ const QString &sessionPath = reply.value();
-+
-+ if (reply.isError() || sessionPath.isEmpty()) {
-+ qCDebug(OBEXFTP) << reply.error().message();
-+ qCDebug(OBEXFTP) << reply.error().name();
-+
-+ delete m_transfer;
-+ m_transfer = 0;
-+ m_sessionPath.clear();
-+ return false;
-+ }
-+
-+ if (m_sessionPath != sessionPath) {
-+ m_statMap.clear();
-+ delete m_transfer;
-+ m_transfer = new org::bluez::obex::FileTransfer1(QStringLiteral("org.bluez.obex"), sessionPath, QDBusConnection::sessionBus());
-+ m_sessionPath = sessionPath;
-+ }
-+
-+ return true;
-+}
-+
-+
- void KioFtp::updateProcess()
- {
- if (m_counter == 49) {
-@@ -102,34 +164,27 @@ void KioFtp::updateProcess()
-
- void KioFtp::listDir(const QUrl &url)
- {
-+ if (!testConnection()) {
-+ return;
-+ }
-+
- qCDebug(OBEXFTP) << "listdir: " << url;
-
- infoMessage(i18n("Retrieving information from remote device..."));
-
-- qCDebug(OBEXFTP) << "Asking for listFolder";
--
-- //TODO: Check if changeFolder fails
-- m_transfer->ChangeFolder(url.path()).waitForFinished();
-+ qCDebug(OBEXFTP) << "Asking for listFolder" << url.path();
-
-- QDBusPendingReply reply = m_transfer->ListFolder();
-- reply.waitForFinished();
--
-- if (reply.isError()) {
-- qCDebug(OBEXFTP) << reply.error().message();
-- error(KIO::ERR_SLAVE_DEFINED, i18n("Bluetooth is not enabled"));
-+ if (!changeFolder(url.path())) {
- return;
- }
-- QVariantMapList folderList = reply.value();
-- Q_FOREACH(const QVariantMap folder, folderList) {
-- KIO::UDSEntry entry = entryFromInfo(folder);
-
-- QUrl statUrl = url.adjusted(QUrl::RemoveFilename);
-- statUrl.setPath(statUrl.path() + folder[QStringLiteral("Name")].toString());
-- if (!m_statMap.contains(statUrl.toDisplayString())) {
-- qCDebug(OBEXFTP) << "Stat: " << statUrl.toDisplayString() << entry.numberValue(KIO::UDSEntry::UDS_SIZE);
-- m_statMap.insert(statUrl.toDisplayString(), entry);
-- }
-+ bool ok;
-+ const QList &list = listFolder(url, &ok);
-+ if (!ok) {
-+ return;
-+ }
-
-+ Q_FOREACH (const KIO::UDSEntry &entry, list) {
- listEntry(entry);
- }
-
-@@ -141,10 +196,13 @@ void KioFtp::copy(const QUrl &src, const QUrl &dest, int permissions, KIO::JobFl
- Q_UNUSED(permissions)
- Q_UNUSED(flags)
-
-+ if (!testConnection()) {
-+ return;
-+ }
-+
- qCDebug(OBEXFTP) << "copy: " << src.url() << " to " << dest.url();
-
- copyHelper(src, dest);
--
- finished();
- }
-
-@@ -154,11 +212,15 @@ void KioFtp::rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags)
- Q_UNUSED(dest)
- Q_UNUSED(flags)
-
-- error(KIO::ERR_UNSUPPORTED_ACTION, src.toDisplayString());
-+ error(KIO::ERR_UNSUPPORTED_ACTION, QString());
- }
-
- void KioFtp::get(const QUrl& url)
- {
-+ if (!testConnection()) {
-+ return;
-+ }
-+
- QTemporaryFile tempFile(QString(QStringLiteral("%1/kioftp_XXXXXX.%2")).arg(QDir::tempPath(), urlFileName(url)));
- tempFile.open();//Create the file
- qCDebug(OBEXFTP) << tempFile.fileName();
-@@ -180,6 +242,10 @@ void KioFtp::get(const QUrl& url)
- finished();
- }
-
-+bool KioFtp::cancelTransfer(const QString &transfer)
-+{
-+ return m_kded->cancelTransfer(transfer);
-+}
-
- void KioFtp::setHost(const QString &host, quint16 port, const QString &user, const QString &pass)
- {
-@@ -187,35 +253,38 @@ void KioFtp::setHost(const QString &host, quint16 port, const QString &user, con
- Q_UNUSED(user)
- Q_UNUSED(pass)
-
-- infoMessage(i18n("Connecting to the device"));
-+ m_host = host;
-+ m_host = m_host.replace(QLatin1Char('-'), QLatin1Char(':')).toUpper();
-
-- qCDebug(OBEXFTP) << "setHost: " << host;
-+ QDBusMessage call = QDBusMessage::createMethodCall(QStringLiteral("org.kde.kded5"),
-+ QStringLiteral("/modules/bluedevil"),
-+ QStringLiteral("org.kde.BlueDevil"),
-+ QStringLiteral("device"));
-+ call << m_host;
-+ QDBusReply reply = QDBusConnection::sessionBus().call(call);
-+ DeviceInfo info = reply.value();
-
-- qCDebug(OBEXFTP) << "Waiting to stablish the connection 2";
-- QDBusPendingReply reply = m_kded->session(host);
-- reply.waitForFinished();
-+ m_uuids = info[QStringLiteral("UUIDs")];
-
-- qCDebug(OBEXFTP) << "AFTER" << reply.isError();
-- if (reply.isError()) {
-- qCDebug(OBEXFTP) << reply.error().message();
-- qCDebug(OBEXFTP) << reply.error().name();
-- }
--
-- qCDebug(OBEXFTP) << "Got a path" << reply.value();
-+ infoMessage(i18n("Connecting to the device"));
-
-- m_address = host;
-- m_sessionPath = reply.value();
-- m_transfer = new org::bluez::obex::FileTransfer1("org.bluez.obex", m_sessionPath, QDBusConnection::sessionBus());
-- m_statMap.clear();
-+ connectToHost();
- }
-
- void KioFtp::del(const QUrl& url, bool isfile)
- {
- Q_UNUSED(isfile)
-
-- qCDebug(OBEXFTP) << "Del: " << url.url();
-- m_transfer->ChangeFolder(urlDirectory(url)).waitForFinished();
-- m_transfer->Delete(urlFileName(url)).waitForFinished();
-+ if (!testConnection()) {
-+ return;
-+ }
-+ if (!changeFolder(urlDirectory(url))) {
-+ return;
-+ }
-+ if (!deleteFile(urlFileName(url))) {
-+ return;
-+ }
-+
- finished();
- }
-
-@@ -223,14 +292,28 @@ void KioFtp::mkdir(const QUrl& url, int permissions)
- {
- Q_UNUSED(permissions)
-
-+ if (!testConnection()) {
-+ return;
-+ }
-+
- qCDebug(OBEXFTP) << "MkDir: " << url.url();
-- m_transfer->ChangeFolder(urlDirectory(url)).waitForFinished();
-- m_transfer->CreateFolder(urlFileName(url)).waitForFinished();
-+
-+ if (!changeFolder(urlDirectory(url))) {
-+ return;
-+ }
-+ if (!createFolder(urlFileName(url))) {
-+ return;
-+ }
-+
- finished();
- }
-
- void KioFtp::stat(const QUrl &url)
- {
-+ if (!testConnection()) {
-+ return;
-+ }
-+
- qCDebug(OBEXFTP) << "Stat: " << url.url();
- qCDebug(OBEXFTP) << "Stat Dir: " << urlDirectory(url);
- qCDebug(OBEXFTP) << "Stat File: " << urlFileName(url);
-@@ -245,8 +328,7 @@ void KioFtp::stat(const QUrl &url)
- void KioFtp::copyHelper(const QUrl& src, const QUrl& dest)
- {
- if (src.scheme() == QLatin1String("obexftp") && dest.scheme() == QLatin1String("obexftp")) {
-- error(KIO::ERR_UNSUPPORTED_ACTION, src.toDisplayString());
-- //TODO: with obexd this seems possible, we should at least try
-+ copyWithinObexftp(src, dest);
- return;
- }
-
-@@ -261,55 +343,49 @@ void KioFtp::copyHelper(const QUrl& src, const QUrl& dest)
- }
-
- qCDebug(OBEXFTP) << "This shouldn't happen...";
-- finished();
- }
-
--void KioFtp::copyFromObexftp(const QUrl& src, const QUrl& dest)
-+void KioFtp::copyWithinObexftp(const QUrl &src, const QUrl &dest)
- {
- qCDebug(OBEXFTP) << "Source: " << src << "Dest:" << dest;
-
-- //Just in case the url is not in the stat, some times happens...
-- if (!m_statMap.contains(src.toDisplayString())) {
-- qCDebug(OBEXFTP) << "The url is not in the cache, stating it";
-- statHelper(src);
-- }
-+ copyFile(src.path(), dest.path());
-+}
-+
-+void KioFtp::copyFromObexftp(const QUrl& src, const QUrl& dest)
-+{
-+ qCDebug(OBEXFTP) << "Source: " << src << "Dest:" << dest;
-
-- if (m_statMap.value(src.toDisplayString()).isDir()) {
-- qCDebug(OBEXFTP) << "Skipping to copy: " << src.toDisplayString();
-- //TODO: Check if dir copying works with obexd
-- error(KIO::ERR_IS_DIRECTORY, src.toDisplayString());
-+ if (!changeFolder(urlDirectory(src))) {
- return;
- }
-
-- qCDebug(OBEXFTP) << "Changing dir:" << urlDirectory(src);
-- m_transfer->ChangeFolder(urlDirectory(src)).waitForFinished();
--
-- QString dbusPath = m_transfer->GetFile(dest.path(), urlFileName(src)).value().path();
-+ const QString &dbusPath = m_transfer->GetFile(dest.path(), urlFileName(src)).value().path();
- qCDebug(OBEXFTP) << "Path from GetFile:" << dbusPath;
-
- int size = m_statMap[src.toDisplayString()].numberValue(KIO::UDSEntry::UDS_SIZE);
-+ totalSize(size);
-+
- TransferFileJob *getFile = new TransferFileJob(dbusPath, this);
-- getFile->setSize(size);
- getFile->exec();
--
-- finished();
- }
-
- void KioFtp::copyToObexftp(const QUrl& src, const QUrl& dest)
- {
- qCDebug(OBEXFTP) << "Source:" << src << "Dest:" << dest;
-
-- qCDebug(OBEXFTP) << "Changing folder: " << urlDirectory(dest);
-- m_transfer->ChangeFolder(urlDirectory(dest));
-- QString dbusPath = m_transfer->PutFile(src.path(), urlFileName(dest)).value().path();
-+ if (!changeFolder(urlDirectory(dest))) {
-+ return;
-+ }
-+
-+ const QString &dbusPath = m_transfer->PutFile(src.path(), urlFileName(dest)).value().path();
- qCDebug(OBEXFTP) << "Path from PutFile: " << dbusPath;
-
-- QFile file(src.path());
-+ int size = QFile(src.path()).size();
-+ totalSize(size);
-+
- TransferFileJob *putFile = new TransferFileJob(dbusPath, this);
-- putFile->setSize(file.size());
- putFile->exec();
--
-- finished();
- }
-
- void KioFtp::statHelper(const QUrl& url)
-@@ -322,10 +398,10 @@ void KioFtp::statHelper(const QUrl& url)
- return;
- }
-
-- if ((urlDirectory(url) == QLatin1String("/") || urlDirectory(url).isEmpty()) && urlFileName(url).isEmpty()) {
-+ if (urlIsRoot(url)) {
- qCDebug(OBEXFTP) << "Url is root";
- KIO::UDSEntry entry;
-- entry.insert(KIO::UDSEntry::UDS_NAME, QString::fromLatin1("/"));
-+ entry.insert(KIO::UDSEntry::UDS_NAME, QStringLiteral("/"));
- entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
- entry.insert(KIO::UDSEntry::UDS_ACCESS, 0700);
- entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory"));
-@@ -333,53 +409,145 @@ void KioFtp::statHelper(const QUrl& url)
- qCDebug(OBEXFTP) << "Adding stat cached: " << url.toDisplayString();
- m_statMap[url.toDisplayString()] = entry;
- statEntry(entry);
--
- return;
- }
-
- qCDebug(OBEXFTP) << "statMap does NOT contains the url";
-- //TODO: Check if changeFolder fails
-- m_transfer->ChangeFolder(urlDirectory(url)).waitForFinished();
-- QVariantMapList folderList = m_transfer->ListFolder().value();
-- qCDebug(OBEXFTP) << urlDirectory(url) << folderList.count();
-- Q_FOREACH(const QVariantMap folder, folderList) {
-- KIO::UDSEntry entry = entryFromInfo(folder);
--
-- QString fileName = folder[QStringLiteral("Name")].toString();
-- if (urlFileName(url) == fileName) {
-- statEntry(entry);
-+
-+ if (!changeFolder(urlDirectory(url))) {
-+ return;
-+ }
-+
-+ bool ok;
-+ const QList &list = listFolder(url, &ok);
-+ if (!ok) {
-+ return;
-+ }
-+
-+ Q_FOREACH (const KIO::UDSEntry &entry, list) {
-+ statEntry(entry);
-+ }
-+
-+ qCDebug(OBEXFTP) << "Finished";
-+}
-+
-+QList KioFtp::listFolder(const QUrl &url, bool *ok)
-+{
-+ QList list;
-+
-+ QDBusPendingReply reply = m_transfer->ListFolder();
-+ reply.waitForFinished();
-+
-+ if (reply.isError()) {
-+ error(KIO::ERR_CANNOT_OPEN_FOR_READING, urlDirectory(url));
-+ *ok = false;
-+ return list;
-+ }
-+
-+ Q_FOREACH (const QVariantMap &item, reply.value()) {
-+ KIO::UDSEntry entry;
-+ entry.insert(KIO::UDSEntry::UDS_NAME, item[QStringLiteral("Name")].toString());
-+ entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, item[QStringLiteral("Label")].toString());
-+ entry.insert(KIO::UDSEntry::UDS_ACCESS, 0700);
-+ entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, QDateTime::fromString(item[QStringLiteral("Modified")].toString(), "yyyyMMddThhmmssZ").toTime_t());
-+ entry.insert(KIO::UDSEntry::UDS_SIZE, item[QStringLiteral("Size")].toLongLong());
-+ if (item[QStringLiteral("Type")] == QLatin1String("folder")) {
-+ entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
-+ entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory"));
-+ } else {
-+ entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
-+ }
-+ if (urlIsRoot(url)) {
-+ updateRootEntryIcon(entry, item[QStringLiteral("Mem-type")].toString());
- }
-+ list.append(entry);
-
- //Most probably the client of the kio will stat each file
- //so since we are on it, let's cache all of them.
- QUrl statUrl = url.adjusted(QUrl::RemoveFilename);
-- statUrl.setPath(statUrl.path() + fileName);
-+ statUrl.setPath(statUrl.path() + item[QStringLiteral("Name")].toString());
- if (!m_statMap.contains(statUrl.toDisplayString())) {
- qCDebug(OBEXFTP) << "Stat: " << statUrl.toDisplayString() << entry.stringValue(KIO::UDSEntry::UDS_NAME) << entry.numberValue(KIO::UDSEntry::UDS_SIZE);
- m_statMap.insert(statUrl.toDisplayString(), entry);
- }
- }
-
-- qCDebug(OBEXFTP) << "Finished";
-+ *ok = true;
-+ return list;
- }
-
--KIO::UDSEntry KioFtp::entryFromInfo(const QVariantMap& info)
-+bool KioFtp::changeFolder(const QString &folder)
- {
-- qCDebug(OBEXFTP) << info;
-+ QDBusPendingReply<> reply = m_transfer->ChangeFolder(folder);
-+ reply.waitForFinished();
-+
-+ if (reply.isError()) {
-+ error(KIO::ERR_CANNOT_ENTER_DIRECTORY, folder);
-+ return false;
-+ }
-+ return true;
-+}
-
-- KIO::UDSEntry entry;
-- entry.insert(KIO::UDSEntry::UDS_NAME, info[QStringLiteral("Name")].toString());
-- entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, info[QStringLiteral("Created")].toString());
-- entry.insert(KIO::UDSEntry::UDS_ACCESS, 0700);
-- entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, info[QStringLiteral("Modified")].toString());
-+bool KioFtp::createFolder(const QString &folder)
-+{
-+ QDBusPendingReply<> reply = m_transfer->CreateFolder(folder);
-+ reply.waitForFinished();
-
-- if (info[QStringLiteral("Type")].toString() == QLatin1String("folder")) {
-- entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
-- entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QStringLiteral("inode/directory"));
-- } else {
-- entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
-- entry.insert(KIO::UDSEntry::UDS_SIZE, info[QStringLiteral("Size")].toLongLong());
-+ if (reply.isError()) {
-+ error(KIO::ERR_COULD_NOT_MKDIR, folder);
-+ return false;
- }
-+ return true;
-+}
-
-- return entry;
-+bool KioFtp::copyFile(const QString &src, const QString &dest)
-+{
-+ QDBusPendingReply<> reply = m_transfer->CopyFile(src, dest);
-+ reply.waitForFinished();
-+
-+ if (reply.isError()) {
-+ qCDebug(OBEXFTP) << reply.error().message();
-+ // Copying files within obexftp is currently not implemented in obexd
-+ if (reply.error().message() == QLatin1String("Not Implemented")) {
-+ error(KIO::ERR_UNSUPPORTED_ACTION, src);
-+ } else {
-+ error(KIO::ERR_COULD_NOT_WRITE, src);
-+ }
-+ return false;
-+ }
-+ return true;
-+}
-+
-+bool KioFtp::deleteFile(const QString &file)
-+{
-+ QDBusPendingReply<> reply = m_transfer->Delete(file);
-+ reply.waitForFinished();
-+
-+ if (reply.isError()) {
-+ error(KIO::ERR_CANNOT_DELETE, file);
-+ return false;
-+ }
-+ return true;
-+}
-+
-+void KioFtp::updateRootEntryIcon(KIO::UDSEntry &entry, const QString &memoryType)
-+{
-+ const QString &path = entry.stringValue(KIO::UDSEntry::UDS_NAME);
-+
-+ // Nokia (mount-points are C: D: E: ...)
-+ if (path.size() == 2 && path.at(1) == QLatin1Char(':')) {
-+ if (memoryType.startsWith(QLatin1String("DEV"))) {
-+ entry.insert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("drive-removable-media"));
-+ } else if (memoryType == QLatin1String("MMC")) {
-+ entry.insert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("media-flash-sd-mmc"));
-+ }
-+ }
-+ // Android
-+ if (entry.stringValue(KIO::UDSEntry::UDS_NAME) == QLatin1String("PHONE_MEMORY")) {
-+ entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, i18n("Phone memory"));
-+ entry.insert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("smartphone"));
-+ } else if (entry.stringValue(KIO::UDSEntry::UDS_NAME) == QLatin1String("EXTERNAL_MEMORY")) {
-+ entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, i18n("External memory"));
-+ entry.insert(KIO::UDSEntry::UDS_ICON_NAME, QStringLiteral("media-flash-sd-mmc"));
-+ }
- }
-diff --git a/src/kio/obexftp/kio_obexftp.h b/src/kio/obexftp/kio_obexftp.h
-index 3215fda218c83527ada97d489d00437fedb5e5c1..eefda10852a14475490d6e9cad416d8195bd1d49 100644
---- a/src/kio/obexftp/kio_obexftp.h
-+++ b/src/kio/obexftp/kio_obexftp.h
-@@ -29,6 +29,8 @@
-
- #include
-
-+typedef QMap DeviceInfo;
-+
- class OrgBluezObexFileTransfer1Interface;
- class KioFtp
- : public QObject
-@@ -49,26 +51,39 @@ public:
- virtual void rename(const QUrl& src, const QUrl& dest, KIO::JobFlags flags);
- virtual void get(const QUrl& url);
-
-+ bool cancelTransfer(const QString &transfer);
-+
- private Q_SLOTS:
- void updateProcess();
-
-- KIO::UDSEntry entryFromInfo(const QVariantMap &info);
-+private:
- void copyHelper(const QUrl &src, const QUrl &dest);
-+ void copyWithinObexftp(const QUrl &src, const QUrl &dest);
- void copyFromObexftp(const QUrl &src, const QUrl &dest);
- void copyToObexftp(const QUrl &src, const QUrl &dest);
- void statHelper(const QUrl &url);
-+
-+ QList listFolder(const QUrl &url, bool *ok);
-+ bool changeFolder(const QString &folder);
-+ bool createFolder(const QString &folder);
-+ bool copyFile(const QString &src, const QString &dest);
-+ bool deleteFile(const QString &file);
-+
-+ void updateRootEntryIcon(KIO::UDSEntry &entry, const QString &memoryType);
- void launchProgressBar();
-+ void connectToHost();
-+ bool testConnection();
-+ bool createSession(const QString &target);
-
- private:
-- int m_counter;
-- bool m_settingHost;
-+ int m_counter;
- QMap m_statMap;
-- QString m_address;
-- QString m_sessionPath;
-- QTimer *m_timer;
-- org::kde::ObexFtp *m_kded;
-+ QString m_host;
-+ QString m_uuids;
-+ QString m_sessionPath;
-+ QTimer *m_timer;
-+ org::kde::ObexFtp *m_kded;
- OrgBluezObexFileTransfer1Interface *m_transfer;
--
- };
-
- #endif // KIO_OBEXFTP_H
-diff --git a/src/kio/obexftp/transferfilejob.cpp b/src/kio/obexftp/transferfilejob.cpp
-index b6267e38fb47336e400fa378019e99aad93c4547..9a0653490766e94031e319115d30d9601967c00f 100644
---- a/src/kio/obexftp/transferfilejob.cpp
-+++ b/src/kio/obexftp/transferfilejob.cpp
-@@ -35,7 +35,6 @@ TransferFileJob::TransferFileJob(const QString& path, KioFtp* parent)
- , m_speedBytes(0)
- , m_parent(parent)
- {
--
- }
-
- TransferFileJob::~TransferFileJob()
-@@ -51,16 +50,7 @@ void TransferFileJob::start()
-
- bool TransferFileJob::doKill()
- {
-- QDBusPendingReply reply = m_transfer->Cancel();
-- reply.waitForFinished();
--
-- return !reply.isError();
--}
--
--void TransferFileJob::setSize(int size)
--{
-- qCDebug(OBEXFTP) << size;
-- m_parent->totalSize(size);
-+ return m_parent->cancelTransfer(m_path);
- }
-
- void TransferFileJob::createObjects()
-@@ -98,7 +88,6 @@ void TransferFileJob::statusChanged(const QVariant& value)
- m_time = QTime::currentTime();
- return;
- } else if (status == QLatin1String("complete")) {
-- m_parent->finished();
- emitResult();
- return;
- } else if (status == QLatin1String("error")) {
-@@ -115,7 +104,7 @@ void TransferFileJob::transferChanged(const QVariant& value)
- qCDebug(OBEXFTP) << "Transferred: " << value;
- if (m_parent->wasKilled()) {
- qCDebug(OBEXFTP) << "Kio was killed, aborting task";
-- m_transfer->Cancel().waitForFinished();
-+ doKill();
- emitResult();
- return;
- }
-diff --git a/src/kio/obexftp/transferfilejob.h b/src/kio/obexftp/transferfilejob.h
-index d82cd307a5d7a81a2f2a05092d69e3583be48516..d594359544e0139ae51852a288edf98c2708a9a6 100644
---- a/src/kio/obexftp/transferfilejob.h
-+++ b/src/kio/obexftp/transferfilejob.h
-@@ -39,7 +39,6 @@ public:
-
- virtual ~TransferFileJob();
-
-- void setSize(int size);
- private Q_SLOTS:
- void createObjects();
- void propertiesChanged(const QString &interface , const QVariantMap &properties , const QStringList &invalidProps);
-@@ -56,4 +55,4 @@ private:
-
- };
-
--#endif //KIO_GET_FILE_JOB_H
-\ No newline at end of file
-+#endif //KIO_GET_FILE_JOB_H
-diff --git a/src/monolithic/CMakeLists.txt b/src/monolithic/CMakeLists.txt
-index f39964ea5c3c9b69af93a6ff9e1557069ad017c2..685e30f6ae0e11ae95c2285f119e540ecb45185f 100644
---- a/src/monolithic/CMakeLists.txt
-+++ b/src/monolithic/CMakeLists.txt
-@@ -17,4 +17,4 @@ target_link_libraries(bluedevil-monolithic
- ${LibBlueDevil_LIBRARIES})
-
- install(TARGETS bluedevil-monolithic ${INSTALL_TARGETS_DEFAULT_ARGS})
--install(FILES bluedevil-monolithic.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
-+install(FILES org.kde.bluedevilmonolithic.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
-diff --git a/src/monolithic/main.cpp b/src/monolithic/main.cpp
-index ae560a7c7f8c741c1bb01112782e787da3af3b1d..13ae42eebe10c322e4dbcbd2d1b4be6589c65910 100644
---- a/src/monolithic/main.cpp
-+++ b/src/monolithic/main.cpp
-@@ -42,11 +42,11 @@ int main(int argc, char *argv[])
- QStringLiteral("ereslibre@kde.org"), QStringLiteral("http://www.ereslibre.es/"));
-
- QApplication app(argc, argv);
-- app.setApplicationName(QStringLiteral("bluedevilmonolithic"));
-- app.setApplicationVersion(bluedevil_version);
-- app.setOrganizationDomain(QStringLiteral("kde.org"));
- app.setQuitOnLastWindowClosed(false);
-
-+ KAboutData::setApplicationData(aboutData);
-+ KDBusService service(KDBusService::Unique);
-+
- QCommandLineParser parser;
- parser.setApplicationDescription(i18n("Bluetooth"));
- parser.addVersionOption();
-@@ -54,7 +54,6 @@ int main(int argc, char *argv[])
-
- parser.process(app);
-
-- KDBusService service(KDBusService::Unique);
- Monolithic monolithic;
-
- return app.exec();
-diff --git a/src/monolithic/monolithic.cpp b/src/monolithic/monolithic.cpp
-index 548075235e6a82ac6dc349b26866d17bcc0e41e3..fb6a23cbd5fcd0f3aa339a69e0151be1c0f92db9 100644
---- a/src/monolithic/monolithic.cpp
-+++ b/src/monolithic/monolithic.cpp
-@@ -47,7 +47,7 @@ Monolithic::Monolithic(QObject* parent)
-
- offlineMode();
-
-- if (!Manager::self()->adapters().isEmpty()) {
-+ if (Manager::self()->usableAdapter()) {
- onlineMode();
- }
-
-@@ -58,7 +58,6 @@ Monolithic::Monolithic(QObject* parent)
- setStandardActionsEnabled(false);
- setAssociatedWidget(contextMenu());
-
-- setStatus(KStatusNotifierItem::Active);
- poweredChanged();
- }
-
-@@ -175,9 +174,11 @@ void Monolithic::regenerateDeviceEntries()
- //Shortcut configuration actions, mainly checkables for discovering and powering
- menu->addSeparator();
-
-+ Adapter *usableAdapter = Manager::self()->usableAdapter();
-+
- QAction *discoverable = new QAction(i18n("Discoverable"), menu);
- discoverable->setCheckable(true);
-- discoverable->setChecked(Manager::self()->usableAdapter()->isDiscoverable());
-+ discoverable->setChecked(usableAdapter && usableAdapter->isDiscoverable());
- connect(discoverable, SIGNAL(toggled(bool)), this, SLOT(activeDiscoverable(bool)));
- menu->addAction(discoverable);
-
-@@ -219,6 +220,8 @@ void Monolithic::setupDevice(Device *device)
-
- void Monolithic::onlineMode()
- {
-+ setStatus(Active);
-+
- QList adapters = Manager::self()->adapters();
- Q_FOREACH(Adapter *adapter, adapters) {
- connect(adapter, SIGNAL(deviceFound(Device*)), SLOT(deviceCreated(Device*)));
-@@ -350,6 +353,7 @@ void Monolithic::deviceCreated(Device *device)
-
- void Monolithic::offlineMode()
- {
-+ setStatus(Passive);
- setTooltipTitleStatus(false);
-
- QMenu *const menu = contextMenu();
-diff --git a/src/monolithic/monolithic.h b/src/monolithic/monolithic.h
-index 00baf1bbafea44953439727f561e9cec23c1d1a4..cb13cadb4b6a8763e088c01af393b16fa0fcf6ee 100644
---- a/src/monolithic/monolithic.h
-+++ b/src/monolithic/monolithic.h
-@@ -22,7 +22,8 @@
-
- #include
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Adapter;
- class Device;
- }
-@@ -31,8 +32,7 @@ class QAction;
-
- using namespace BlueDevil;
-
--class Monolithic
-- : public KStatusNotifierItem
-+class Monolithic : public KStatusNotifierItem
- {
-
- Q_OBJECT
-diff --git a/src/monolithic/org.kde.bluedevilmonolithic.desktop b/src/monolithic/org.kde.bluedevilmonolithic.desktop
-new file mode 100644
-index 0000000000000000000000000000000000000000..f4572ef1765b0bf262c545505d2a6e98fd3c3a6f
---- /dev/null
-+++ b/src/monolithic/org.kde.bluedevilmonolithic.desktop
-@@ -0,0 +1,98 @@
-+[Desktop Entry]
-+Name=BlueDevil
-+Name[bs]=BlueDevil
-+Name[ca]=BlueDevil
-+Name[cs]=BlueDevil
-+Name[de]=BlueDevil
-+Name[el]=BlueDevil
-+Name[en_GB]=BlueDevil
-+Name[es]=BlueDevil
-+Name[fi]=BlueDevil
-+Name[fr]=BlueDevil
-+Name[it]=BlueDevil
-+Name[ja]=BlueDevil
-+Name[nb]=BlueDevil
-+Name[nl]=BlueDevil
-+Name[pl]=BlueDevil
-+Name[pt]=BlueDevil
-+Name[pt_BR]=BlueDevil
-+Name[sk]=BlueDevil
-+Name[sl]=BlueDevil
-+Name[sr]=Блудевил
-+Name[sr@ijekavian]=Блудевил
-+Name[sr@ijekavianlatin]=BlueDevil
-+Name[sr@latin]=BlueDevil
-+Name[sv]=Blådjävul
-+Name[tr]=BlueDevil
-+Name[uk]=BlueDevil
-+Name[x-test]=xxBlueDevilxx
-+Name[zh_CN]=BlueDevil
-+Name[zh_TW]=BlueDevil
-+GenericName=BlueDevil
-+GenericName[bs]=BlueDevil
-+GenericName[ca]=BlueDevil
-+GenericName[cs]=BlueDevil
-+GenericName[de]=BlueDevil
-+GenericName[el]=BlueDevil
-+GenericName[en_GB]=BlueDevil
-+GenericName[es]=BlueDevil
-+GenericName[fi]=BlueDevil
-+GenericName[fr]=BlueDevil
-+GenericName[it]=BlueDevil
-+GenericName[ja]=BlueDevil
-+GenericName[nb]=BlueDevil
-+GenericName[nl]=BlueDevil
-+GenericName[pa]=BlueDevil
-+GenericName[pl]=BlueDevil
-+GenericName[pt]=BlueDevil
-+GenericName[pt_BR]=BlueDevil
-+GenericName[sk]=BlueDevil
-+GenericName[sl]=BlueDevil
-+GenericName[sr]=Блудевил
-+GenericName[sr@ijekavian]=Блудевил
-+GenericName[sr@ijekavianlatin]=BlueDevil
-+GenericName[sr@latin]=BlueDevil
-+GenericName[sv]=Blådjävul
-+GenericName[tr]=BlueDevil
-+GenericName[uk]=BlueDevil
-+GenericName[x-test]=xxBlueDevilxx
-+GenericName[zh_CN]=BlueDevil
-+GenericName[zh_TW]=BlueDevil
-+Comment=KDE Bluetooth support
-+Comment[bs]=Podrška blututa u KDE‑u
-+Comment[ca]=Implementació Bluetooth del KDE
-+Comment[cs]=Podpora Bluetooth v KDE
-+Comment[de]=KDE-Bluetooth-Unterstützung
-+Comment[el]=Υποστήριξη Bluetooth στο KDE
-+Comment[en_GB]=KDE Bluetooth support
-+Comment[es]=Implementación Bluetooth para KDE
-+Comment[fi]=KDE:n Bluetooth-tuki
-+Comment[fr]=Prise en charge de Bluetooth pour KDE
-+Comment[it]=Supporto Bluetooth per KDE
-+Comment[ja]=KDE Bluetooth サポート
-+Comment[nb]=KDE Blåtann-støtte
-+Comment[nl]=KDE Bluetooth ondersteuning
-+Comment[pa]=KDE ਬਲਿਊਟੁੱਥ ਸਹਿਯੋਗ
-+Comment[pl]=Obsługa Bluetooth w KDE
-+Comment[pt]=Suporte para Bluetooth no KDE
-+Comment[pt_BR]=Suporte para Bluetooth do KDE
-+Comment[sk]=Podpora Bluetooth KDE
-+Comment[sl]=KDE-jeva podpora za Bluetooth
-+Comment[sr]=Подршка блутута у КДЕ‑у
-+Comment[sr@ijekavian]=Подршка блутута у КДЕ‑у
-+Comment[sr@ijekavianlatin]=Podrška Bluetootha u KDE‑u
-+Comment[sr@latin]=Podrška Bluetootha u KDE‑u
-+Comment[sv]=KDE:s Blåtandstöd
-+Comment[tr]=KDE Bluetooth desteği
-+Comment[uk]=Підтримка Bluetooth у KDE
-+Comment[x-test]=xxKDE Bluetooth supportxx
-+Comment[zh_CN]=KDE 蓝牙支持
-+Comment[zh_TW]=KDE 藍牙支援
-+
-+Type=Application
-+Exec=bluedevil-monolithic
-+Icon=preferences-system-bluetooth
-+Terminal=false
-+Categories=Qt;KDE;X-Bluetooth;Network;
-+X-DBUS-StartupType=Unique
-+X-DBUS-ServiceName=org.kde.bluedevilmonolithic
-diff --git a/src/sendfile/CMakeLists.txt b/src/sendfile/CMakeLists.txt
-index 9004cbe2b7d7828711a8d70c13fc99de5efa3693..c0ea4c72544a998ca06ba6b32e600b749ca3b069 100644
---- a/src/sendfile/CMakeLists.txt
-+++ b/src/sendfile/CMakeLists.txt
-@@ -32,10 +32,11 @@ target_link_libraries(bluedevil-sendfile
- Qt5::DBus
- KF5::I18n
- KF5::CoreAddons
-+ KF5::DBusAddons
- KF5::IconThemes
- KF5::KIOFileWidgets
- ${LibBlueDevil_LIBRARIES}
- )
-
- install(TARGETS bluedevil-sendfile DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS})
--install(FILES bluedevil-sendfile.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
-+install(FILES org.kde.bluedevilsendfile.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
-diff --git a/src/sendfile/discoverwidget.cpp b/src/sendfile/discoverwidget.cpp
-index 903da161c7c9e76e02bfa44628c532c41686d3ad..4cb5af9471e7fae5688818700153deb10489847a 100644
---- a/src/sendfile/discoverwidget.cpp
-+++ b/src/sendfile/discoverwidget.cpp
-@@ -20,9 +20,9 @@
- * Boston, MA 02110-1301, USA. *
- *****************************************************************************/
-
--
- #include "discoverwidget.h"
- #include "ui_discover.h"
-+#include "debug_p.h"
-
- #include
- #include
-@@ -35,28 +35,23 @@
-
- using namespace BlueDevil;
-
--DiscoverWidget::DiscoverWidget(QWidget* parent) : QWidget(parent)
-+DiscoverWidget::DiscoverWidget(QWidget* parent)
-+ : QWidget(parent)
- {
- setupUi(this);
-
-- connect(deviceList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this,
-- SLOT(itemSelected(QListWidgetItem*)));
-- connect(Manager::self()->usableAdapter(), SIGNAL(deviceFound(Device*)), this,
-- SLOT(deviceFound(Device*)));
-+ connect(deviceList, &QListWidget::currentItemChanged, this, &DiscoverWidget::itemSelected);
-+ connect(Manager::self()->usableAdapter(), &Adapter::deviceFound, this, &DiscoverWidget::deviceFound);
-
- startScan();
- }
-
--DiscoverWidget::~DiscoverWidget()
--{
--}
--
- void DiscoverWidget::startScan()
- {
- deviceList->clear();
- stopScan();
-
-- QList knownDevices = Manager::self()->usableAdapter()->devices();
-+ QList knownDevices = Manager::self()->usableAdapter()->devices();
- Q_FOREACH(Device *device, knownDevices) {
- if (device->UUIDs().contains(QLatin1String("00001105-0000-1000-8000-00805F9B34FB"), Qt::CaseInsensitive)) {
- deviceFound(device);
-@@ -72,27 +67,19 @@ void DiscoverWidget::stopScan()
- }
- }
-
--void DiscoverWidget::deviceFound(const QVariantMap& deviceInfo)
--{
-- deviceFoundGeneric(deviceInfo[QStringLiteral("Address")].toString(),
-- deviceInfo[QStringLiteral("Name")].toString(),
-- deviceInfo[QStringLiteral("Icon")].toString(),
-- deviceInfo[QStringLiteral("Alias")].toString());
--}
--
--void DiscoverWidget::deviceFound(Device* device)
-+void DiscoverWidget::deviceFound(Device *device)
- {
- deviceFoundGeneric(device->address(), device->name(), device->icon(), device->alias());
- }
-
- void DiscoverWidget::deviceFoundGeneric(QString address, QString name, QString icon, QString alias)
- {
-- qDebug() << "========================";
-- qDebug() << "Address: " << address;
-- qDebug() << "Name: " << name;
-- qDebug() << "Alias: " << alias;
-- qDebug() << "Icon: " << icon;
-- qDebug() << "\n";
-+ qCDebug(SENDFILE) << "========================";
-+ qCDebug(SENDFILE) << "Address: " << address;
-+ qCDebug(SENDFILE) << "Name: " << name;
-+ qCDebug(SENDFILE) << "Alias: " << alias;
-+ qCDebug(SENDFILE) << "Icon: " << icon;
-+ qCDebug(SENDFILE) << "\n";
-
-
- bool origName = false;
-@@ -101,7 +88,7 @@ void DiscoverWidget::deviceFoundGeneric(QString address, QString name, QString i
- }
-
- if (!alias.isEmpty() && alias != name && !name.isEmpty()) {
-- name = QString("%1 (%2)").arg(alias).arg(name);
-+ name = QString(QStringLiteral("%1 (%2)")).arg(alias).arg(name);
- }
-
- if (name.isEmpty()) {
-@@ -131,7 +118,7 @@ void DiscoverWidget::deviceFoundGeneric(QString address, QString name, QString i
- m_itemRelation.insert(address, item);
- }
-
--void DiscoverWidget::itemSelected(QListWidgetItem* item)
-+void DiscoverWidget::itemSelected(QListWidgetItem *item)
- {
- emit deviceSelected(Manager::self()->usableAdapter()->deviceForAddress(item->data(Qt::UserRole).toString()));
- }
-diff --git a/src/sendfile/discoverwidget.h b/src/sendfile/discoverwidget.h
-index d1cc03bb6decf90df8754c4c8d8f9e062aca3311..3516c61901b09652d49c67776dc3ffb8c0811cdb 100644
---- a/src/sendfile/discoverwidget.h
-+++ b/src/sendfile/discoverwidget.h
-@@ -20,7 +20,6 @@
- * Boston, MA 02110-1301, USA. *
- *****************************************************************************/
-
--
- #ifndef DISCOVERWIDGET_H
- #define DISCOVERWIDGET_H
-
-@@ -31,28 +30,26 @@
- class QTimer;
- class BlueWizard;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- }
--using namespace BlueDevil;
-
--class DiscoverWidget : public QWidget
--, public Ui::Discover
-+class DiscoverWidget : public QWidget, public Ui::Discover
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- DiscoverWidget(QWidget* parent = 0);
-- virtual ~DiscoverWidget();
-+ explicit DiscoverWidget(QWidget *parent = 0);
-+
- void stopScan();
-
- public Q_SLOTS:
- void startScan();
-
- private Q_SLOTS:
-- void deviceFound(const QVariantMap &deviceInfo);
-- void deviceFound(Device* device);
-- void itemSelected(QListWidgetItem* item);
-+ void deviceFound(BlueDevil::Device *device);
-+ void itemSelected(QListWidgetItem *item);
-
- private:
- void deviceFoundGeneric(QString address, QString name, QString icon, QString alias);
-@@ -62,7 +59,7 @@ private:
- BlueWizard *m_wizard;
-
- Q_SIGNALS:
-- void deviceSelected(Device *device);
-+ void deviceSelected(BlueDevil::Device *device);
- };
-
- #endif // DISCOVERWIDGET_H
-diff --git a/src/sendfile/main.cpp b/src/sendfile/main.cpp
-index 1b1bb8bdd8b709ecf4478769d2c6e2f175fbfa57..4f593d37e728b563c668a7cdd0ea72a4d9fdfd98 100644
---- a/src/sendfile/main.cpp
-+++ b/src/sendfile/main.cpp
-@@ -25,6 +25,7 @@
- #include
-
- #include
-+#include
- #include
-
- #include
-@@ -44,13 +45,12 @@ int main(int argc, char *argv[])
- QStringLiteral("afiestas@kde.org"), QStringLiteral("http://www.afiestas.org/"));
-
- QApplication app(argc, argv);
-- app.setApplicationName(QStringLiteral("bluedevilsendfile"));
-- app.setApplicationVersion(bluedevil_version);
-- app.setApplicationDisplayName(i18n("Bluetooth Send File Helper"));
-- app.setOrganizationDomain(QStringLiteral("kde.org"));
- app.setWindowIcon(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")));
- app.setQuitOnLastWindowClosed(false);
-
-+ KAboutData::setApplicationData(aboutData);
-+ KDBusService service;
-+
- QCommandLineOption kioOption({QLatin1String("kio"), QLatin1String("k")}, i18n("Device UUID where the files will be sent"));
- kioOption.setValueName(QStringLiteral("bluetooth://mac"));
-
-@@ -75,8 +75,12 @@ int main(int argc, char *argv[])
- deviceInfo = parser.value(kioOption);
- }
-
-- SendFileWizard *sendFileWizard = new SendFileWizard(deviceInfo, parser.values(filesOption));
-- sendFileWizard->show();
-+ SendFileWizard *wizard = new SendFileWizard(deviceInfo, parser.values(filesOption));
-+ wizard->show();
-+
-+ QObject::connect(&service, &KDBusService::activateRequested, wizard, [wizard]() {
-+ wizard->setWindowState((wizard->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
-+ });
-
- return app.exec();
- }
-diff --git a/src/sendfile/org.kde.bluedevilsendfile.desktop b/src/sendfile/org.kde.bluedevilsendfile.desktop
-new file mode 100644
-index 0000000000000000000000000000000000000000..d976633fa00c3439184bc71a5ba57dfb71911f57
---- /dev/null
-+++ b/src/sendfile/org.kde.bluedevilsendfile.desktop
-@@ -0,0 +1,94 @@
-+[Desktop Entry]
-+Name=BlueDevil Send File
-+Name[bs]=Bludevilovo slanje datoteke
-+Name[ca]=Envia fitxer amb BlueDevil
-+Name[cs]=Posílání souborů BlueDevil
-+Name[de]=BlueDevil-Dateiversand
-+Name[el]=Αποστολή αρχείου μέσω BlueDevil
-+Name[en_GB]=BlueDevil Send File
-+Name[es]=Enviar archivo con BlueDevil
-+Name[fi]=BlueDevil-tiedostonlähetys
-+Name[fr]=Envoi de fichiers par BlueDevil
-+Name[it]=Invio file di BlueDevil
-+Name[nb]=BlueDevil send fil
-+Name[nl]=BlueDevil bestand verzenden
-+Name[pl]=Wysłanie pliku BlueDevil
-+Name[pt]=Envio de Ficheiro do Bluetooth
-+Name[pt_BR]=Envio de arquivo do BlueDevil
-+Name[sk]=Posielanie súborov BlueDevil
-+Name[sl]=BlueDevil – pošiljanje datotek
-+Name[sr]=Блудевилово слање фајла
-+Name[sr@ijekavian]=Блудевилово слање фајла
-+Name[sr@ijekavianlatin]=BlueDevilovo slanje fajla
-+Name[sr@latin]=BlueDevilovo slanje fajla
-+Name[sv]=Blådjävul skicka fil
-+Name[tr]=BlueDevil Dosya Gönder
-+Name[uk]=Надсилання файла BlueDevil
-+Name[x-test]=xxBlueDevil Send Filexx
-+Name[zh_CN]=BlueDevil 发送文件
-+Name[zh_TW]=BlueDevil 傳送檔案
-+GenericName=BlueDevil Send File
-+GenericName[bs]=Bludevilovo slanje datoteke
-+GenericName[ca]=Envia fitxers amb BlueDevil
-+GenericName[cs]=Posílání souborů BlueDevil
-+GenericName[de]=BlueDevil-Dateiversand
-+GenericName[el]=Αποστολή αρχείου μέσω BlueDevil
-+GenericName[en_GB]=BlueDevil Send File
-+GenericName[es]=Enviar archivo con BlueDevil
-+GenericName[fi]=BlueDevil-tiedostonlähetys
-+GenericName[fr]=Envoi de fichiers par BlueDevil
-+GenericName[it]=Invio file di BlueDevil
-+GenericName[nb]=BlueDevil send fil
-+GenericName[nl]=BlueDevil bestand verzenden
-+GenericName[pl]=Wysłanie pliku BlueDevil
-+GenericName[pt]=Envio de Ficheiro do Bluetooth
-+GenericName[pt_BR]=Envio de arquivo do BlueDevil
-+GenericName[sk]=Posielanie súborov BlueDevil
-+GenericName[sl]=BlueDevil – pošiljanje datotek
-+GenericName[sr]=Блудевилово слање фајла
-+GenericName[sr@ijekavian]=Блудевилово слање фајла
-+GenericName[sr@ijekavianlatin]=BlueDevilovo slanje fajla
-+GenericName[sr@latin]=BlueDevilovo slanje fajla
-+GenericName[sv]=Blådjävul skicka fil
-+GenericName[tr]=BlueDevil Dosya Gönder
-+GenericName[uk]=Надсилання файла BlueDevil
-+GenericName[x-test]=xxBlueDevil Send Filexx
-+GenericName[zh_CN]=BlueDevil 发送文件
-+GenericName[zh_TW]=BlueDevil 傳送檔案
-+Comment=BlueDevil Send File
-+Comment[bs]=Bludevilovo slanje datoteke
-+Comment[ca]=Envia fitxers amb BlueDevil
-+Comment[cs]=Posílání souborů BlueDevil
-+Comment[de]=BlueDevil-Dateiversand
-+Comment[el]=Αποστολή αρχείου μέσω BlueDevil
-+Comment[en_GB]=BlueDevil Send File
-+Comment[es]=Enviar archivo con BlueDevil
-+Comment[fi]=BlueDevil-tiedostonlähetys
-+Comment[fr]=Envoi de fichiers par BlueDevil
-+Comment[it]=Invio file di BlueDevil
-+Comment[nb]=BlueDevil send fil
-+Comment[nl]=BlueDevil bestand verzenden
-+Comment[pl]=Wysłanie pliku BlueDevil
-+Comment[pt]=Envio de Ficheiro do Bluetooth
-+Comment[pt_BR]=Envio de arquivo do BlueDevil
-+Comment[sk]=Posielanie súborov BlueDevil
-+Comment[sl]=BlueDevil – pošiljanje datotek
-+Comment[sr]=Блудевилово слање фајла
-+Comment[sr@ijekavian]=Блудевилово слање фајла
-+Comment[sr@ijekavianlatin]=BlueDevilovo slanje fajla
-+Comment[sr@latin]=BlueDevilovo slanje fajla
-+Comment[sv]=Blådjävul skicka fil
-+Comment[tr]=BlueDevil Dosya Gönder
-+Comment[uk]=Надсилання файла BlueDevil
-+Comment[x-test]=xxBlueDevil Send Filexx
-+Comment[zh_CN]=BlueDevil 发送文件
-+Comment[zh_TW]=BlueDevil 傳送檔案
-+
-+Type=Application
-+MimeType=application/vnd.kde.bluedevil-sendfile;
-+Exec=bluedevil-sendfile -k%U
-+Icon=preferences-system-bluetooth
-+Terminal=false
-+NoDisplay=true
-+Categories=Qt;KDE;X-Bluetooth;Network;
-+X-DBUS-ServiceName=org.kde.bluedevilsendfile
-diff --git a/src/sendfile/pages/connecting.ui b/src/sendfile/pages/connecting.ui
-index 10d9d7ea41d62efdd50146d715508f3cc6c6be34..fc2bf06b3c33b0604f2479b2bec85e7034daafa4 100644
---- a/src/sendfile/pages/connecting.ui
-+++ b/src/sendfile/pages/connecting.ui
-@@ -12,11 +12,7 @@
-
-
- -
--
--
-- Connecting to: %1
--
--
-+
-
- -
-
-diff --git a/src/sendfile/pages/connectingpage.cpp b/src/sendfile/pages/connectingpage.cpp
-index 8d18c3dfecd5f513f088dd53d2f1d2eeddeb2dfd..1c34ed5f555951c190fe2683ae5f7f579573ca55 100644
---- a/src/sendfile/pages/connectingpage.cpp
-+++ b/src/sendfile/pages/connectingpage.cpp
-@@ -29,7 +29,8 @@
-
- using namespace BlueDevil;
-
--ConnectingPage::ConnectingPage(QWidget* parent): QWizardPage(parent)
-+ConnectingPage::ConnectingPage(QWidget *parent)
-+ : QWizardPage(parent)
- {
- setupUi(this);
- }
-diff --git a/src/sendfile/pages/connectingpage.h b/src/sendfile/pages/connectingpage.h
-index 935b394bd40cfef8ecbd6687d8c2f76cb23237ca..2834cfafc4626171d4ca569c9f9d5321b548e26b 100644
---- a/src/sendfile/pages/connectingpage.h
-+++ b/src/sendfile/pages/connectingpage.h
-@@ -27,15 +27,14 @@
-
- #include
-
--class ConnectingPage : public QWizardPage,
--public Ui::Connecting
-+class ConnectingPage : public QWizardPage, public Ui::Connecting
- {
--Q_OBJECT
-+ Q_OBJECT
- public:
-- ConnectingPage(QWidget* parent = 0);
-+ explicit ConnectingPage(QWidget *parent = 0);
-
-- virtual void initializePage();
-- virtual bool isComplete() const;
-+ void initializePage() Q_DECL_OVERRIDE;
-+ bool isComplete() const Q_DECL_OVERRIDE;
- };
-
- #endif // CONNECTINGPAGE_H
-diff --git a/src/sendfile/pages/selectdeviceandfilespage.cpp b/src/sendfile/pages/selectdeviceandfilespage.cpp
-index 0c8d07976dbee6beff8aba7f23be698d4da0a4b3..b22d90729225f99296a142894ebb4decc865f63a 100644
---- a/src/sendfile/pages/selectdeviceandfilespage.cpp
-+++ b/src/sendfile/pages/selectdeviceandfilespage.cpp
-@@ -39,7 +39,10 @@
- #include
-
- using namespace BlueDevil;
--SelectDeviceAndFilesPage::SelectDeviceAndFilesPage(QWidget* parent): QWizardPage(parent), m_dialog(0)
-+
-+SelectDeviceAndFilesPage::SelectDeviceAndFilesPage(QWidget *parent)
-+ : QWizardPage(parent)
-+ , m_dialog(0)
- {
- setupUi(this);
-
-@@ -56,24 +59,22 @@ SelectDeviceAndFilesPage::SelectDeviceAndFilesPage(QWidget* parent): QWizardPage
- selectBtn->setFixedSize(buttonSize, buttonSize);
- selectBtn->setIcon(QIcon::fromTheme(QStringLiteral("document-open")));
-
-- connect(widget, SIGNAL(deviceSelected(Device*)), this, SLOT(deviceSelected(Device*)));
-- connect(selectBtn, SIGNAL(clicked(bool)), this, SLOT(openFileDialog()));
-+ connect(widget, &DiscoverWidget::deviceSelected, this, &SelectDeviceAndFilesPage::deviceSelected);
-+ connect(selectBtn, &QPushButton::clicked, this, &SelectDeviceAndFilesPage::openFileDialog);
- }
-
--
--void SelectDeviceAndFilesPage::deviceSelected(Device* device)
-+void SelectDeviceAndFilesPage::deviceSelected(Device *device)
- {
- if (!device->name().isEmpty()) {
-- static_cast(wizard())->setDevice(device);
-+ static_cast(wizard())->setDevice(device);
- } else {
-- static_cast(wizard())->setDevice(0);
-+ static_cast(wizard())->setDevice(0);
- }
- emit completeChanged();
- }
-
- void SelectDeviceAndFilesPage::openFileDialog()
- {
-- //Don't worry MLaurent, I'm not going to check the pointer before delete it :)
- delete m_dialog;
-
- m_dialog = new QFileDialog(this, i18n("Open file..."),
-@@ -99,7 +100,7 @@ void SelectDeviceAndFilesPage::selectionChanged()
-
- bool SelectDeviceAndFilesPage::isComplete() const
- {
-- if (!static_cast(wizard())->device()) {
-+ if (!static_cast(wizard())->device()) {
- return false;
- }
-
-diff --git a/src/sendfile/pages/selectdeviceandfilespage.h b/src/sendfile/pages/selectdeviceandfilespage.h
-index 19a718b684bf7239cce19f7ef3fa1a0ea90ea53d..f5b50fccbfce8c64996dccdfcee6f7451dc6da47 100644
---- a/src/sendfile/pages/selectdeviceandfilespage.h
-+++ b/src/sendfile/pages/selectdeviceandfilespage.h
-@@ -31,22 +31,22 @@ class KUrl;
- class QWizard;
- class QFileDialog;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- }
--using namespace BlueDevil;
-
--class SelectDeviceAndFilesPage : public QWizardPage ,
-- public Ui::SelectFileDiscover
-+class SelectDeviceAndFilesPage : public QWizardPage, public Ui::SelectFileDiscover
- {
--Q_OBJECT
-+ Q_OBJECT
-+
- public:
-- SelectDeviceAndFilesPage(QWidget* parent = 0);
-+ explicit SelectDeviceAndFilesPage(QWidget *parent = 0);
-
-- virtual bool isComplete() const;
-+ bool isComplete() const Q_DECL_OVERRIDE;
-
- private Q_SLOTS:
-- void deviceSelected(Device*);
-+ void deviceSelected(BlueDevil::Device *device);
- void openFileDialog();
- void selectionChanged();
-
-diff --git a/src/sendfile/pages/selectdevicepage.cpp b/src/sendfile/pages/selectdevicepage.cpp
-index 01423ddbae316d07c1f8d13292aa71a771141bd4..69a2c84f9d7f800894c15f99378ac1d9901ec9a1 100644
---- a/src/sendfile/pages/selectdevicepage.cpp
-+++ b/src/sendfile/pages/selectdevicepage.cpp
-@@ -36,7 +36,10 @@
- #include
-
- using namespace BlueDevil;
--SelectDevicePage::SelectDevicePage(QWidget* parent): QWizardPage(parent), m_dialog(0)
-+
-+SelectDevicePage::SelectDevicePage(QWidget *parent) :
-+ QWizardPage(parent),
-+ m_dialog(0)
- {
- setupUi(this);
-
-@@ -51,22 +54,22 @@ SelectDevicePage::SelectDevicePage(QWidget* parent): QWizardPage(parent), m_dial
-
- selectBtn->setHidden(true);
- selectLbl->setHidden(true);
-- connect(widget, SIGNAL(deviceSelected(Device*)), this, SLOT(deviceSelected(Device*)));
-+ connect(widget, &DiscoverWidget::deviceSelected, this, &SelectDevicePage::deviceSelected);
- }
-
--void SelectDevicePage::deviceSelected(Device* device)
-+void SelectDevicePage::deviceSelected(Device *device)
- {
- if (!device->name().isEmpty()) {
-- static_cast(wizard())->setDevice(device);
-+ static_cast(wizard())->setDevice(device);
- } else {
-- static_cast(wizard())->setDevice(0);
-+ static_cast(wizard())->setDevice(0);
- }
- emit completeChanged();
- }
-
- bool SelectDevicePage::isComplete() const
- {
-- if (!static_cast(wizard())->device()) {
-+ if (!static_cast(wizard())->device()) {
- return false;
- }
-
-diff --git a/src/sendfile/pages/selectdevicepage.h b/src/sendfile/pages/selectdevicepage.h
-index 8c4b494a2515118d95954f14feeb437fcd9204e1..18d2cc7ba7bba95e6878fb2e5bcabe8ee7b57fd7 100644
---- a/src/sendfile/pages/selectdevicepage.h
-+++ b/src/sendfile/pages/selectdevicepage.h
-@@ -30,22 +30,23 @@
- class KUrl;
- class QWizard;
- class KFileDialog;
--namespace BlueDevil {
-+
-+namespace BlueDevil
-+{
- class Device;
- }
--using namespace BlueDevil;
-
--class SelectDevicePage : public QWizardPage ,
-- public Ui::SelectFileDiscover
-+class SelectDevicePage : public QWizardPage, public Ui::SelectFileDiscover
- {
--Q_OBJECT
-+ Q_OBJECT
-+
- public:
-- SelectDevicePage(QWidget* parent = 0);
-+ explicit SelectDevicePage(QWidget *parent = 0);
-
-- virtual bool isComplete() const;
-+ bool isComplete() const Q_DECL_OVERRIDE;
-
- private Q_SLOTS:
-- void deviceSelected(Device*);
-+ void deviceSelected(BlueDevil::Device *device);
-
- private:
- KFileDialog *m_dialog;
-diff --git a/src/sendfile/pages/selectfilespage.cpp b/src/sendfile/pages/selectfilespage.cpp
-index 7362eef89f8125209c6a16342434989d18e91bbd..56ba9afdede07fb74379b63433a66b17eb1eb9f4 100644
---- a/src/sendfile/pages/selectfilespage.cpp
-+++ b/src/sendfile/pages/selectfilespage.cpp
-@@ -31,14 +31,15 @@
- #include
- #include
-
--SelectFilesPage::SelectFilesPage(QWidget* parent): QWizardPage(parent)
-+SelectFilesPage::SelectFilesPage(QWidget *parent)
-+ : QWizardPage(parent)
- {
- m_files = new KFileWidget(QUrl(QStandardPaths::writableLocation(QStandardPaths::HomeLocation)), this);
- m_files->setMode(KFile::Files);
- m_files->setContentsMargins(0, 0, 0, 0);
- setContentsMargins(0, 0, 0, 0);
-
-- connect(m_files, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
-+ connect(m_files, &KFileWidget::selectionChanged, this, &SelectFilesPage::selectionChanged);
-
- QVBoxLayout *layout = new QVBoxLayout(this);
- layout->addWidget(m_files);
-@@ -48,10 +49,12 @@ void SelectFilesPage::selectionChanged()
- {
- QStringList fileList;
- KFileItemList itemList = m_files->dirOperator()->selectedItems();
-- Q_FOREACH(const KFileItem &file, itemList) {
-+
-+ Q_FOREACH (const KFileItem &file, itemList) {
- fileList << file.localPath();
- }
-- static_cast(wizard())->setFiles(fileList);
-+
-+ static_cast(wizard())->setFiles(fileList);
- emit completeChanged();
- }
-
-diff --git a/src/sendfile/pages/selectfilespage.h b/src/sendfile/pages/selectfilespage.h
-index a8022706dad98b01362e0eec903946fcd4407587..623a21648446516b6816a843597dc6d285bc5cdb 100644
---- a/src/sendfile/pages/selectfilespage.h
-+++ b/src/sendfile/pages/selectfilespage.h
-@@ -30,11 +30,12 @@ class KFileWidget;
-
- class SelectFilesPage : public QWizardPage
- {
--Q_OBJECT
-+ Q_OBJECT
-+
- public:
-- SelectFilesPage(QWidget* parent = 0);
-+ explicit SelectFilesPage(QWidget *parent = 0);
-
-- virtual bool isComplete() const;
-+ bool isComplete() const Q_DECL_OVERRIDE;
-
- private Q_SLOTS:
- void selectionChanged();
-diff --git a/src/sendfile/sendfilesjob.cpp b/src/sendfile/sendfilesjob.cpp
-index 554616b35a63ac8806b0193f0eaf0d38d823b8ec..c943ef0d14880d733160de3ea0f673a89b9f99bc 100644
---- a/src/sendfile/sendfilesjob.cpp
-+++ b/src/sendfile/sendfilesjob.cpp
-@@ -31,7 +31,8 @@
- #include
-
- using namespace BlueDevil;
--SendFilesJob::SendFilesJob(const QStringList& files, Device* device, QObject* parent)
-+
-+SendFilesJob::SendFilesJob(const QStringList &files, Device *device, QObject *parent)
- : KJob(parent)
- , m_progress(0)
- , m_totalSize(0)
-@@ -41,6 +42,7 @@ SendFilesJob::SendFilesJob(const QStringList& files, Device* device, QObject* pa
- , m_currentFileProgress(0)
- {
- qCDebug(SENDFILE) << files;
-+
- m_filesToSend = files;
-
- Q_FOREACH(const QString &filePath, files) {
-@@ -64,14 +66,15 @@ void SendFilesJob::start()
-
- void SendFilesJob::doStart()
- {
-- qCDebug(SENDFILE);
- QVariantMap map;
-- map["Target"] = "opp";
-+ map[QStringLiteral("Target")] = QStringLiteral("opp");
-
- setTotalAmount(Bytes, m_totalSize);
- setProcessedAmount(Bytes, 0);
-
-- emit description(this, i18n("Sending file over Bluetooth"), QPair(i18nc("File transfer origin", "From"), m_filesToSend.first()), QPair(i18nc("File transfer destination", "To"), m_device->name()));
-+ emit description(this, i18n("Sending file over Bluetooth"),
-+ QPair(i18nc("File transfer origin", "From"), m_filesToSend.first()),
-+ QPair(i18nc("File transfer destination", "To"), m_device->name()));
-
- m_client = new OrgBluezObexClient1Interface(QStringLiteral("org.bluez.obex"),
- QStringLiteral("/org/bluez/obex"),
-@@ -80,7 +83,7 @@ void SendFilesJob::doStart()
-
- QDBusPendingReply reply = m_client->CreateSession(m_device->address(), map);
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply);
-- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(createSessionSlot(QDBusPendingCallWatcher*)));
-+ connect(watcher, &QDBusPendingCallWatcher::finished, this, &SendFilesJob::createSessionSlot);
- }
-
- void SendFilesJob::createSessionSlot(QDBusPendingCallWatcher *call)
-@@ -102,14 +105,14 @@ void SendFilesJob::createSessionSlot(QDBusPendingCallWatcher *call)
- nextJob();
- }
-
--void SendFilesJob::sendFileSlot(QDBusPendingCallWatcher* watcher)
-+void SendFilesJob::sendFileSlot(QDBusPendingCallWatcher *watcher)
- {
- const QDBusPendingReply reply = *watcher;
- watcher->deleteLater();
- QString path = reply.value().path();
-
- m_props = new OrgFreedesktopDBusPropertiesInterface(QStringLiteral("org.bluez.obex"), path, QDBusConnection::sessionBus(), this);
-- connect(m_props, SIGNAL(PropertiesChanged(QString,QVariantMap,QStringList)), SLOT(propertiesChangedSlot(QString,QVariantMap,QStringList)));
-+ connect(m_props, &OrgFreedesktopDBusPropertiesInterface::PropertiesChanged, this, &SendFilesJob::propertiesChangedSlot);
- }
-
- void SendFilesJob::propertiesChangedSlot(const QString& interface, const QVariantMap& props, const QStringList& invalidProps)
-@@ -131,7 +134,8 @@ void SendFilesJob::propertiesChangedSlot(const QString& interface, const QVarian
- void SendFilesJob::statusChanged(const QVariant& value)
- {
- qCDebug(SENDFILE) << value;
-- QString status = value.toString();
-+
-+ const QString &status = value.toString();
-
- if (status == QLatin1String("active")) {
- m_time = QTime::currentTime();
-@@ -151,6 +155,7 @@ void SendFilesJob::statusChanged(const QVariant& value)
- void SendFilesJob::transferChanged(const QVariant& value)
- {
- qCDebug(SENDFILE) << value;
-+
- bool ok = false;
- qulonglong bytes = value.toULongLong(&ok);
- if (!ok) {
-@@ -158,7 +163,7 @@ void SendFilesJob::transferChanged(const QVariant& value)
- return;
- }
-
-- //If a least 1 second has passed since last update
-+ // If a least 1 second has passed since last update
- int secondsSinceLastTime = m_time.secsTo(QTime::currentTime());
- if (secondsSinceLastTime > 0) {
- float speed = (bytes - m_speedBytes) / secondsSinceLastTime;
-@@ -177,17 +182,18 @@ void SendFilesJob::nextJob()
- m_currentFile = m_filesToSend.takeFirst();
- m_currentFileSize = m_filesToSendSize.takeFirst();
-
-- emit description(this, i18n("Sending file over Bluetooth"), QPair(i18nc("File transfer origin", "From"), m_currentFile), QPair(i18nc("File transfer destination", "To"), m_device->name()));
-+ emit description(this, i18n("Sending file over Bluetooth"),
-+ QPair(i18nc("File transfer origin", "From"), m_currentFile),
-+ QPair(i18nc("File transfer destination", "To"), m_device->name()));
-
- QDBusPendingReply fileReply = m_push->SendFile(m_currentFile);
-
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(fileReply);
-- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), SLOT(sendFileSlot(QDBusPendingCallWatcher*)));
-+ connect(watcher, &QDBusPendingCallWatcher::finished, this, &SendFilesJob::sendFileSlot);
- }
-
- void SendFilesJob::jobDone()
- {
-- qCDebug(SENDFILE);
- m_speedBytes = 0;
- m_currentFileSize = 0;
- m_currentFileProgress = 0;
-@@ -202,8 +208,6 @@ void SendFilesJob::jobDone()
-
- void SendFilesJob::progress(quint64 transferBytes)
- {
-- qCDebug(SENDFILE);
--
- quint64 toAdd = transferBytes - m_currentFileProgress;
- m_currentFileProgress = transferBytes;
- m_progress += toAdd;
-@@ -213,9 +217,10 @@ void SendFilesJob::progress(quint64 transferBytes)
- void SendFilesJob::error(const QDBusObjectPath& transfer, const QString& error)
- {
- Q_UNUSED(transfer)
-+
- qCDebug(SENDFILE) << error;
-
-- //if this is the last file, just emit error
-+ // If this is the last file, just emit error
- if (m_filesToSend.isEmpty()) {
- setError(KJob::UserDefinedError);
- return;
-@@ -225,5 +230,4 @@ void SendFilesJob::error(const QDBusObjectPath& transfer, const QString& error)
- m_progress += toAdd;
- setProcessedAmount(Bytes, m_progress);
- nextJob();
--
- }
-diff --git a/src/sendfile/sendfilesjob.h b/src/sendfile/sendfilesjob.h
-index 28e8ac249d1e94c0f8af22473a23435cfb204733..68580c092790576afcec540c2d242c9fad34a755 100644
---- a/src/sendfile/sendfilesjob.h
-+++ b/src/sendfile/sendfilesjob.h
-@@ -40,15 +40,14 @@ class OrgBluezObexClient1Interface;
- class OrgBluezObexObjectPush1Interface;
- class OrgFreedesktopDBusPropertiesInterface;
-
--using namespace BlueDevil;
- class SendFilesJob : public KJob
- {
--Q_OBJECT
-+ Q_OBJECT
- public:
-- SendFilesJob(const QStringList &files, BlueDevil::Device* device, QObject* parent = 0);
-+ explicit SendFilesJob(const QStringList &files, BlueDevil::Device *device, QObject *parent = 0);
-
-- virtual void start();
-- virtual bool doKill();
-+ void start() Q_DECL_OVERRIDE;
-+ bool doKill() Q_DECL_OVERRIDE;
-
- private Q_SLOTS:
- void doStart();
-@@ -56,26 +55,25 @@ private Q_SLOTS:
- void nextJob();
- void jobDone();
- void progress(quint64 transferBytes);
-- void error(const QDBusObjectPath& transfer, const QString& error);
-- void propertiesChangedSlot(const QString& interface, const QVariantMap &props, const QStringList &invalidProps);
-- void sendFileSlot(QDBusPendingCallWatcher* watcher);
-+ void error(const QDBusObjectPath &transfer, const QString &error);
-+ void propertiesChangedSlot(const QString &interface, const QVariantMap &props, const QStringList &invalidProps);
-+ void sendFileSlot(QDBusPendingCallWatcher *watcher);
-
- private:
- void transferChanged(const QVariant &value);
- void statusChanged(const QVariant &value);
-
- QTime m_time;
-- QStringList m_filesToSend;
-+ QStringList m_filesToSend;
- QList m_filesToSendSize;
-- QString m_currentFile;
-+ QString m_currentFile;
- QDBusObjectPath m_currentFileDBusPath;
-- quint64 m_progress;
-- quint64 m_totalSize;
-+ quint64 m_progress;
-+ quint64 m_totalSize;
- qulonglong m_speedBytes;
-- Device *m_device;
-- quint64 m_currentFileSize;
-- quint64 m_currentFileProgress;
--
-+ BlueDevil::Device *m_device;
-+ quint64 m_currentFileSize;
-+ quint64 m_currentFileProgress;
-
- OrgBluezObexClient1Interface *m_client;
- OrgBluezObexObjectPush1Interface *m_push;
-diff --git a/src/sendfile/sendfilewizard.cpp b/src/sendfile/sendfilewizard.cpp
-index 655798965a60dbd26def72f6cf5f35f1f1354308..71b01ea4a8abc9112ac0026b63df788b95ded415 100644
---- a/src/sendfile/sendfilewizard.cpp
-+++ b/src/sendfile/sendfilewizard.cpp
-@@ -41,7 +41,7 @@
-
- using namespace BlueDevil;
-
--SendFileWizard::SendFileWizard(const QString& deviceInfo, const QStringList& files)
-+SendFileWizard::SendFileWizard(const QString &deviceInfo, const QStringList &files)
- : QWizard()
- , m_device(0)
- , m_job(0)
-@@ -52,7 +52,7 @@ SendFileWizard::SendFileWizard(const QString& deviceInfo, const QStringList& fil
- return;
- }
-
-- qCDebug(SENDFILE) << "DeviceUbi: " << deviceInfo;
-+ qCDebug(SENDFILE) << "DeviceUbi:" << deviceInfo;
- qCDebug(SENDFILE) << "Files";
- qCDebug(SENDFILE) << files;
-
-@@ -106,13 +106,13 @@ void SendFileWizard::done(int result)
- }
- }
-
--void SendFileWizard::setFiles(const QStringList& files)
-+void SendFileWizard::setFiles(const QStringList &files)
- {
- qCDebug(SENDFILE) << files;
- m_files = files;
- }
-
--void SendFileWizard::setDevice(Device* device)
-+void SendFileWizard::setDevice(Device *device)
- {
- qCDebug(SENDFILE) << device;
- m_device = device;
-@@ -136,7 +136,7 @@ void SendFileWizard::setDevice(QString deviceUrl)
- m_device = device;
- }
-
--Device* SendFileWizard::device()
-+Device *SendFileWizard::device()
- {
- return m_device;
- }
-@@ -157,11 +157,10 @@ void SendFileWizard::startTransfer()
- }
-
- m_job = new SendFilesJob(m_files, m_device);
-- connect(m_job, SIGNAL(destroyed(QObject*)), qApp, SLOT(quit()));
-+ connect(m_job, &SendFilesJob::destroyed, qApp, &QCoreApplication::quit);
-
- KIO::getJobTracker()->registerJob(m_job);
- m_job->start();
-
-- QTimer::singleShot(2000, this, SLOT(wizardDone()));
-+ QTimer::singleShot(2000, this, &SendFileWizard::wizardDone);
- }
--
-diff --git a/src/sendfile/sendfilewizard.h b/src/sendfile/sendfilewizard.h
-index 9b425e2d6b6d7c773f72eeb7020346bd358965e1..1dae831e2a18455259207d733d60ad38fc1465b7 100644
---- a/src/sendfile/sendfilewizard.h
-+++ b/src/sendfile/sendfilewizard.h
-@@ -31,26 +31,27 @@
- class WizardAgent;
- class QStringList;
- class SendFilesJob;
--namespace BlueDevil {
-+
-+namespace BlueDevil
-+{
- class Device;
- }
--using namespace BlueDevil;
-
- class SendFileWizard : public QWizard
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- SendFileWizard(const QString &deviceUBI, const QStringList &files);
-- virtual ~SendFileWizard();
-+ explicit SendFileWizard(const QString &deviceUBI, const QStringList &files);
-+ ~SendFileWizard();
-
-- virtual void done(int result);
-+ void done(int result) Q_DECL_OVERRIDE;
-
- void setFiles(const QStringList &files);
-
-- void setDevice(Device *device);
-+ void setDevice(BlueDevil::Device *device);
- void setDevice(QString deviceUrl);
-- Device* device();
-+ BlueDevil::Device *device();
-
- void startTransfer();
-
-@@ -58,9 +59,8 @@ private Q_SLOTS:
- void wizardDone();
-
- private:
-- QStringList m_files;
--
-- Device *m_device;
-+ QStringList m_files;
-+ BlueDevil::Device *m_device;
- SendFilesJob *m_job;
- };
-
-diff --git a/src/settings/filereceiver.kcfg b/src/settings/filereceiver.kcfg
-index 5740f9a04c944820a85610b249a52ccf9b51b08d..a2e6521563e4a74cb4ed7fbdaa629ef177b54f1d 100644
---- a/src/settings/filereceiver.kcfg
-+++ b/src/settings/filereceiver.kcfg
-@@ -3,14 +3,9 @@
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
- http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
--
-
-- QFile
-- QDir
-- QStandardPaths
-- KIO/Global
-
--
-+
-
-
-
-@@ -18,7 +13,7 @@ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
-
-
-
-- QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation))
-+ QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation))
-
-
-
-diff --git a/src/wizard/CMakeLists.txt b/src/wizard/CMakeLists.txt
-index d615f3db4c854da479ac936971d7760f560ae80b..e096ad1df3eaf04c1c775c099df7484f67808d33 100644
---- a/src/wizard/CMakeLists.txt
-+++ b/src/wizard/CMakeLists.txt
-@@ -11,6 +11,7 @@ set(wizard_SRCS
- pages/keyboardpairing.cpp
- pages/ssppairing.cpp
- pages/fail.cpp
-+ pages/success.cpp
- )
-
- ki18n_wrap_ui(wizard_SRCS
-@@ -20,6 +21,7 @@ ki18n_wrap_ui(wizard_SRCS
- pages/keyboardpairing.ui
- pages/ssppairing.ui
- pages/fail.ui
-+ pages/success.ui
- )
-
- add_executable(bluedevil-wizard ${wizard_SRCS})
-@@ -35,5 +37,5 @@ target_link_libraries(bluedevil-wizard
- ${LibBlueDevil_LIBRARIES})
-
- install(TARGETS bluedevil-wizard ${INSTALL_TARGETS_DEFAULT_ARGS})
--install(FILES bluedevil-wizard.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
-+install(FILES org.kde.bluedevilwizard.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
- install(FILES pin-code-database.xml DESTINATION ${DATA_INSTALL_DIR}/bluedevilwizard)
-diff --git a/src/wizard/bluewizard.cpp b/src/wizard/bluewizard.cpp
-index 02f54b7f141d852cb51057521b6d3896aadf1f49..2f1e62a0e84e46fd35be409175f22c1b36eb90c7 100644
---- a/src/wizard/bluewizard.cpp
-+++ b/src/wizard/bluewizard.cpp
-@@ -23,6 +23,7 @@
- #include "pages/legacypairingdatabase.h"
- #include "pages/keyboardpairing.h"
- #include "pages/ssppairing.h"
-+#include "pages/success.h"
- #include "pages/fail.h"
- #include "debug_p.h"
-
-@@ -47,11 +48,11 @@ BlueWizard::BlueWizard(const QUrl &url)
- setOption(QWizard::IndependentPages, true);
-
- if (url.host().length() == 17) {
-- setPreselectedAddress(url.host().replace(QLatin1Char('-'), QLatin1Char(':')).toLatin1());
-+ setPreselectedAddress(url.host().replace(QLatin1Char('-'), QLatin1Char(':')));
- }
-
- if (url.fileName().length() == 36) {
-- setPreselectedUuid(url.fileName().toLatin1());
-+ setPreselectedUuid(url.fileName());
- }
-
- setPage(Discover, new DiscoverPage(this));
-@@ -61,6 +62,7 @@ BlueWizard::BlueWizard(const QUrl &url)
- 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));
-
- QPushButton *backButton = new QPushButton(this);
-@@ -94,10 +96,6 @@ BlueWizard::BlueWizard(const QUrl &url)
- m_agent = new WizardAgent(qApp);
- }
-
--BlueWizard::~BlueWizard()
--{
--}
--
- void BlueWizard::done(int result)
- {
- qCDebug(WIZARD) << "Wizard done: " << result;
-@@ -111,9 +109,10 @@ Device* BlueWizard::device() const
- return m_device;
- }
-
--void BlueWizard::setDeviceAddress(const QByteArray& address)
-+void BlueWizard::setDeviceAddress(const QString &address)
- {
- qCDebug(WIZARD) << "Device Address: " << address;
-+
- if (!Manager::self()->usableAdapter()) {
- qCDebug(WIZARD) << "No usable adapter available";
- return;
-@@ -123,7 +122,7 @@ void BlueWizard::setDeviceAddress(const QByteArray& address)
- m_device = Manager::self()->usableAdapter()->deviceForAddress(m_deviceAddress);
- }
-
--QByteArray BlueWizard::deviceAddress() const
-+QString BlueWizard::deviceAddress() const
- {
- return m_deviceAddress;
- }
-@@ -137,45 +136,43 @@ void BlueWizard::restartWizard()
- qApp->quit();
- }
-
--void BlueWizard::setPin(const QByteArray& pinNum)
-+void BlueWizard::setPin(const QString &pin)
- {
-- qCDebug(WIZARD) << "Setting pin: :" << pinNum;
-- m_pin = pinNum;
--}
-+ qCDebug(WIZARD) << "Setting pin:" << pin;
-
--void BlueWizard::setPin(const QString& pin)
--{
-- setPin(pin.toUtf8());
-+ m_pin = pin;
- }
-
--QByteArray BlueWizard::pin() const
-+QString BlueWizard::pin() const
- {
- return m_pin;
- }
-
--void BlueWizard::setPreselectedUuid(const QByteArray& uuid)
-+void BlueWizard::setPreselectedUuid(const QString &uuid)
- {
- qCDebug(WIZARD) << "Preselect UUID: " << uuid;
-+
- m_preselectedUuid = uuid;
- }
-
--QByteArray BlueWizard::preselectedUuid() const
-+QString BlueWizard::preselectedUuid() const
- {
- return m_preselectedUuid;
- }
-
--void BlueWizard::setPreselectedAddress(const QByteArray& address)
-+void BlueWizard::setPreselectedAddress(const QString &address)
- {
- qCDebug(WIZARD) << "Preselected Address: " << address;
-+
- m_preselectedAddress = address;
- }
-
--QByteArray BlueWizard::preselectedAddress() const
-+QString BlueWizard::preselectedAddress() const
- {
- return m_preselectedAddress;
- }
-
--WizardAgent* BlueWizard::agent() const
-+WizardAgent *BlueWizard::agent() const
- {
- return m_agent;
- }
-diff --git a/src/wizard/bluewizard.h b/src/wizard/bluewizard.h
-index ce817d164609ce2fc1b54cc0eb0a2a18e90dd51f..e930916919ad222eba5030a0d18ff27a1e35f926 100644
---- a/src/wizard/bluewizard.h
-+++ b/src/wizard/bluewizard.h
-@@ -15,57 +15,66 @@
- along with this program. If not, see .
- */
-
--
- #ifndef BLUEWIZARD_H
- #define BLUEWIZARD_H
-
- #include
- #include
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- }
-
- class WizardAgent;
-+
- class BlueWizard : public QWizard
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- BlueWizard(const QUrl& url);
-- virtual ~BlueWizard();
-+ explicit BlueWizard(const QUrl &url);
-
-- QByteArray deviceAddress() const;
-- void setDeviceAddress(const QByteArray& address);
-+ QString deviceAddress() const;
-+ void setDeviceAddress(const QString &address);
-
- BlueDevil::Device *device() const;
-
-- QByteArray pin() const;
-- void setPin(const QByteArray& pin);
-+ QString pin() const;
-+ void setPin(const QString &pin);
-
-- QByteArray preselectedUuid() const;
-- void setPreselectedUuid(const QByteArray &uuid);
-+ QString preselectedUuid() const;
-+ void setPreselectedUuid(const QString &uuid);
-
-- QByteArray preselectedAddress() const;
-- void setPreselectedAddress(const QByteArray &uuid);
-+ QString preselectedAddress() const;
-+ void setPreselectedAddress(const QString &uuid);
-
-- WizardAgent* agent() const;
-+ 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();
-- void setPin(const QString& pin);
-- virtual void done(int result);
-+ void done(int result) Q_DECL_OVERRIDE;
-
- private:
-- QByteArray m_deviceAddress;
-- BlueDevil::Device * m_device;
-- QByteArray m_pin;
-- QByteArray m_preselectedUuid;
-- QByteArray m_preselectedAddress;
-+ BlueDevil::Device *m_device;
- WizardAgent *m_agent;
-
-+ QString m_pin;
-+ QString m_deviceAddress;
-+ QString m_preselectedUuid;
-+ QString m_preselectedAddress;
- bool m_manualPin;
- };
-
-diff --git a/src/wizard/main.cpp b/src/wizard/main.cpp
-index ee9edf80f8916dfaaffe98724d99ccf4aa2320f1..80e260b0cc650328520bcfcd2076b4adbcdbf3e7 100644
---- a/src/wizard/main.cpp
-+++ b/src/wizard/main.cpp
-@@ -28,6 +28,7 @@
- #include
-
- #include
-+#include
- #include
-
- int main(int argc, char *argv[])
-@@ -43,13 +44,12 @@ int main(int argc, char *argv[])
- QStringLiteral("afiestas@kde.org"), QStringLiteral("http://www.afiestas.org/"));
-
- QApplication app(argc, argv);
-- app.setApplicationName(QStringLiteral("bluedevilwizard"));
-- app.setApplicationVersion(bluedevil_version);
-- app.setApplicationDisplayName(i18n("Bluetooth Wizard"));
-- app.setOrganizationDomain(QStringLiteral("kde.org"));
- app.setWindowIcon(QIcon::fromTheme(QStringLiteral("preferences-system-bluetooth")));
- app.setQuitOnLastWindowClosed(false);
-
-+ KAboutData::setApplicationData(aboutData);
-+ KDBusService service(KDBusService::Unique);
-+
- QCommandLineParser parser;
- parser.setApplicationDescription(i18n("Bluetooth Wizard"));
- parser.addVersionOption();
-@@ -59,12 +59,13 @@ int main(int argc, char *argv[])
- parser.process(app);
-
- const QStringList &args = parser.positionalArguments();
-- QUrl url;
-- if (!args.isEmpty()) {
-- url = args.first();
-- }
-+ const QUrl &url = !args.isEmpty() ? args.first() : QUrl();
-+
-+ BlueWizard *wizard = new BlueWizard(url);
-
-- new BlueWizard(url);
-+ QObject::connect(&service, &KDBusService::activateRequested, wizard, [wizard]() {
-+ wizard->setWindowState((wizard->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
-+ });
-
- return app.exec();
- }
-diff --git a/src/wizard/org.kde.bluedevilwizard.desktop b/src/wizard/org.kde.bluedevilwizard.desktop
-new file mode 100644
-index 0000000000000000000000000000000000000000..8e89f302bbd2c1a4a9b6efb5d7e36a63272482bf
---- /dev/null
-+++ b/src/wizard/org.kde.bluedevilwizard.desktop
-@@ -0,0 +1,99 @@
-+[Desktop Entry]
-+Name=BlueDevil Wizard
-+Name[bs]=Bludevilov čarobnjak
-+Name[ca]=Assistent del BlueDevil
-+Name[cs]=Průvodce Bluedevil
-+Name[de]=BlueDevil-Assistent
-+Name[el]=Οδηγός BlueDevil
-+Name[en_GB]=BlueDevil Wizard
-+Name[es]=Asistente de BlueDevil
-+Name[fi]=Opastettu BlueDevil-toiminto
-+Name[fr]=Assistant pour BlueDevil
-+Name[it]=Procedura guidata di BlueDevil
-+Name[ja]=BlueDevil ウィザード
-+Name[nb]=BlueDevil veiviser
-+Name[nl]=BlueDevil assistent
-+Name[pl]=Pomocnik BlueDevil
-+Name[pt]=Assistente BlueDevil
-+Name[pt_BR]=Assistente BlueDevil
-+Name[sk]=Sprievodca BlueDevil
-+Name[sl]=BlueDevil – čarovnik
-+Name[sr]=Блудевилов чаробњак
-+Name[sr@ijekavian]=Блудевилов чаробњак
-+Name[sr@ijekavianlatin]=BlueDevilov čarobnjak
-+Name[sr@latin]=BlueDevilov čarobnjak
-+Name[sv]=Blådjävul guide
-+Name[tr]=BlueDevil Sihirbazı
-+Name[uk]=Майстер BlueDevil
-+Name[x-test]=xxBlueDevil Wizardxx
-+Name[zh_CN]=BlueDevil 向导
-+Name[zh_TW]=BlueDevil 精靈
-+GenericName=BlueDevil Wizard
-+GenericName[bs]=Bludevilov čarobnjak
-+GenericName[ca]=Assistent del BlueDevil
-+GenericName[cs]=Průvodce Bluedevil
-+GenericName[de]=BlueDevil-Assistent
-+GenericName[el]=Οδηγός BlueDevil
-+GenericName[en_GB]=BlueDevil Wizard
-+GenericName[es]=Asistente de BlueDevil
-+GenericName[fi]=Opastettu BlueDevil-toiminto
-+GenericName[fr]=Assistant pour BlueDevil
-+GenericName[it]=Procedura guidata di BlueDevil
-+GenericName[ja]=BlueDevil ウィザード
-+GenericName[nb]=BlueDevil veiviser
-+GenericName[nl]=BlueDevil assistent
-+GenericName[pa]=BlueDevil ਸਹਾਇਕ
-+GenericName[pl]=Pomocnik BlueDevil
-+GenericName[pt]=Assistente BlueDevil
-+GenericName[pt_BR]=Assistente BlueDevil
-+GenericName[sk]=Sprievodca BlueDevil
-+GenericName[sl]=BlueDevil – čarovnik
-+GenericName[sr]=Блудевилов чаробњак
-+GenericName[sr@ijekavian]=Блудевилов чаробњак
-+GenericName[sr@ijekavianlatin]=BlueDevilov čarobnjak
-+GenericName[sr@latin]=BlueDevilov čarobnjak
-+GenericName[sv]=Blådjävul guide
-+GenericName[tr]=BlueDevil Sihirbazı
-+GenericName[uk]=Майстер BlueDevil
-+GenericName[x-test]=xxBlueDevil Wizardxx
-+GenericName[zh_CN]=BlueDevil 向导
-+GenericName[zh_TW]=BlueDevil 精靈
-+Comment=BlueDevil Wizard
-+Comment[bs]=Bludevilov čarobnjak
-+Comment[ca]=Assistent del BlueDevil
-+Comment[cs]=BlueDevil
-+Comment[de]=BlueDevil-Assistent
-+Comment[el]=Οδηγός BlueDevil
-+Comment[en_GB]=BlueDevil Wizard
-+Comment[es]=Asistente de BlueDevil
-+Comment[fi]=Opastettu BlueDevil-toiminto
-+Comment[fr]=Assistant pour BlueDevil
-+Comment[it]=Procedura guidata di BlueDevil
-+Comment[ja]=BlueDevil ウィザード
-+Comment[nb]=BlueDevil veiviser
-+Comment[nl]=BlueDevil assistent
-+Comment[pa]=BlueDevil ਸਹਾਇਕ
-+Comment[pl]=Pomocnik BlueDevil
-+Comment[pt]=Assistente BlueDevil
-+Comment[pt_BR]=Assistente BlueDevil
-+Comment[sk]=Sprievodca BlueDevil
-+Comment[sl]=BlueDevil – čarovnik
-+Comment[sr]=Блудевилов чаробњак
-+Comment[sr@ijekavian]=Блудевилов чаробњак
-+Comment[sr@ijekavianlatin]=BlueDevilov čarobnjak
-+Comment[sr@latin]=BlueDevilov čarobnjak
-+Comment[sv]=Blådjävul guide
-+Comment[tr]=BlueDevil Sihirbazı
-+Comment[uk]=Майстер BlueDevil
-+Comment[x-test]=xxBlueDevil Wizardxx
-+Comment[zh_CN]=BlueDevil 向导
-+Comment[zh_TW]=BlueDevil 精靈
-+
-+Type=Application
-+Exec=bluedevil-wizard %U
-+Icon=preferences-system-bluetooth
-+Terminal=false
-+NoDisplay=true
-+Categories=Qt;KDE;X-Bluetooth;Network;
-+X-DBUS-StartupType=Unique
-+X-DBUS-ServiceName=org.kde.bluedevilwizard
-diff --git a/src/wizard/pages/discover.ui b/src/wizard/pages/discover.ui
-index c43f080e49649130f01911141bf9e03509496cb4..aec410db9fbcc8e84273cba0ab95de85b4133b4d 100644
---- a/src/wizard/pages/discover.ui
-+++ b/src/wizard/pages/discover.ui
-@@ -114,9 +114,6 @@
- 40
-
-
--
-- 999999999;
--
-
- false
-
-diff --git a/src/wizard/pages/discoverpage.cpp b/src/wizard/pages/discoverpage.cpp
-index de3f10e4e77c5f051182274a923576d3e380b54e..e52c885d4dcbcac102d7cb1e7c68e72732f52697 100644
---- a/src/wizard/pages/discoverpage.cpp
-+++ b/src/wizard/pages/discoverpage.cpp
-@@ -26,6 +26,7 @@
- #include
- #include
- #include
-+#include
-
- #include
- #include
-@@ -36,7 +37,9 @@
-
- using namespace BlueDevil;
-
--DiscoverPage::DiscoverPage(BlueWizard* parent): QWizardPage(parent), m_wizard(parent)
-+DiscoverPage::DiscoverPage(BlueWizard *parent)
-+ : QWizardPage(parent)
-+ , m_wizard(parent)
- {
- setTitle(i18n("Select a device"));
- setupUi(this);
-@@ -46,12 +49,7 @@ DiscoverPage::DiscoverPage(BlueWizard* parent): QWizardPage(parent), m_wizard(pa
- workingPainter->setWidget(working);
- workingPainter->start();
-
-- connect(deviceList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this,
-- SLOT(itemSelected(QListWidgetItem*)));
--}
--
--DiscoverPage::~DiscoverPage()
--{
-+ connect(deviceList, &QListWidget::currentItemChanged, this, &DiscoverPage::itemSelected);
- }
-
- void DiscoverPage::initializePage()
-@@ -64,19 +62,22 @@ void DiscoverPage::initializePage()
- list << QWizard::CancelButton;
- m_wizard->setButtonLayout(list);
-
-- connect(Manager::self()->usableAdapter(), SIGNAL(unpairedDeviceFound(Device*)), this,
-- SLOT(deviceFound(Device*)));
-- connect(manualPin, SIGNAL(toggled(bool)), pinText, SLOT(setEnabled(bool)));
-- connect(manualPin, SIGNAL(toggled(bool)), this, SIGNAL(completeChanged()));
-- connect(pinText, SIGNAL(textChanged(QString)), m_wizard, SLOT(setPin(QString)));
-- connect(pinText, SIGNAL(textChanged(QString)), this, SIGNAL(completeChanged()));
-+ QRegExp rx(QStringLiteral("[0-9]{0,9}"));
-+ QRegExpValidator *validator = new QRegExpValidator(rx);
-+ pinText->setValidator(validator);
-+
-+ connect(Manager::self()->usableAdapter(), &Adapter::unpairedDeviceFound, this, &DiscoverPage::deviceFound);
-+ connect(manualPin, &QCheckBox::toggled, pinText, &QLineEdit::setEnabled);
-+ connect(manualPin, &QCheckBox::toggled, this, &DiscoverPage::completeChanged);
-+ connect(pinText, &QLineEdit::textChanged, m_wizard, &BlueWizard::setPin);
-+ connect(pinText, &QLineEdit::textChanged, this, &DiscoverPage::completeChanged);
-
- QMetaObject::invokeMethod(this, "startScan", Qt::QueuedConnection);
- }
-
- bool DiscoverPage::isComplete() const
- {
-- if (m_wizard->deviceAddress().isEmpty()) {
-+ if (m_wizard->deviceAddress().isEmpty() || !m_wizard->device()) {
- return false;
- }
- if (manualPin->isChecked() && pinText->text().isEmpty()) {
-@@ -106,7 +107,7 @@ void DiscoverPage::stopScan()
- }
- }
-
--void DiscoverPage::deviceFound(Device* device)
-+void DiscoverPage::deviceFound(Device *device)
- {
- QString address = device->address();
- QString name = device->name();
-@@ -136,14 +137,14 @@ void DiscoverPage::deviceFound(Device* device)
- m_itemRelation[address]->setIcon(QIcon::fromTheme(icon));
- m_itemRelation[address]->setData(Qt::UserRole + 1, origName);
-
-- //If the device was selected but it didn't had a name, select it again
-+ // If the device was selected but it didn't had a name, select it again
- if (deviceList->currentItem() == m_itemRelation[address]) {
- itemSelected(m_itemRelation[address]);
- }
- return;
- }
-
-- connect(device, SIGNAL(propertyChanged(QString,QVariant)), SLOT(devicePropertyChanged()));
-+ connect(device, &Device::propertyChanged, this, &DiscoverPage::devicePropertyChanged);
-
- QListWidgetItem *item = new QListWidgetItem(QIcon::fromTheme(icon), name, deviceList);
-
-@@ -156,20 +157,20 @@ void DiscoverPage::deviceFound(Device* device)
- deviceList->setCurrentItem(m_itemRelation[address]);
- }
-
-- //If the device has been preselected via arguments, select it
-+ // If the device has been preselected via arguments, select it
- if (m_wizard->preselectedAddress() == address.toLower()) {
- deviceList->setCurrentItem(m_itemRelation[address]);
- }
- }
-
--void DiscoverPage::itemSelected(QListWidgetItem* item)
-+void DiscoverPage::itemSelected(QListWidgetItem *item)
- {
- bool origName = item->data(Qt::UserRole+1).toBool();
- if (origName) {
- QString address = item->data(Qt::UserRole).toString();
-- m_wizard->setDeviceAddress(address.toUtf8());
-+ m_wizard->setDeviceAddress(address);
- } else {
-- m_wizard->setDeviceAddress(QByteArray());
-+ m_wizard->setDeviceAddress(QString());
- }
- emit completeChanged();
- }
-@@ -184,7 +185,6 @@ void DiscoverPage::devicePropertyChanged()
-
- int DiscoverPage::nextId() const
- {
-- qCDebug(WIZARD);
- if (!isComplete()) {
- return BlueWizard::Discover;
- }
-@@ -193,7 +193,7 @@ int DiscoverPage::nextId() const
- return BlueWizard::Discover;
- }
-
-- if (m_wizard->deviceAddress().isEmpty()) {
-+ if (m_wizard->deviceAddress().isEmpty() || !m_wizard->device()) {
- return BlueWizard::Discover;
- }
-
-@@ -223,20 +223,20 @@ int DiscoverPage::nextId() const
- qCDebug(WIZARD) << "From DB: " << m_wizard->agent()->isFromDatabase();
- qCDebug(WIZARD) << "PIN: " << m_wizard->agent()->pin();
-
-- //If keyboard no matter what, we go to the keyboard page.
-+ // If keyboard no matter what, we go to the keyboard page.
- if (classToType(device->deviceClass()) == BLUETOOTH_TYPE_KEYBOARD) {
- qCDebug(WIZARD) << "Keyboard Pairing";
- return BlueWizard::KeyboardPairing;
- }
-
-- //If pin == NULL means that not pairing is required
-+ // If pin == NULL means that not pairing is required
- if (!device->hasLegacyPairing() && !m_wizard->agent()->isFromDatabase()) {
- qCDebug(WIZARD) << "Secure Pairing";
- return BlueWizard::SSPPairing;
- }
-
- if (pin == QLatin1String("NULL")) {
-- qCDebug(WIZARD) << "NO Pairing";
-+ qCDebug(WIZARD) << "No Pairing";
- return BlueWizard::NoPairing;
- }
-
-diff --git a/src/wizard/pages/discoverpage.h b/src/wizard/pages/discoverpage.h
-index 86afbea7429e4f0a9da440c3ced66c415b24f9f2..5d310e7832dbd4dd1c0edecfdbd46d65d53e97a9 100644
---- a/src/wizard/pages/discoverpage.h
-+++ b/src/wizard/pages/discoverpage.h
-@@ -23,33 +23,34 @@
-
- class BlueWizard;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- }
--using namespace BlueDevil;
-
- class DiscoverPage : public QWizardPage, public Ui::Discover
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- DiscoverPage(BlueWizard* parent = 0);
-- virtual ~DiscoverPage();
-+ explicit DiscoverPage(BlueWizard *parent = 0);
-+
-+ void initializePage() Q_DECL_OVERRIDE;
-+ bool isComplete() const Q_DECL_OVERRIDE;
-+ int nextId() const Q_DECL_OVERRIDE;
-
-- virtual void initializePage();
-- virtual bool isComplete() const;
-- virtual int nextId() const;
- private Q_SLOTS:
- void startScan();
-- void deviceFound(Device * device);
-- void itemSelected(QListWidgetItem* item);
-+ void deviceFound(BlueDevil::Device *device);
-+ void itemSelected(QListWidgetItem *item);
- void devicePropertyChanged();
-+
- private:
- void stopScan();
-
- private:
- QMap m_itemRelation;
-- Device *m_selectedDevice;
-+ BlueDevil::Device *m_selectedDevice;
- BlueWizard *m_wizard;
- };
-
-diff --git a/src/wizard/pages/fail.cpp b/src/wizard/pages/fail.cpp
-index 422920f7f57d0b8e399796c70af0b52bf74c99f6..6abbeeb8b85b55aa8e90e69d196cb85f11ccb55b 100644
---- a/src/wizard/pages/fail.cpp
-+++ b/src/wizard/pages/fail.cpp
-@@ -35,20 +35,21 @@
-
- using namespace BlueDevil;
-
--FailPage::FailPage(BlueWizard* parent)
-+FailPage::FailPage(BlueWizard *parent)
- : QWizardPage(parent)
- , m_wizard(parent)
- {
- setupUi(this);
-+
-+ failIcon->setPixmap(QIcon::fromTheme(QStringLiteral("task-reject")).pixmap(48));
- }
-
- void FailPage::initializePage()
- {
-- qCDebug(WIZARD);
- QPushButton *reset = new QPushButton(this);
- KGuiItem::assign(reset, KStandardGuiItem::reset());
- reset->setText(i18nc("Button offered when the wizard fail. This button will restart the wizard", "Restart the wizard"));
-- connect(reset, SIGNAL(clicked(bool)), m_wizard, SLOT(restartWizard()));
-+ connect(reset, &QPushButton::clicked, m_wizard, &BlueWizard::restartWizard);
-
- m_wizard->setButton(QWizard::CustomButton3, reset);
- m_wizard->setButtonText(QWizard::CancelButton, i18nc("Button that closes the wizard", "Close"));
-@@ -60,11 +61,10 @@ void FailPage::initializePage()
-
- m_wizard->setButtonLayout(list);
-
-- QString deviceName = m_wizard->device()->name();
-+ const QString &deviceName = m_wizard->device()->name();
- if (deviceName.isEmpty()) {
- failLbl->setText(i18nc("This string is shown when the wizard fail","The setup of the device has failed"));
- } else {
- failLbl->setText(i18n("The setup of %1 has failed", deviceName));
- }
--
- }
-diff --git a/src/wizard/pages/fail.h b/src/wizard/pages/fail.h
-index 4b734c4e92121503b722e91d41ab9168bb6e0ad5..fa6378ffb2d82db5a1a0f9fd5f6ac7b534e9291b 100644
---- a/src/wizard/pages/fail.h
-+++ b/src/wizard/pages/fail.h
-@@ -29,7 +29,8 @@
- class BlueWizard;
- class KPixmapSequenceOverlayPainter;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- class Adapter;
- }
-@@ -38,12 +39,12 @@ using namespace BlueDevil;
-
- class FailPage : public QWizardPage, Ui::Fail
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- FailPage(BlueWizard* parent = 0);
-+ explicit FailPage(BlueWizard *parent = 0);
-
-- virtual void initializePage();
-+ void initializePage() Q_DECL_OVERRIDE;
-
- private:
- BlueWizard *m_wizard;
-diff --git a/src/wizard/pages/fail.ui b/src/wizard/pages/fail.ui
-index 0470e8f44b3ba7aa77791ec42c6c7b111dc75832..375a4fb344dc3572d3a87bd3a7fc57a3084f799a 100644
---- a/src/wizard/pages/fail.ui
-+++ b/src/wizard/pages/fail.ui
-@@ -30,6 +30,16 @@
-
-
- -
-+
-+
-+
-+ 48
-+ 48
-+
-+
-+
-+
-+ -
-
-
-
-diff --git a/src/wizard/pages/keyboardpairing.cpp b/src/wizard/pages/keyboardpairing.cpp
-index 67c7f276534cae5da0888e9160b675611bdc54d0..4b552ba05ad81f31a648572cce93f625c7ba6967 100644
---- a/src/wizard/pages/keyboardpairing.cpp
-+++ b/src/wizard/pages/keyboardpairing.cpp
-@@ -35,11 +35,12 @@
-
- using namespace BlueDevil;
-
--KeyboardPairingPage::KeyboardPairingPage(BlueWizard* parent)
-+KeyboardPairingPage::KeyboardPairingPage(BlueWizard *parent)
- : QWizardPage(parent)
- , m_wizard(parent)
- {
- setupUi(this);
-+
- m_working = new KPixmapSequenceOverlayPainter(this);
- m_working->setSequence(KIconLoader::global()->loadPixmapSequence(QStringLiteral("process-working"), 22));
- m_working->setWidget(pinNumber);
-@@ -53,13 +54,12 @@ KeyboardPairingPage::KeyboardPairingPage(BlueWizard* parent)
-
- void KeyboardPairingPage::initializePage()
- {
-- qCDebug(WIZARD);
- m_wizard->setButtonLayout(wizardButtonsLayout());
-
-- connect(m_wizard->agent(), SIGNAL(pinRequested(QString)), this, SLOT(pinRequested(QString)));
-+ connect(m_wizard->agent(), &WizardAgent::pinRequested, this, &KeyboardPairingPage::pinRequested);
-
- Device *device = m_wizard->device();
-- connect(device, SIGNAL(pairedChanged(bool)), this, SLOT(pairedChanged(bool)));
-+ connect(device, &Device::pairedChanged, this, &KeyboardPairingPage::pairedChanged);
- device->pair();
- }
-
-@@ -72,6 +72,7 @@ void KeyboardPairingPage::pinRequested(const QString& pin)
- void KeyboardPairingPage::pairedChanged(bool paired)
- {
- qCDebug(WIZARD) << paired;
-+
- m_wizard->next();
- }
-
-@@ -90,6 +91,5 @@ QList KeyboardPairingPage::wizardButtonsLayout() const
- QList list;
- list << QWizard::Stretch;
- list << QWizard::CancelButton;
--
- return list;
- }
-diff --git a/src/wizard/pages/keyboardpairing.h b/src/wizard/pages/keyboardpairing.h
-index 14818f605103fbf76cce2f402313d97e912c1526..871295b052ebb39a2f2488f93df0ebd748ac28bf 100644
---- a/src/wizard/pages/keyboardpairing.h
-+++ b/src/wizard/pages/keyboardpairing.h
-@@ -29,7 +29,8 @@
- class BlueWizard;
- class KPixmapSequenceOverlayPainter;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- class Adapter;
- }
-@@ -38,24 +39,24 @@ using namespace BlueDevil;
-
- class KeyboardPairingPage : public QWizardPage, Ui::KeyboardPairing
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- KeyboardPairingPage(BlueWizard* parent = 0);
-+ explicit KeyboardPairingPage(BlueWizard *parent = 0);
-
-- virtual void initializePage();
-- virtual bool validatePage();
-- virtual int nextId() const;
-+ void initializePage() Q_DECL_OVERRIDE;
-+ bool validatePage() Q_DECL_OVERRIDE;
-+ int nextId() const Q_DECL_OVERRIDE;
-
- public Q_SLOTS:
- void pinRequested(const QString &pin);
- void pairedChanged(bool paired);
-
- protected:
-- QList wizardButtonsLayout() const;
-+ QList wizardButtonsLayout() const;
-
- private:
-- BlueWizard *m_wizard;
-+ BlueWizard *m_wizard;
- KPixmapSequenceOverlayPainter *m_working;
- };
-
-diff --git a/src/wizard/pages/legacypairing.cpp b/src/wizard/pages/legacypairing.cpp
-index 898c6992baa7fdab3d95a6f0d301fc0f921ae515..943a107cef01b21ea0d489fde4abab0657d8094b 100644
---- a/src/wizard/pages/legacypairing.cpp
-+++ b/src/wizard/pages/legacypairing.cpp
-@@ -35,11 +35,12 @@
-
- using namespace BlueDevil;
-
--LegacyPairingPage::LegacyPairingPage(BlueWizard* parent)
-+LegacyPairingPage::LegacyPairingPage(BlueWizard *parent)
- : QWizardPage(parent)
- , m_wizard(parent)
- {
- setupUi(this);
-+
- m_working = new KPixmapSequenceOverlayPainter(this);
- m_working->setSequence(KIconLoader::global()->loadPixmapSequence(QStringLiteral("process-working"), 22));
- m_working->setWidget(pinNumber);
-@@ -53,17 +54,16 @@ LegacyPairingPage::LegacyPairingPage(BlueWizard* parent)
-
- void LegacyPairingPage::initializePage()
- {
-- qCDebug(WIZARD);
- m_wizard->setButtonLayout(wizardButtonsLayout());
-
- Device *device = m_wizard->device();
-- connect(m_wizard->agent(), SIGNAL(pinRequested(QString)), this, SLOT(pinRequested(QString)));
-- connect(device, SIGNAL(pairedChanged(bool)), this, SLOT(pairedChanged(bool)));
-+ connect(m_wizard->agent(), &WizardAgent::pinRequested, this, &LegacyPairingPage::pinRequested);
-+ connect(device, &Device::pairedChanged, this, &LegacyPairingPage::pairedChanged);
-
- device->pair();
- }
-
--void LegacyPairingPage::pinRequested(const QString& pin)
-+void LegacyPairingPage::pinRequested(const QString &pin)
- {
- m_working->stop();
- pinNumber->setText(pin);
-@@ -72,6 +72,7 @@ void LegacyPairingPage::pinRequested(const QString& pin)
- void LegacyPairingPage::pairedChanged(bool paired)
- {
- qCDebug(WIZARD) << paired;
-+
- m_wizard->next();
- }
-
-@@ -90,6 +91,5 @@ QList LegacyPairingPage::wizardButtonsLayout() const
- QList list;
- list << QWizard::Stretch;
- list << QWizard::CancelButton;
--
- return list;
- }
-diff --git a/src/wizard/pages/legacypairing.h b/src/wizard/pages/legacypairing.h
-index f9ec3d40b96954f411e0802ef15742a2d8dd6226..671743b6f63fb3e2484567b98534de489e1832e1 100644
---- a/src/wizard/pages/legacypairing.h
-+++ b/src/wizard/pages/legacypairing.h
-@@ -29,23 +29,22 @@
- class BlueWizard;
- class KPixmapSequenceOverlayPainter;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- class Adapter;
- }
-
--using namespace BlueDevil;
--
- class LegacyPairingPage : public QWizardPage, Ui::LegacyPairing
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- LegacyPairingPage(BlueWizard* parent = 0);
-+ explicit LegacyPairingPage(BlueWizard *parent = 0);
-
-- virtual void initializePage();
-- virtual bool validatePage();
-- virtual int nextId() const;
-+ void initializePage() Q_DECL_OVERRIDE;
-+ bool validatePage() Q_DECL_OVERRIDE;
-+ int nextId() const Q_DECL_OVERRIDE;
-
- public Q_SLOTS:
- void pinRequested(const QString &pin);
-@@ -55,7 +54,7 @@ protected:
- QList wizardButtonsLayout() const;
-
- private:
-- BlueWizard *m_wizard;
-+ BlueWizard *m_wizard;
- KPixmapSequenceOverlayPainter *m_working;
- };
-
-diff --git a/src/wizard/pages/legacypairingdatabase.cpp b/src/wizard/pages/legacypairingdatabase.cpp
-index a31657c5d19fe5276b7eb09597de4187c6de51bb..61dcde0d20afb95644ab25501433d22f8b18caea 100644
---- a/src/wizard/pages/legacypairingdatabase.cpp
-+++ b/src/wizard/pages/legacypairingdatabase.cpp
-@@ -36,11 +36,12 @@
-
- using namespace BlueDevil;
-
--LegacyPairingPageDatabase::LegacyPairingPageDatabase(BlueWizard* parent)
-+LegacyPairingPageDatabase::LegacyPairingPageDatabase(BlueWizard *parent)
- : QWizardPage(parent)
- , m_wizard(parent)
- {
- setupUi(this);
-+
- m_working = new KPixmapSequenceOverlayPainter(this);
- m_working->setSequence(KIconLoader::global()->loadPixmapSequence(QStringLiteral("process-working"), 22));
- m_working->setWidget(working);
-@@ -54,13 +55,14 @@ void LegacyPairingPageDatabase::initializePage()
- Device *device = m_wizard->device();
- connecting->setText(i18n("Connecting to %1...", device->name()));
-
-- connect(device, SIGNAL(pairedChanged(bool)), this, SLOT(pairedChanged(bool)));
-+ connect(device, &Device::pairedChanged, this, &LegacyPairingPageDatabase::pairedChanged);
- device->pair();
- }
-
- void LegacyPairingPageDatabase::pairedChanged(bool paired)
- {
- qCDebug(WIZARD) << paired;
-+
- m_wizard->next();
- }
-
-@@ -79,6 +81,5 @@ QList< QWizard::WizardButton > LegacyPairingPageDatabase::wizardButtonsLayout()
- QList list;
- list << QWizard::Stretch;
- list << QWizard::CancelButton;
--
- return list;
- }
-diff --git a/src/wizard/pages/legacypairingdatabase.h b/src/wizard/pages/legacypairingdatabase.h
-index 00c9d16e849bdfd073be64f3d11a518ebc81b795..637c82ee9fa86f0eef8f68dcefd9487a47e191de 100644
---- a/src/wizard/pages/legacypairingdatabase.h
-+++ b/src/wizard/pages/legacypairingdatabase.h
-@@ -29,32 +29,31 @@
- class BlueWizard;
- class KPixmapSequenceOverlayPainter;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- class Adapter;
- }
-
--using namespace BlueDevil;
--
- class LegacyPairingPageDatabase : public QWizardPage, Ui::NoPairing
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- LegacyPairingPageDatabase(BlueWizard* parent = 0);
-+ explicit LegacyPairingPageDatabase(BlueWizard *parent = 0);
-
-- virtual void initializePage();
-- virtual bool validatePage();
-- virtual int nextId() const;
-+ void initializePage() Q_DECL_OVERRIDE;
-+ bool validatePage() Q_DECL_OVERRIDE;
-+ int nextId() const Q_DECL_OVERRIDE;
-
- public Q_SLOTS:
- void pairedChanged(bool paired);
-
- protected:
-- QList wizardButtonsLayout() const;
-+ QList wizardButtonsLayout() const;
-
- private:
-- BlueWizard *m_wizard;
-+ BlueWizard *m_wizard;
- KPixmapSequenceOverlayPainter *m_working;
- };
-
-diff --git a/src/wizard/pages/nopairing.cpp b/src/wizard/pages/nopairing.cpp
-index c0410e13f6c606c3c1415d97ce3a9ff71a36bd31..d4f1e45ff726508349e4fa401e7c9c47f3ac2c20 100644
---- a/src/wizard/pages/nopairing.cpp
-+++ b/src/wizard/pages/nopairing.cpp
-@@ -35,59 +35,52 @@
-
- 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);
- m_working->setSequence(KIconLoader::global()->loadPixmapSequence(QStringLiteral("process-working"), 22));
- m_working->setWidget(working);
- m_working->start();
- }
-
-+int NoPairingPage::nextId() const
-+{
-+ if (m_success) {
-+ return BlueWizard::Success;
-+ }
-+ return BlueWizard::Fail;
-+}
-+
- void NoPairingPage::initializePage()
- {
-- qCDebug(WIZARD);
- m_wizard->setButtonLayout(wizardButtonsLayout());
-
- 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)));
-+ connect(m_wizard->device(), &Device::connectedChanged, this, &NoPairingPage::connectedChanged);
-+ connect(m_wizard->device(), &Device::trustedChanged, this, &NoPairingPage::connectedChanged);
-
- m_wizard->device()->connectDevice();
- m_wizard->device()->setTrusted(true);
--}
-
--void NoPairingPage::timeout()
--{
-- connectedChanged(true);
-+ QTimer::singleShot(10 * 1000, this, [this]() {
-+ connectedChanged(true);
-+ });
- }
-
- void NoPairingPage::connectedChanged(bool connected)
- {
-- qCDebug(WIZARD);
-+ qCDebug(WIZARD) << "Connect finished" << connected;
-
-- m_validPage = connected;
-- if (m_validPage) {
-- qCDebug(WIZARD) << "Done";
-- m_wizard->done(0);
-- }
--}
--
--bool NoPairingPage::validatePage()
--{
-- return m_validPage;
--}
--
--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, &BlueWizard::next);
- }
-
- QList NoPairingPage::wizardButtonsLayout() const
-@@ -95,6 +88,5 @@ QList NoPairingPage::wizardButtonsLayout() const
- QList list;
- list << QWizard::Stretch;
- list << QWizard::CancelButton;
--
- return list;
- }
-diff --git a/src/wizard/pages/nopairing.h b/src/wizard/pages/nopairing.h
-index 26f1441d27da9a6eb017b946a2bbc31d694b9967..1f0a8ab13f426eda0061126d79fcb2ecb5499511 100644
---- a/src/wizard/pages/nopairing.h
-+++ b/src/wizard/pages/nopairing.h
-@@ -30,34 +30,31 @@
- class BlueWizard;
- class KPixmapSequenceOverlayPainter;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- class Adapter;
- }
-
--using namespace BlueDevil;
--
- class NoPairingPage : public QWizardPage, Ui::NoPairing
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- NoPairingPage(BlueWizard* parent = 0);
-+ explicit NoPairingPage(BlueWizard *parent = 0);
-
-- virtual void initializePage();
-- virtual bool validatePage();
-- virtual int nextId() const;
-+ int nextId() const Q_DECL_OVERRIDE;
-+ void initializePage() Q_DECL_OVERRIDE;
-
- protected:
-- QList wizardButtonsLayout() const;
-+ QList 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;
- };
-
-diff --git a/src/wizard/pages/ssppairing.cpp b/src/wizard/pages/ssppairing.cpp
-index 963bdaa7be58df1b0ae2988312766537890055a8..d9e2b0a0c5185caead8f97fb0b76751ddb1557fe 100644
---- a/src/wizard/pages/ssppairing.cpp
-+++ b/src/wizard/pages/ssppairing.cpp
-@@ -38,12 +38,13 @@
-
- using namespace BlueDevil;
-
--SSPPairingPage::SSPPairingPage(BlueWizard* parent)
-+SSPPairingPage::SSPPairingPage(BlueWizard *parent)
- : QWizardPage(parent)
- , m_buttonClicked(QWizard::NoButton)
- , m_wizard(parent)
- {
- setupUi(this);
-+
- m_working = new KPixmapSequenceOverlayPainter(this);
- m_working->setSequence(KIconLoader::global()->loadPixmapSequence(QStringLiteral("process-working"), 22));
- m_working->setWidget(pinNumber);
-@@ -57,7 +58,6 @@ SSPPairingPage::SSPPairingPage(BlueWizard* parent)
-
- void SSPPairingPage::initializePage()
- {
-- qCDebug(WIZARD);
- QList list;
- list << QWizard::Stretch;
- list << QWizard::CancelButton;
-@@ -66,17 +66,17 @@ void SSPPairingPage::initializePage()
- Device *device = m_wizard->device();
- confirmLbl->setText(i18n("Connecting to %1...", device->name()));
-
-- connect(device, SIGNAL(pairedChanged(bool)), this, SLOT(pairedChanged(bool)));
-- connect(m_wizard->agent(), SIGNAL(confirmationRequested(quint32,QDBusMessage)),
-- this, SLOT(confirmationRequested(quint32,QDBusMessage)));
-- connect(m_wizard->agent(), SIGNAL(pinRequested(QString)), SLOT(pinRequested(QString)));
-+ connect(device, &Device::pairedChanged, this, &SSPPairingPage::pairedChanged);
-+ connect(m_wizard->agent(), &WizardAgent::confirmationRequested, this, &SSPPairingPage::confirmationRequested);
-+ connect(m_wizard->agent(), &WizardAgent::pinRequested, this, &SSPPairingPage::pinRequested);
-
- device->pair();
- }
-
--void SSPPairingPage::confirmationRequested(quint32 passkey, const QDBusMessage& msg)
-+void SSPPairingPage::confirmationRequested(quint32 passkey, const QDBusMessage &msg)
- {
- m_msg = msg;
-+ m_msg.setDelayedReply(true);
-
- QPushButton *matches = new QPushButton(this);
- KGuiItem::assign(matches, KStandardGuiItem::apply());
-@@ -86,8 +86,8 @@ void SSPPairingPage::confirmationRequested(quint32 passkey, const QDBusMessage&
- KGuiItem::assign(notMatch, KStandardGuiItem::cancel());
- notMatch->setText(i18n("Does not match"));
-
-- connect(matches, SIGNAL(clicked(bool)), this, SLOT(matchesClicked()));
-- connect(notMatch, SIGNAL(clicked(bool)), this, SLOT(notMatchClicked()));
-+ connect(matches, &QPushButton::clicked, this, &SSPPairingPage::matchesClicked);
-+ connect(notMatch, &QPushButton::clicked, this, &SSPPairingPage::notMatchClicked);
-
- wizard()->setButton(QWizard::CustomButton1, matches);
- wizard()->setButton(QWizard::CustomButton2, notMatch);
-@@ -101,7 +101,7 @@ void SSPPairingPage::confirmationRequested(quint32 passkey, const QDBusMessage&
-
- }
-
--void SSPPairingPage::pinRequested(const QString& pin)
-+void SSPPairingPage::pinRequested(const QString &pin)
- {
- m_working->stop();
- pinNumber->setText(pin);
-@@ -129,6 +129,7 @@ void SSPPairingPage::matchesClicked()
- void SSPPairingPage::notMatchClicked()
- {
- m_buttonClicked = QWizard::CustomButton2;
-+ QDBusConnection::systemBus().send(m_msg.createErrorReply(QStringLiteral("org.bluez.Rejected"), QStringLiteral("Rejected")));
-
- wizard()->next();
- }
-@@ -163,6 +164,5 @@ QList SSPPairingPage::wizardButtonsLayout() const
- list << QWizard::Stretch;
- list << QWizard::CustomButton2;
- list << QWizard::CustomButton1;
--
- return list;
- }
-diff --git a/src/wizard/pages/ssppairing.h b/src/wizard/pages/ssppairing.h
-index 9b7066d190397697abfcfe59dc6b1193240d1d04..1cd2aa8b398330b95f8204070d98ff52096414de 100644
---- a/src/wizard/pages/ssppairing.h
-+++ b/src/wizard/pages/ssppairing.h
-@@ -30,23 +30,22 @@
- class BlueWizard;
- class KPixmapSequenceOverlayPainter;
-
--namespace BlueDevil {
-+namespace BlueDevil
-+{
- class Device;
- class Adapter;
- }
-
--using namespace BlueDevil;
--
- class SSPPairingPage : public QWizardPage, Ui::SSPPairing
- {
--Q_OBJECT
-+ Q_OBJECT
-
- public:
-- SSPPairingPage(BlueWizard* parent = 0);
-+ explicit SSPPairingPage(BlueWizard *parent = 0);
-
-- virtual void initializePage();
-- virtual int nextId() const;
-- virtual bool validatePage();
-+ void initializePage() Q_DECL_OVERRIDE;
-+ int nextId() const Q_DECL_OVERRIDE;
-+ bool validatePage() Q_DECL_OVERRIDE;
-
- public Q_SLOTS:
- void confirmationRequested(quint32 passkey, const QDBusMessage &msg);
-@@ -56,12 +55,12 @@ public Q_SLOTS:
- void pinRequested(const QString &pin);
-
- protected:
-- QList wizardButtonsLayout() const;
-+ QList wizardButtonsLayout() const;
-
- private:
-- QDBusMessage m_msg;
-- QWizard::WizardButton m_buttonClicked;
-- BlueWizard *m_wizard;
-+ QDBusMessage m_msg;
-+ QWizard::WizardButton m_buttonClicked;
-+ BlueWizard *m_wizard;
- KPixmapSequenceOverlayPainter *m_working;
- };
-
-diff --git a/src/wizard/pages/success.cpp b/src/wizard/pages/success.cpp
-new file mode 100644
-index 0000000000000000000000000000000000000000..f49bb7fab2871d4807ce3396cddc3f053787736d
---- /dev/null
-+++ b/src/wizard/pages/success.cpp
-@@ -0,0 +1,66 @@
-+/*****************************************************************************
-+ * This file is part of the KDE project *
-+ * *
-+ * Copyright (C) 2010 Alejandro Fiestas Olivares *
-+ * Copyright (C) 2010-2011 UFO Coders *
-+ * Copyright (C) 2014 David Rosca *
-+ * *
-+ * This library is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU Library General Public *
-+ * License as published by the Free Software Foundation; either *
-+ * version 2 of the License, or (at your option) any later version. *
-+ * *
-+ * This library is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
-+ * Library General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU Library General Public License *
-+ * along with this library; see the file COPYING.LIB. If not, write to *
-+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
-+ * Boston, MA 02110-1301, USA. *
-+ *****************************************************************************/
-+
-+#include "success.h"
-+#include "bluewizard.h"
-+#include "debug_p.h"
-+
-+#include
-+
-+#include
-+
-+#include
-+
-+SuccessPage::SuccessPage(BlueWizard *parent)
-+ : QWizardPage(parent)
-+ , m_wizard(parent)
-+{
-+ setupUi(this);
-+
-+ successIcon->setPixmap(QIcon::fromTheme(QStringLiteral("task-complete")).pixmap(48));
-+}
-+
-+void SuccessPage::initializePage()
-+{
-+ qCDebug(WIZARD) << "Initialize Success Page";
-+
-+ QList list;
-+ list << QWizard::Stretch;
-+ list << QWizard::FinishButton;
-+
-+ m_wizard->setButtonLayout(list);
-+
-+ setFinalPage(true);
-+
-+ QString deviceName = m_wizard->device()->name();
-+ if (deviceName.isEmpty()) {
-+ successLbl->setText(i18nc("This string is shown when the wizard succeeds", "The setup of the device has succeeded"));
-+ } else {
-+ successLbl->setText(i18n("The setup of %1 has succeeded", deviceName));
-+ }
-+}
-+
-+int SuccessPage::nextId() const
-+{
-+ return -1;
-+}
-diff --git a/src/wizard/pages/success.h b/src/wizard/pages/success.h
-new file mode 100644
-index 0000000000000000000000000000000000000000..ba0d73c35301fcbb17643c36ce7ebe4576fba8f1
---- /dev/null
-+++ b/src/wizard/pages/success.h
-@@ -0,0 +1,46 @@
-+/*****************************************************************************
-+ * This file is part of the KDE project *
-+ * *
-+ * Copyright (C) 2010 Alejandro Fiestas Olivares *
-+ * Copyright (C) 2010-2011 UFO Coders *
-+ * Copyright (C) 2014 David Rosca *
-+ * *
-+ * This library is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU Library General Public *
-+ * License as published by the Free Software Foundation; either *
-+ * version 2 of the License, or (at your option) any later version. *
-+ * *
-+ * This library is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
-+ * Library General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU Library General Public License *
-+ * along with this library; see the file COPYING.LIB. If not, write to *
-+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
-+ * Boston, MA 02110-1301, USA. *
-+ *****************************************************************************/
-+
-+#ifndef SUCCESS_H
-+#define SUCCESS_H
-+
-+#include "ui_success.h"
-+#include
-+
-+class BlueWizard;
-+
-+class SuccessPage : public QWizardPage, Ui::Success
-+{
-+ Q_OBJECT
-+
-+public:
-+ explicit SuccessPage(BlueWizard *parent = 0);
-+
-+ void initializePage() Q_DECL_OVERRIDE;
-+ int nextId() const Q_DECL_OVERRIDE;
-+
-+private:
-+ BlueWizard *m_wizard;
-+};
-+
-+#endif // SUCCESS_H
-diff --git a/src/wizard/pages/success.ui b/src/wizard/pages/success.ui
-new file mode 100644
-index 0000000000000000000000000000000000000000..3630db34a89ecaf7c6a6405113458c068dbe61be
---- /dev/null
-+++ b/src/wizard/pages/success.ui
-@@ -0,0 +1,68 @@
-+
-+
-+ Success
-+
-+
-+
-+ 0
-+ 0
-+ 400
-+ 300
-+
-+
-+
-+
-
-+
-+
-
-+
-+
-+ Qt::Horizontal
-+
-+
-+ QSizePolicy::Fixed
-+
-+
-+
-+ 10
-+ 20
-+
-+
-+
-+
-+ -
-+
-+
-+
-+ 48
-+ 48
-+
-+
-+
-+
-+ -
-+
-+
-+
-+
-+
-+
-+
-+
-+ -
-+
-+
-+ Qt::Vertical
-+
-+
-+
-+ 20
-+ 40
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/wizard/pin-code-database.xml b/src/wizard/pin-code-database.xml
-index 8239aa98a94ec27185c6c93f9fa8022dfc590caa..5e99392705936a96f3974c0f68b047f728dcb2c5 100644
---- a/src/wizard/pin-code-database.xml
-+++ b/src/wizard/pin-code-database.xml
-@@ -52,9 +52,9 @@
-
-
-
--
--
--
-+
-+
-+
-
-