tdehw lib: reworked code for eject operation to support return type TQStringVariantMap.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/113/head
Michele Calgaro 4 years ago
parent b44ff1c0a9
commit 07200a5475
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -327,28 +327,47 @@ bool TDEStorageDevice::lockDriveMedia(bool lock) {
}
}
bool TDEStorageDevice::ejectDrive() {
TQStringVariantMap TDEStorageDevice::ejectDrive() {
TQStringVariantMap result;
TQStringVariantMap ejectResult;
#ifdef WITH_UDISKS2
if (!(TDEGlobal::dirs()->findExe("udisksctl").isEmpty())) {
TQStringVariantMap ejectResult = udisks2EjectDrive(this);
ejectResult = udisks2EjectDrive(this);
if (ejectResult["result"].toBool()) {
return true;
// Update internal mount data
TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
TDEGlobal::hardwareDevices()->processModifiedMounts();
result["result"] = true;
return result;
}
else {
printf("[tdehwlib] Failed to eject drive '%s' via udisks2, falling back to alternate mechanism\n", deviceNode().ascii());
fflush(stdout);
// Update internal mount data
TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
TDEGlobal::hardwareDevices()->processModifiedMounts();
result["errStr"] = ejectResult["errStr"];
result["result"] = false;
return result;
}
}
#endif
#ifdef WITH_UDISKS
if (!(TDEGlobal::dirs()->findExe("udisks").isEmpty())) {
TQStringVariantMap ejectResult = udisksEjectDrive(this);
ejectResult = udisksEjectDrive(this);
if (ejectResult["result"].toBool()) {
return true;
// Update internal mount data
TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
TDEGlobal::hardwareDevices()->processModifiedMounts();
result["result"] = true;
return result;
}
else {
printf("[tdehwlib] Failed to eject drive '%s' via udisks, falling back to alternate mechanism\n", deviceNode().ascii());
fflush(stdout);
// Update internal mount data
TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
TDEGlobal::hardwareDevices()->processModifiedMounts();
result["errStr"] = ejectResult["errStr"];
result["result"] = false;
return result;
}
}
#endif
@ -363,14 +382,24 @@ bool TDEStorageDevice::ejectDrive() {
eject_output = ts.read();
int retcode = pclose(exepipe);
if (retcode == 0) {
return true;
// Update internal mount data
TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
TDEGlobal::hardwareDevices()->processModifiedMounts();
result["result"] = true;
return result;
}
else {
result["errStr"] = eject_output;
result["retCode"] = retcode;
}
}
printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
fflush(stdout);
}
return false;
// Update internal mount data
TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
TDEGlobal::hardwareDevices()->processModifiedMounts();
result["result"] = false;
return result;
}
bool TDEStorageDevice::ejectDriveMedia() {

@ -347,7 +347,7 @@ class TDECORE_EXPORT TDEStorageDevice : public TDEGenericDevice
*
* This method currently works on all removable storage devices
*/
bool ejectDrive();
TQStringVariantMap ejectDrive();
/**
* @param path Full path to arbitrary file or directory

Loading…
Cancel
Save