diff --git a/src/backend/corebackend.h b/src/backend/corebackend.h index 0ddde2e..f0ee072 100644 --- a/src/backend/corebackend.h +++ b/src/backend/corebackend.h @@ -88,7 +88,7 @@ public: * @return a QList of pointers to Device instances. The caller is responsible * for deleting these objects. */ - virtual QList scanDevices() = 0; + virtual QList scanDevices(bool excludeReadOnly = false) = 0; /** * Scan a single device in the system. diff --git a/src/plugins/dummy/dummybackend.cpp b/src/plugins/dummy/dummybackend.cpp index c216343..30efe14 100644 --- a/src/plugins/dummy/dummybackend.cpp +++ b/src/plugins/dummy/dummybackend.cpp @@ -45,8 +45,9 @@ void DummyBackend::initFSSupport() { } -QList DummyBackend::scanDevices() +QList DummyBackend::scanDevices(bool excludeReadOnly) { + Q_UNUSED(excludeReadOnly) QList result; result.append(scanDevice(QStringLiteral("/dev/sda"))); diff --git a/src/plugins/dummy/dummybackend.h b/src/plugins/dummy/dummybackend.h index 772ed86..47776a1 100644 --- a/src/plugins/dummy/dummybackend.h +++ b/src/plugins/dummy/dummybackend.h @@ -44,11 +44,11 @@ private: public: virtual void initFSSupport(); - virtual QList scanDevices(); - virtual CoreBackendDevice* openDevice(const QString& device_node); - virtual CoreBackendDevice* openDeviceExclusive(const QString& device_node); - virtual bool closeDevice(CoreBackendDevice* core_device); - virtual Device* scanDevice(const QString& device_node); + virtual QList scanDevices(bool excludeReadOnly = false) override; + virtual CoreBackendDevice* openDevice(const QString& device_node) override; + virtual CoreBackendDevice* openDeviceExclusive(const QString& device_node) override; + virtual bool closeDevice(CoreBackendDevice* core_device) override; + virtual Device* scanDevice(const QString& device_node) override; }; #endif diff --git a/src/plugins/libparted/libpartedbackend.cpp b/src/plugins/libparted/libpartedbackend.cpp index d9e868b..618e892 100644 --- a/src/plugins/libparted/libpartedbackend.cpp +++ b/src/plugins/libparted/libpartedbackend.cpp @@ -407,7 +407,7 @@ Device* LibPartedBackend::scanDevice(const QString& device_node) return d; } -QList LibPartedBackend::scanDevices() +QList LibPartedBackend::scanDevices(bool excludeReadOnly) { QList result; @@ -421,6 +421,12 @@ QList LibPartedBackend::scanDevices() break; if (pedDevice->type == PED_DEVICE_DM) continue; + if (excludeReadOnly && ( + pedDevice->type == PED_DEVICE_LOOP || + pedDevice->type == PED_DEVICE_UNKNOWN || + pedDevice->read_only)) + continue; + path.push_back(QString::fromUtf8(pedDevice->path)); ++totalDevices; } diff --git a/src/plugins/libparted/libpartedbackend.h b/src/plugins/libparted/libpartedbackend.h index 28ed1f9..7f1e38a 100644 --- a/src/plugins/libparted/libpartedbackend.h +++ b/src/plugins/libparted/libpartedbackend.h @@ -60,11 +60,11 @@ private: public: virtual void initFSSupport(); - virtual CoreBackendDevice* openDevice(const QString& device_node); - virtual CoreBackendDevice* openDeviceExclusive(const QString& device_node); - virtual bool closeDevice(CoreBackendDevice* core_device); - virtual Device* scanDevice(const QString& device_node); - virtual QList scanDevices(); + virtual CoreBackendDevice* openDevice(const QString& device_node) override; + virtual CoreBackendDevice* openDeviceExclusive(const QString& device_node) override; + virtual bool closeDevice(CoreBackendDevice* core_device) override; + virtual Device* scanDevice(const QString& device_node) override; + virtual QList scanDevices(bool excludeReadOnly = false) override; static QString lastPartedExceptionMessage();