diff --git a/src/solid/devices/backends/fstab/fstabdevice.h b/src/solid/devices/backends/fstab/fstabdevice.h --- a/src/solid/devices/backends/fstab/fstabdevice.h +++ b/src/solid/devices/backends/fstab/fstabdevice.h @@ -40,6 +40,8 @@ QStringList emblems() const override; + QString displayName() const; + QString description() const override; bool queryDeviceInterface(const Solid::DeviceInterface::Type &type) const override; @@ -59,6 +61,7 @@ QString m_device; QString m_product; QString m_vendor; + QString m_displayName; QString m_description; QString m_iconName; QPointer m_storageAccess; diff --git a/src/solid/devices/backends/fstab/fstabdevice.cpp b/src/solid/devices/backends/fstab/fstabdevice.cpp --- a/src/solid/devices/backends/fstab/fstabdevice.cpp +++ b/src/solid/devices/backends/fstab/fstabdevice.cpp @@ -53,20 +53,28 @@ for (const QString &option : gvfsOptions) { if (option.startsWith(QLatin1String("x-gvfs-name="))) { QStringRef encoded = option.midRef(12); - m_description = QUrl::fromPercentEncoding(encoded.toLatin1()); + m_displayName = QUrl::fromPercentEncoding(encoded.toLatin1()); } else if (option.startsWith(QLatin1String("x-gvfs-icon="))) { QStringRef encoded = option.midRef(12); m_iconName = QUrl::fromPercentEncoding(encoded.toLatin1()); } } - if (m_description.isEmpty()) { - if (m_storageType == StorageType::NetworkShare) { - m_description = QCoreApplication::translate("", "%1 on %2", - "%1 is sharename, %2 is servername").arg(m_product, m_vendor); + if (m_storageType == StorageType::NetworkShare) { + m_description = QCoreApplication::translate("", "%1 on %2", + "%1 is sharename, %2 is servername").arg(m_product, m_vendor); + } else { + m_description = QCoreApplication::translate("", "%1 (%2)", + "%1 is mountpoint, %2 is fs type").arg(m_product, m_vendor); + } + + if (m_displayName.isEmpty()) { + const QStringList currentMountPoints = FstabHandling::currentMountPoints(m_device); + if (currentMountPoints.isEmpty()) { + const QStringList mountPoints = FstabHandling::mountPoints(m_device); + m_displayName = mountPoints.isEmpty() ? m_description : mountPoints.first(); } else { - m_description = QCoreApplication::translate("", "%1 (%2)", - "%1 is mountpoint, %2 is fs type").arg(m_product, m_vendor); + m_displayName = currentMountPoints.first(); } } @@ -134,6 +142,11 @@ return res; } +QString FstabDevice::displayName() const +{ + return m_displayName; +} + QString FstabDevice::description() const { return m_description; diff --git a/src/solid/devices/frontend/device.h b/src/solid/devices/frontend/device.h --- a/src/solid/devices/frontend/device.h +++ b/src/solid/devices/frontend/device.h @@ -172,6 +172,15 @@ */ QStringList emblems() const; + /** + * Retrieves the display Name to use for this device. + * Same as description when not defined. + * + * @return the display Name + * @since 5.71 + */ + QString displayName() const; + /** * Retrieves the description of device. * diff --git a/src/solid/devices/frontend/device.cpp b/src/solid/devices/frontend/device.cpp --- a/src/solid/devices/frontend/device.cpp +++ b/src/solid/devices/frontend/device.cpp @@ -107,6 +107,11 @@ return_SOLID_CALL(Ifaces::Device *, d->backendObject(), QStringList(), emblems()); } +QString Solid::Device::displayName() const +{ + return_SOLID_CALL(Ifaces::Device *, d->backendObject(), QString(), displayName()); +} + QString Solid::Device::description() const { return_SOLID_CALL(Ifaces::Device *, d->backendObject(), QString(), description()); diff --git a/src/solid/devices/ifaces/device.h b/src/solid/devices/ifaces/device.h --- a/src/solid/devices/ifaces/device.h +++ b/src/solid/devices/ifaces/device.h @@ -89,6 +89,15 @@ */ virtual QStringList emblems() const = 0; + /** + * Retrieves the display name to use for this device. + * Same as description when not defined. + * + * @return the display name + * @since 5.71 + */ + QString displayName() const; + /** * Retrieves the description of device. * diff --git a/src/solid/devices/ifaces/device.cpp b/src/solid/devices/ifaces/device.cpp --- a/src/solid/devices/ifaces/device.cpp +++ b/src/solid/devices/ifaces/device.cpp @@ -68,3 +68,8 @@ return QString("/org/kde/solid/Device_") + QString::fromLatin1(encodedUdi); } +QString Solid::Ifaces::Device::displayName() const +{ + return description(); +} +