Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:EKrava
kdebase3
kdebase-trident-udisks2-better-volume-descripti...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdebase-trident-udisks2-better-volume-descriptions.patch of Package kdebase3
From 492dbc40159c91a263f29ad77c94054b2d40bb25 Mon Sep 17 00:00:00 2001 From: Serghei Amelian <serghei.amelian@gmail.com> Date: Fri, 1 Jun 2012 19:53:31 +0300 Subject: [PATCH] [kioslave/media] better description for non-labeled volumes on udisks2 backend --- kioslave/media/mediamanager/udisks2backend.cpp | 39 +++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/kioslave/media/mediamanager/udisks2backend.cpp b/kioslave/media/mediamanager/udisks2backend.cpp index e2e84a1..b66bea4 100644 --- a/kioslave/media/mediamanager/udisks2backend.cpp +++ b/kioslave/media/mediamanager/udisks2backend.cpp @@ -48,6 +48,7 @@ class Property { bool toBool() const; int toInt() const; + Q_INT64 toInt64() const; QString toString() const; QStringList toStringList() const; QDBusObjectPath toObjectPath() const; @@ -99,6 +100,7 @@ class Object : public QDBusProxy { QString m_device; QString m_label; QString m_fsType; + Q_INT64 m_size; // filesystem interface bool m_filesystem; @@ -149,6 +151,19 @@ inline QString qDBusByteListToString(const QDBusData &data) } +QString qHumanReadableSize(Q_INT64 size) +{ + const char *units[] = { "B", "KiB", "MiB", "GiB", "TiB", "PiB" }; + int mod = 1024; + + int i; + for(i = 0; size > mod && i < 5; i++) + size /= mod; + + return QString("%1%2").arg(size).arg(units[i]); +} + + /***** class Property ******************************/ @@ -173,6 +188,14 @@ int Property::toInt() const } +Q_INT64 Property::toInt64() const +{ + if(QDBusData::UInt64 == m_data.type()) + return m_data.toUInt64(); + return m_data.toInt64(); +} + + QString Property::toString() const { if(QDBusData::List == m_data.type()) @@ -285,6 +308,7 @@ Medium *Object::createMountableMedium() Q_ASSERT(drive); QString name = (m_label.isEmpty() ? QString(m_device).section('/', -1, -1) : m_label); + QString label = m_label; QString mimeType; QString iconName; @@ -297,16 +321,22 @@ Medium *Object::createMountableMedium() mimeType = "media/dvd"; else mimeType = "media/cdrom"; + if(label.isEmpty()) + label = i18n("Optical Media"); } // removable media else if(drive->m_removable) { mimeType = "media/removable"; + if(label.isEmpty()) + label = i18n("Removable Media"); } // other media else { mimeType = "media/hdd"; + if(label.isEmpty()) + label = i18n("Hard Disk"); } if("thumb" == drive->m_media) @@ -331,8 +361,11 @@ Medium *Object::createMountableMedium() if(!iconName.isEmpty()) iconName += (m_mounted ? "_mount" : "_unmount"); + if(m_label.isEmpty()) + label = QString("%1 %2 (%3)").arg(qHumanReadableSize(m_size)).arg(label).arg(name); + Medium *medium = new Medium(path(), name); - medium->setLabel(name); + medium->setLabel(label); medium->mountableState(m_device, m_mountPoint, m_fsType, m_mounted); medium->setMimeType(mimeType); medium->setIconName(iconName); @@ -435,6 +468,10 @@ void Object::propertiesChanged(const QString &interface, const QDBusDataMap<QStr } else if("IdType" == propertyName) m_fsType = propertyValue.toString(); + else if("Size" == propertyName) { + m_size = propertyValue.toInt64(); + mediumNeedUpdate = true; + } } // properties of filesystem -- 1.7.10
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor