[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdelibs/KDE/4.10] solid/solid/backends/udisks2: improve speed in icon() and description()
From: Lukáš Tinkl <lukas () kde ! org>
Date: 2012-10-26 0:16:02
Message-ID: 20121026001602.960D4A6078 () git ! kde ! org
[Download RAW message or body]
Git commit 7583c8758e1b43a74ba2bd976dcaa53df3212f55 by Lukáš Tinkl.
Committed on 26/10/2012 at 02:14.
Pushed by lukas into branch 'KDE/4.10'.
improve speed in icon() and description()
by shortcutting the non-interesting stuff like swap or loop devices
CCMAIL: dvratil@redhat.com
M +1 -0 solid/solid/backends/udisks2/udisks2.h
M +28 -10 solid/solid/backends/udisks2/udisksdevice.cpp
M +1 -0 solid/solid/backends/udisks2/udisksdevice.h
http://commits.kde.org/kdelibs/7583c8758e1b43a74ba2bd976dcaa53df3212f55
diff --git a/solid/solid/backends/udisks2/udisks2.h \
b/solid/solid/backends/udisks2/udisks2.h index 25a1dc0..8dda86a 100644
--- a/solid/solid/backends/udisks2/udisks2.h
+++ b/solid/solid/backends/udisks2/udisks2.h
@@ -53,6 +53,7 @@ Q_DECLARE_METATYPE(DBUSManagerStruct)
#define UD2_DBUS_INTERFACE_FILESYSTEM "org.freedesktop.UDisks2.Filesystem"
#define UD2_DBUS_INTERFACE_ENCRYPTED "org.freedesktop.UDisks2.Encrypted"
#define UD2_DBUS_INTERFACE_SWAP "org.freedesktop.UDisks2.Swapspace"
+#define UD2_DBUS_INTERFACE_LOOP "org.freedesktop.UDisks2.Loop"
/* errors */
#define UD2_ERROR_UNAUTHORIZED \
"org.freedesktop.PolicyKit.Error.NotAuthorized"
diff --git a/solid/solid/backends/udisks2/udisksdevice.cpp \
b/solid/solid/backends/udisks2/udisksdevice.cpp index 1f35df4..a3f780f 100644
--- a/solid/solid/backends/udisks2/udisksdevice.cpp
+++ b/solid/solid/backends/udisks2/udisksdevice.cpp
@@ -201,11 +201,15 @@ QStringList Device::emblems() const
QString Device::description() const
{
- const QString hintName = prop("HintName").toString();
+ const QString hintName = property("HintName").toString(); // non-cached
if (!hintName.isEmpty())
return hintName;
- if (queryDeviceInterface(Solid::DeviceInterface::StorageDrive))
+ if (isLoop())
+ return QObject::tr("Loop Device");
+ else if (isSwap())
+ return QObject::tr("Swap Space");
+ else if (queryDeviceInterface(Solid::DeviceInterface::StorageDrive))
return storageDescription();
else if (queryDeviceInterface(Solid::DeviceInterface::StorageVolume))
return volumeDescription();
@@ -218,7 +222,7 @@ QString Device::storageDescription() const
QString description;
const UDisks2::StorageDrive storageDrive(const_cast<Device*>(this));
Solid::StorageDrive::DriveType drive_type = storageDrive.driveType();
- bool drive_is_hotpluggable = storageDrive.isHotpluggable();
+ const bool drive_is_hotpluggable = storageDrive.isHotpluggable();
if (drive_type == Solid::StorageDrive::CdromDrive)
{
@@ -290,7 +294,7 @@ QString Device::storageDescription() const
return description;
}
- bool drive_is_removable = storageDrive.isRemovable();
+ const bool drive_is_removable = storageDrive.isRemovable();
if (drive_type == Solid::StorageDrive::HardDisk && !drive_is_removable)
{
@@ -523,19 +527,23 @@ QString Device::volumeDescription() const
QString Device::icon() const
{
- QString iconName = prop( "HintIconName" ).toString();
+ QString iconName = property( "HintIconName" ).toString(); // non-cached
if ( !iconName.isEmpty() )
{
return iconName;
}
+ else if (isLoop() || isSwap())
+ {
+ return "drive-harddisk";
+ }
else if (isDrive()) {
const bool isRemovable = prop("Removable").toBool();
const QString conn = prop("ConnectionBus").toString();
if (isOpticalDrive())
return "drive-optical";
- else if (isRemovable && !isOpticalDisc()) {
+ else if (isRemovable && !prop("Optical").toBool()) {
if (conn == "usb")
return "drive-removable-media-usb";
else
@@ -543,14 +551,18 @@ QString Device::icon() const
}
}
else if (isBlock()) {
- Device drive(drivePath());
+ const QString drv = drivePath();
+ if (drv.isEmpty() || drv == "/")
+ return "drive-harddisk"; // stuff like loop devices or swap which \
don't have the Drive prop set +
+ Device drive(drv);
// handle media
const QString media = drive.prop("Media").toString();
if ( !media.isEmpty() )
{
- if ( isOpticalDisc() ) // optical stuff
+ if ( drive.prop("Optical").toBool() ) // optical stuff
{
bool isWritable = drive.prop("OpticalBlank").toBool();
@@ -689,11 +701,12 @@ bool Device::propertyExists(const QString &key) const
QVariantMap Device::allProperties() const
{
+ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, \
DBUS_INTERFACE_PROPS, "GetAll"); +
Q_FOREACH (const QString & iface, m_interfaces) {
if (iface.startsWith("org.freedesktop.DBus"))
continue;
- QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, \
DBUS_INTERFACE_PROPS, "GetAll");
- call << iface;
+ call.setArguments(QVariantList() << iface);
QDBusPendingReply<QVariantMap> reply = \
QDBusConnection::systemBus().asyncCall(call); reply.waitForFinished();
@@ -903,6 +916,11 @@ bool Device::isSwap() const
return hasInterface(UD2_DBUS_INTERFACE_SWAP);
}
+bool Device::isLoop() const
+{
+ return hasInterface(UD2_DBUS_INTERFACE_LOOP);
+}
+
QString Device::drivePath() const
{
return prop("Drive").value<QDBusObjectPath>().path();
diff --git a/solid/solid/backends/udisks2/udisksdevice.h \
b/solid/solid/backends/udisks2/udisksdevice.h index cf8e2f5..7e27634 100644
--- a/solid/solid/backends/udisks2/udisksdevice.h
+++ b/solid/solid/backends/udisks2/udisksdevice.h
@@ -79,6 +79,7 @@ public:
bool isEncryptedContainer() const;
bool isEncryptedCleartext() const;
bool isSwap() const;
+ bool isLoop() const;
QString drivePath() const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic