diff --git a/src/partitionmanager.cpp b/src/partitionmanager.cpp index 59bfb29..0566221 100644 --- a/src/partitionmanager.cpp +++ b/src/partitionmanager.cpp @@ -327,6 +327,16 @@ void PartitionManagerPrivate::format(const Partition &partition, const QString & } } +QString PartitionManagerPrivate::objectPath(const Partition &partition) const +{ + if (externalMedia.match(partition.deviceName()).hasMatch()) { + return m_udisksMonitor->instance()->objectPath(partition.deviceName()); + } else { + qCWarning(lcMemoryCardLog) << "Object path existing only for external memory cards:" << partition.devicePath(); + return QString(); + } +} + QStringList PartitionManagerPrivate::supportedFileSystems() const { // Query filesystems supported by this device diff --git a/src/partitionmanager_p.h b/src/partitionmanager_p.h index 5ab36f3..8b9d1d5 100644 --- a/src/partitionmanager_p.h +++ b/src/partitionmanager_p.h @@ -72,6 +72,8 @@ class PartitionManagerPrivate : public QObject, public QSharedData void unmount(const Partition &partition); void format(const Partition &partition, const QString &type, const QString &label, const QString &passphrase); + QString objectPath(const Partition &partition) const; + QStringList supportedFileSystems() const; signals: diff --git a/src/partitionmodel.cpp b/src/partitionmodel.cpp index 896b7cb..93ea81c 100644 --- a/src/partitionmodel.cpp +++ b/src/partitionmodel.cpp @@ -169,6 +169,17 @@ void PartitionModel::format(const QString &deviceName, const QString &type, cons } } +QString PartitionModel::objectPath(const QString &deviceName) const +{ + qCInfo(lcMemoryCardLog) << Q_FUNC_INFO << deviceName; + if (const Partition *partition = getPartition(deviceName)) { + return m_manager->objectPath(*partition); + } else { + qCWarning(lcMemoryCardLog) << "Unable to get object path for unknown device:" << deviceName; + return QString(); + } +} + void PartitionModel::update() { const int count = m_partitions.count(); diff --git a/src/partitionmodel.h b/src/partitionmodel.h index 1bdb277..125c78b 100644 --- a/src/partitionmodel.h +++ b/src/partitionmodel.h @@ -131,6 +131,8 @@ class SYSTEMSETTINGS_EXPORT PartitionModel : public QAbstractListModel Q_INVOKABLE void unmount(const QString &deviceName); Q_INVOKABLE void format(const QString &deviceName, const QString &type, const QString &label, const QString &passphrase = QString()); + Q_INVOKABLE QString objectPath(const QString &deviceName) const; + QHash roleNames() const; int rowCount(const QModelIndex &parent = QModelIndex()) const; diff --git a/src/udisks2monitor_p.h b/src/udisks2monitor_p.h index c8d7ce9..6b53f53 100644 --- a/src/udisks2monitor_p.h +++ b/src/udisks2monitor_p.h @@ -86,6 +86,8 @@ class Monitor : public QObject void format(const QString &deviceName, const QString &type, const QString &label, const QString &passphrase); + QString objectPath(const QString &deviceName) const; + signals: void status(const QString &deviceName, Partition::Status); void errorMessage(const QString &objectPath, const QString &errorName); @@ -115,8 +117,6 @@ private slots: void doFormat(const QString &deviceName, const QString &dbusObjectPath, const QString &type, const QVariantHash &arguments); void getBlockDevices(); - QString objectPath(const QString &deviceName) const; - private: static Monitor *sharedInstance;