diff --git a/src/partition.cpp b/src/partition.cpp index 8f8f289..83cb09f 100644 --- a/src/partition.cpp +++ b/src/partition.cpp @@ -121,6 +121,12 @@ QString Partition::filesystemType() const return d ? d->filesystemType : QString(); } +bool Partition::isSupportedFileSystemType() const +{ + + return d ? d->isSupportedFileSystemType : false; +} + qint64 Partition::bytesAvailable() const { return d ? d->bytesAvailable : 0; diff --git a/src/partition.h b/src/partition.h index 42850cd..9566c26 100644 --- a/src/partition.h +++ b/src/partition.h @@ -113,6 +113,7 @@ class SYSTEMSETTINGS_EXPORT Partition QString mountPath() const; QString filesystemType() const; + bool isSupportedFileSystemType() const; qint64 bytesAvailable() const; qint64 bytesTotal() const; diff --git a/src/partition_p.h b/src/partition_p.h index c8c1ec5..5e63acd 100644 --- a/src/partition_p.h +++ b/src/partition_p.h @@ -49,6 +49,7 @@ class PartitionPrivate : public QSharedData , readOnly(true) , canMount(false) , isCryptoDevice(false) + , isSupportedFileSystemType(false) , mountFailed(false) , deviceRoot(false) , valid(false) @@ -76,6 +77,7 @@ class PartitionPrivate : public QSharedData bool readOnly; bool canMount; bool isCryptoDevice; + bool isSupportedFileSystemType; bool mountFailed; bool deviceRoot; // If valid, only mount status and available bytes will be checked diff --git a/src/partitionmanager.cpp b/src/partitionmanager.cpp index 8ea7c61..59bfb29 100644 --- a/src/partitionmanager.cpp +++ b/src/partitionmanager.cpp @@ -244,6 +244,7 @@ void PartitionManagerPrivate::refresh(const Partitions &partitions, Partitions & partition->deviceName = deviceName; partition->deviceRoot = deviceRoot.match(deviceName).hasMatch(); partition->filesystemType = QString::fromUtf8(mountEntry.mnt_type); + partition->isSupportedFileSystemType = supportedFileSystems().contains(partition->filesystemType); partition->status = partition->activeState == QStringLiteral("deactivating") ? Partition::Unmounting : Partition::Mounted; diff --git a/src/partitionmodel.cpp b/src/partitionmodel.cpp index e148e1e..44af1f9 100644 --- a/src/partitionmodel.cpp +++ b/src/partitionmodel.cpp @@ -269,6 +269,7 @@ QHash PartitionModel::roleNames() const { BytesFreeRole, "bytesFree" }, { PartitionModelRole, "partitionModel" }, { IsCryptoDeviceRoles, "isCryptoDevice"}, + { IsSupportedFileSystemType, "isSupportedFileSystemType"}, }; return roleNames; @@ -317,6 +318,8 @@ QVariant PartitionModel::data(const QModelIndex &index, int role) const return QVariant::fromValue(static_cast(const_cast((this)))); case IsCryptoDeviceRoles: return partition.isCryptoDevice(); + case IsSupportedFileSystemType: + return partition.isSupportedFileSystemType(); default: return QVariant(); } diff --git a/src/partitionmodel.h b/src/partitionmodel.h index c1d006a..4a289aa 100644 --- a/src/partitionmodel.h +++ b/src/partitionmodel.h @@ -63,6 +63,7 @@ class SYSTEMSETTINGS_EXPORT PartitionModel : public QAbstractListModel BytesFreeRole, PartitionModelRole, IsCryptoDeviceRoles, + IsSupportedFileSystemType, }; // For Status role diff --git a/src/udisks2monitor.cpp b/src/udisks2monitor.cpp index 9799a2a..b2e9898 100644 --- a/src/udisks2monitor.cpp +++ b/src/udisks2monitor.cpp @@ -287,6 +287,7 @@ void UDisks2::Monitor::setPartitionProperties(QExplicitlySharedDataPointermountPath = blockDevice->mountPath(); partition->deviceLabel = label; partition->filesystemType = blockDevice->idType(); + partition->isSupportedFileSystemType = m_manager->supportedFileSystems().contains(partition->filesystemType); partition->readOnly = blockDevice->isReadOnly(); partition->canMount = blockDevice->isMountable() && m_manager->supportedFileSystems().contains(partition->filesystemType); partition->status = blockDevice->isEncrypted() ? Partition::Locked