From 3073e66bb36dbda96faecdcc1a2326ee41288fdd Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Thu, 16 Jan 2014 12:14:05 +0100 Subject: [PATCH] Daemon devices() can now filter by visible and/or paired visibleDevices() is not needed anymore and has been removed --- kded/daemon.cpp | 13 ++++--------- kded/daemon.h | 3 +-- libkdeconnect/devicesmodel.cpp | 20 +++++++------------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/kded/daemon.cpp b/kded/daemon.cpp index 31598c52b..b390ae883 100644 --- a/kded/daemon.cpp +++ b/kded/daemon.cpp @@ -123,22 +123,17 @@ void Daemon::forceOnNetworkChange() } } -QStringList Daemon::visibleDevices() +QStringList Daemon::devices(bool onlyReachable, bool onlyVisible) { QStringList ret; Q_FOREACH(Device* device, mDevices) { - if (device->isReachable()) { - ret.append(device->id()); - } + if (onlyReachable && !device->isReachable()) continue; + if (onlyVisible && !device->isPaired()) continue; + ret.append(device->id()); } return ret; } -QStringList Daemon::devices() -{ - return mDevices.keys(); -} - void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink* dl) { diff --git a/kded/daemon.h b/kded/daemon.h index b4b7594f6..2644dfa0b 100644 --- a/kded/daemon.h +++ b/kded/daemon.h @@ -52,8 +52,7 @@ public Q_SLOTS: Q_SCRIPTABLE void forceOnNetworkChange(); //Returns a list of ids. The respective devices can be manipulated using the dbus path: "/modules/kdeconnect/Devices/"+id - Q_SCRIPTABLE QStringList devices(); //All known devices - Q_SCRIPTABLE QStringList visibleDevices(); //Only visible devices + Q_SCRIPTABLE QStringList devices(bool onlyReachable = false, bool onlyVisible = false); Q_SIGNALS: Q_SCRIPTABLE void deviceAdded(const QString& id); diff --git a/libkdeconnect/devicesmodel.cpp b/libkdeconnect/devicesmodel.cpp index 0f717fcad..7b7a7495a 100644 --- a/libkdeconnect/devicesmodel.cpp +++ b/libkdeconnect/devicesmodel.cpp @@ -112,27 +112,21 @@ void DevicesModel::refreshDeviceList() return; } - QDBusPendingReply pendingDeviceIds = m_dbusInterface->devices(); + + bool onlyPaired = (m_displayFilter & StatusPaired); + bool onlyReachable = (m_displayFilter & StatusReachable); + + QDBusPendingReply pendingDeviceIds = m_dbusInterface->devices(onlyReachable, onlyPaired); pendingDeviceIds.waitForFinished(); if (pendingDeviceIds.isError()) return; + const QStringList& deviceIds = pendingDeviceIds.value(); - Q_FOREACH(const QString& id, deviceIds) { - - DeviceDbusInterface* deviceDbusInterface = new DeviceDbusInterface(id,this); - - bool onlyPaired = (m_displayFilter & StatusPaired); - if (onlyPaired && !deviceDbusInterface->isPaired()) continue; - bool onlyReachable = (m_displayFilter & StatusReachable); - if (onlyReachable && !deviceDbusInterface->isReachable()) continue; - int firstRow = m_deviceList.size(); int lastRow = firstRow; - beginInsertRows(QModelIndex(), firstRow, lastRow); - m_deviceList.append(deviceDbusInterface); + m_deviceList.append(new DeviceDbusInterface(id,this)); endInsertRows(); - } Q_EMIT dataChanged(index(0), index(m_deviceList.size()));