Skip to content

Commit 6668fc3

Browse files
author
zccrs
committed
feat: add interfaces
* createBlockDeviceByDevicePath * createBlockPartitionByMountPoint * createBlockPartition Change-Id: Iab1cae2d46c2b56eac7b8039628dd9e5d8d53679
1 parent b801f78 commit 6668fc3

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

dfmdiskmanager.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,46 @@ DFMBlockDevice *DFMDiskManager::createBlockDevice(const QString &path, QObject *
306306
return new DFMBlockDevice(path, parent);
307307
}
308308

309+
DFMBlockDevice *DFMDiskManager::createBlockDeviceByDevicePath(const QByteArray &path, QObject *parent) const
310+
{
311+
for (const QString &block : blockDevices()) {
312+
DFMBlockDevice *device = new DFMBlockDevice(block, parent);
313+
314+
if (device->device() == path) {
315+
return device;
316+
}
317+
318+
device->deleteLater();
319+
}
320+
321+
return nullptr;
322+
}
323+
309324
DFMBlockPartition *DFMDiskManager::createBlockPartition(const QString &path, QObject *parent)
310325
{
311326
return new DFMBlockPartition(path, parent);
312327
}
313328

329+
DFMBlockPartition *DFMDiskManager::createBlockPartitionByMountPoint(const QByteArray &path, QObject *parent) const
330+
{
331+
for (const QString &block : blockDevices()) {
332+
DFMBlockPartition *device = new DFMBlockPartition(block, parent);
333+
334+
if (device->mountPoints().contains(path)) {
335+
return device;
336+
}
337+
338+
device->deleteLater();
339+
}
340+
341+
return nullptr;
342+
}
343+
344+
DFMBlockPartition *DFMDiskManager::createBlockPartition(const QStorageInfo &info, QObject *parent) const
345+
{
346+
return createBlockPartitionByMountPoint(info.rootPath().toLocal8Bit() + '\0', parent);
347+
}
348+
314349
DFMDiskDevice *DFMDiskManager::createDiskDevice(const QString &path, QObject *parent)
315350
{
316351
return new DFMDiskDevice(path, parent);

dfmdiskmanager.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
#include <QMap>
2626
#include <QDBusError>
2727

28+
QT_BEGIN_NAMESPACE
2829
class QDBusObjectPath;
30+
class QStorageInfo;
31+
QT_END_NAMESPACE
2932

3033
class DFMBlockDevice;
3134
class DFMBlockPartition;
@@ -49,7 +52,12 @@ class DFMDiskManager : public QObject
4952

5053
static QString objectPrintable(const QObject *object);
5154
static DFMBlockDevice *createBlockDevice(const QString &path, QObject *parent = nullptr);
55+
// device 路径以 '\0' 结尾
56+
DFMBlockDevice *createBlockDeviceByDevicePath(const QByteArray &path, QObject *parent = nullptr) const;
5257
static DFMBlockPartition *createBlockPartition(const QString &path, QObject *parent = nullptr);
58+
// 挂载点以 '\0' 结尾
59+
DFMBlockPartition *createBlockPartitionByMountPoint(const QByteArray &path, QObject *parent = nullptr) const;
60+
DFMBlockPartition *createBlockPartition(const QStorageInfo &info, QObject *parent) const;
5361
static DFMDiskDevice *createDiskDevice(const QString &path, QObject *parent = nullptr);
5462

5563
static QDBusError lastError();

0 commit comments

Comments
 (0)