summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kcontrol/hwmanager/devicepropsdlg.cpp24
-rw-r--r--kcontrol/hwmanager/hwdevicetray.cpp11
-rw-r--r--tdeioslave/media/mediamanager/tdehardwarebackend.cpp51
3 files changed, 44 insertions, 42 deletions
diff --git a/kcontrol/hwmanager/devicepropsdlg.cpp b/kcontrol/hwmanager/devicepropsdlg.cpp
index 885dc7a7a..c97c6dea2 100644
--- a/kcontrol/hwmanager/devicepropsdlg.cpp
+++ b/kcontrol/hwmanager/devicepropsdlg.cpp
@@ -879,21 +879,19 @@ void DevicePropertiesDialog::setHibernationMethod(int value) {
void DevicePropertiesDialog::mountDisk() {
TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device);
-
- // FIXME
- // This can only mount normal volumes
TQString qerror;
TQString diskLabel = sdevice->diskLabel();
if (diskLabel.isNull()) {
diskLabel = i18n("%1 Removable Device").arg(sdevice->deviceFriendlySize());
}
TDEStorageMountOptions mountOptions;
- TQString mountMessages;
- TQString mountedPath = sdevice->mountDevice(diskLabel, mountOptions, &mountMessages);
- if (mountedPath.isNull()) {
+ TDEStorageOpResult mountResult = sdevice->mountDevice(diskLabel, mountOptions);
+ TQString mountedPath = mountResult.contains("mountPath") ? mountResult["mountPath"].toString() : TQString::null;
+ if (mountedPath.isEmpty()) {
qerror = i18n("<qt>Unable to mount this device.<p>Potential reasons include:<br>Improper device and/or user privilege level<br>Corrupt data on storage device");
- if (!mountMessages.isNull()) {
- qerror.append(i18n("<p>Technical details:<br>").append(mountMessages));
+ TQString errStr = mountResult.contains("errStr") ? mountResult["errStr"].toString() : TQString::null;
+ if (!errStr.isEmpty()) {
+ qerror.append(i18n("<p>Technical details:<br>").append(errStr));
}
qerror.append("</qt>");
}
@@ -910,13 +908,13 @@ void DevicePropertiesDialog::unmountDisk() {
TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device);
TQString qerror;
- TQString unmountMessages;
- int unmountRetcode = 0;
- if (!sdevice->unmountDevice(&unmountMessages, &unmountRetcode)) {
+ TDEStorageOpResult unmountResult = sdevice->unmountDevice();
+ if (unmountResult["result"].toBool() == false) {
// Unmount failed!
qerror = "<qt>" + i18n("Unfortunately, the device could not be unmounted.");
- if (!unmountMessages.isNull()) {
- qerror.append(i18n("<p>Technical details:<br>").append(unmountMessages));
+ TQString errStr = unmountResult.contains("errStr") ? unmountResult["errStr"].toString() : TQString::null;
+ if (!errStr.isEmpty()) {
+ qerror.append(i18n("<p>Technical details:<br>").append(errStr));
}
qerror.append("</qt>");
}
diff --git a/kcontrol/hwmanager/hwdevicetray.cpp b/kcontrol/hwmanager/hwdevicetray.cpp
index b6ef8a6ad..ae3a1db23 100644
--- a/kcontrol/hwmanager/hwdevicetray.cpp
+++ b/kcontrol/hwmanager/hwdevicetray.cpp
@@ -300,11 +300,12 @@ void HwDeviceSystemTray::slotUnmountDevice(int parameter)
for (hwdevice = diskDeviceList.first(); hwdevice; hwdevice = diskDeviceList.next()) {
TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice);
if ((sdevice->diskUUID() == uuid) || (sdevice->systemPath() == uuid)) {
- if (sdevice->mountPath() != TQString::null) {
- int retcode;
- TQString errstr;
- if (!sdevice->unmountDevice(&errstr, &retcode)) {
- KMessageBox::error(0, i18n("<qt><b>Unable to eject device</b><p>Detailed error information:<br>%1 (code %2)</qt>").arg(errstr).arg(retcode), i18n("Eject Failed"));
+ if (!sdevice->mountPath().isEmpty()) {
+ TDEStorageOpResult unmountResult = sdevice->unmountDevice();
+ if (unmountResult["result"].toBool() == false) {
+ TQString errStr = unmountResult.contains("errStr") ? unmountResult["errStr"].toString() : TQString::null;
+ TQString retcodeStr = unmountResult.contains("retCode") ? unmountResult["retCode"].asString() : "not available";
+ KMessageBox::error(0, i18n("<qt><b>Unable to eject device</b><p>Detailed error information:<br>%1 (error code %2)</qt>").arg(errStr).arg(retcodeStr), i18n("Eject Failed"));
}
return;
}
diff --git a/tdeioslave/media/mediamanager/tdehardwarebackend.cpp b/tdeioslave/media/mediamanager/tdehardwarebackend.cpp
index 4746f48cc..034bf6709 100644
--- a/tdeioslave/media/mediamanager/tdehardwarebackend.cpp
+++ b/tdeioslave/media/mediamanager/tdehardwarebackend.cpp
@@ -1233,12 +1233,13 @@ TQString TDEBackend::mount(const Medium *medium)
if (!medium->isEncrypted()) {
// normal volume
- TQString mountMessages;
- TQString mountedPath = sdevice->mountDevice(diskLabel, valids, &mountMessages);
- if (mountedPath.isNull()) {
+ TDEStorageOpResult mountResult = sdevice->mountDevice(diskLabel, valids);
+ TQString mountedPath = mountResult.contains("mountPath") ? mountResult["mountPath"].toString() : TQString::null;
+ if (mountedPath.isEmpty()) {
qerror = i18n("<qt>Unable to mount this device.<p>Potential reasons include:<br>Improper device and/or user privilege level<br>Corrupt data on storage device");
- if (!mountMessages.isNull()) {
- qerror.append(i18n("<p>Technical details:<br>").append(mountMessages));
+ TQString errStr = mountResult.contains("errStr") ? mountResult["errStr"].toString() : TQString::null;
+ if (!errStr.isEmpty()) {
+ qerror.append(i18n("<p>Technical details:<br>").append(errStr));
}
qerror.append("</qt>");
}
@@ -1285,17 +1286,16 @@ TQString TDEBackend::mount(const Medium *medium)
}
// mount encrypted volume with password
- int mountRetcode;
- TQString mountMessages;
- TQString mountedPath = sdevice->mountEncryptedDevice(m_decryptionPassword, diskLabel, valids, &mountMessages, &mountRetcode);
- if (mountedPath.isNull()) {
- if (mountRetcode == 0) {
+ TDEStorageOpResult mountResult = sdevice->mountEncryptedDevice(m_decryptionPassword, diskLabel, valids);
+ TQString mountedPath = mountResult.contains("mountPath") ? mountResult["mountPath"].toString() : TQString::null;
+ if (mountedPath.isEmpty()) {
+ if (mountResult.contains("retCode") && mountResult["retCode"].toInt() == 0) {
// Mounting was successful
// Because the TDE hardware backend is event driven it might take a little while for the new unencrypted mapped device to show up
// Wait up to 30 seconds for it to appear...
for (int i=0;i<300;i++) {
mountedPath = sdevice->mountPath();
- if (!mountedPath.isNull()) {
+ if (!mountedPath.isEmpty()) {
break;
}
tqApp->processEvents(50);
@@ -1303,8 +1303,8 @@ TQString TDEBackend::mount(const Medium *medium)
}
}
}
- if (mountedPath.isNull()) {
- if (mountRetcode == 25600) {
+ if (mountedPath.isEmpty()) {
+ if (mountResult.contains("retCode") && mountResult["retCode"].toInt() == 25600) {
// Probable LUKS failure
// Retry
m_decryptDialog->setEnabled(true);
@@ -1312,8 +1312,9 @@ TQString TDEBackend::mount(const Medium *medium)
}
else {
qerror = i18n("<qt>Unable to mount this device.<p>Potential reasons include:<br>Improper device and/or user privilege level<br>Corrupt data on storage device<br>Incorrect encryption password");
- if (!mountMessages.isNull()) {
- qerror.append(i18n("<p>Technical details:<br>").append(mountMessages));
+ TQString errStr = mountResult.contains("errStr") ? mountResult["errStr"].toString() : TQString::null;
+ if (!errStr.isEmpty()) {
+ qerror.append(i18n("<p>Technical details:<br>").append(errStr));
}
qerror.append("</qt>");
continue_trying_to_decrypt = false;
@@ -1399,13 +1400,13 @@ TQString TDEBackend::unmount(const TQString &_udi)
TQString uid = sdevice->uniqueID();
TQString node = sdevice->deviceNode();
- TQString unmountMessages;
- int unmountRetcode = 0;
- if (!sdevice->unmountDevice(&unmountMessages, &unmountRetcode)) {
+ TDEStorageOpResult unmountResult = sdevice->unmountDevice();
+ if (unmountResult["result"].toBool() == false) {
// Unmount failed!
qerror = "<qt>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and currently mounted at <b>%4</b> could not be unmounted. ").arg("system:/media/" + medium->name(), medium->deviceNode(), medium->prettyLabel(), medium->prettyBaseURL().pathOrURL());
- if (!unmountMessages.isNull()) {
- qerror.append(i18n("<p>Technical details:<br>").append(unmountMessages));
+ TQString errStr = unmountResult.contains("errStr") ? unmountResult["errStr"].toString() : TQString::null;
+ if (!errStr.isEmpty()) {
+ qerror.append(i18n("<p>Technical details:<br>").append(errStr));
}
qerror.append("</qt>");
}
@@ -1413,17 +1414,19 @@ TQString TDEBackend::unmount(const TQString &_udi)
qerror = "";
}
- if (unmountRetcode == 1280) {
+ if (unmountResult.contains("retCode") && unmountResult["retCode"].toInt() == 1280) {
// Failed as BUSY
TQString processesUsingDev = listUsingProcesses(medium);
if (!processesUsingDev.isNull()) {
if (KMessageBox::warningYesNo(0, i18n("<qt>The device <b>%1</b> (%2) named <b>'%3'</b> and currently mounted at <b>%4</b> can not be unmounted at this time.<p>%5<p><b>Would you like to forcibly terminate these processes?</b><br><i>All unsaved data would be lost</i>").arg("system:/media/" + medium->name()).arg(medium->deviceNode()).arg(medium->prettyLabel()).arg(medium->prettyBaseURL().pathOrURL()).arg(processesUsingDev)) == KMessageBox::Yes) {
killUsingProcesses(medium);
- if (!sdevice->unmountDevice(&unmountMessages, &unmountRetcode)) {
+ unmountResult = sdevice->unmountDevice();
+ if (unmountResult["result"].toBool() == false) {
// Unmount failed!
qerror = "<qt>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and currently mounted at <b>%4</b> could not be unmounted. ").arg("system:/media/" + medium->name(), medium->deviceNode(), medium->prettyLabel(), medium->prettyBaseURL().pathOrURL());
- if (!unmountMessages.isNull()) {
- qerror.append(i18n("<p>Technical details:<br>").append(unmountMessages));
+ TQString errStr = unmountResult.contains("errStr") ? unmountResult["errStr"].toString() : TQString::null;
+ if (!errStr.isEmpty()) {
+ qerror.append(i18n("<p>Technical details:<br>").append(errStr));
}
qerror.append("</qt>");
}