SVN commit 960787 by cblauvelt: Fix some bugs in determining whether free space can be found on a device. M +13 -6 soliddeviceengine.cpp --- trunk/KDE/kdebase/workspace/plasma/dataengines/soliddevice/soliddeviceengine.cpp #960786:960787 @@ -153,12 +153,17 @@ devicetypes << I18N_NOOP("Storage Access"); setData(name, I18N_NOOP("Accessible"), storageaccess->isAccessible()); setData(name, I18N_NOOP("File Path"), storageaccess->filePath()); - QVariant freeDiskVar; - qlonglong freeDisk = freeDiskSpace(storageaccess->filePath()); - if ( freeDisk != -1 ) { - freeDiskVar.setValue( freeDisk ); + + if (storageaccess->isAccessible()) { + QVariant freeDiskVar; + qlonglong freeDisk = freeDiskSpace(storageaccess->filePath()); + if ( freeDisk != -1 ) { + freeDiskVar.setValue( freeDisk ); + } + if (!device.is()) { + setData(name, I18N_NOOP("Free Space"), freeDiskVar ); + } } - setData(name, I18N_NOOP("Free Space"), freeDiskVar ); signalmanager->mapDevice(storageaccess, device.udi()); } @@ -538,8 +543,10 @@ bool SolidDeviceEngine::updateFreeSpace(const QString &udi) { Solid::Device device = devicemap.value(udi); - if (!device.is()) { + if (!device.is() || device.is()) { return false; + } else if (!device.as()->isAccessible()) { + removeData(udi, I18N_NOOP("Free Space")); } Solid::StorageAccess *storageaccess = device.as();