Branch: master

5f270bc2 2014-04-07 15:20:10 Timothy Pearson
Add missing TDEBackend::slotResult slot
This partially resolves Bug 1666
M tdeioslave/media/mediamanager/tdehardwarebackend.cpp
M tdeioslave/media/mediamanager/tdehardwarebackend.h
diff --git a/tdeioslave/media/mediamanager/tdehardwarebackend.cpp b/tdeioslave/media/mediamanager/tdehardwarebackend.cpp
index 1981ba3..3029cec 100644
--- a/tdeioslave/media/mediamanager/tdehardwarebackend.cpp
+++ b/tdeioslave/media/mediamanager/tdehardwarebackend.cpp
@@ -1406,6 +1406,47 @@
 	return TQString();
 }
 
+void TDEBackend::slotResult(TDEIO::Job *job)
+{
+	TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
+
+	struct mount_job_data *data = mount_jobs[job];
+	TQString& qerror = data->errorMessage;
+	const Medium* medium = data->medium;
+
+	if (job->error() == TDEIO::ERR_COULD_NOT_UNMOUNT) {
+		TQString proclist(listUsingProcesses(medium));
+
+		qerror = "<qt>";
+		qerror += "<p>" + 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()) + "</p>";
+		qerror += "<p>" + i18n("The following error was returned by umount command:");
+		qerror += "</p><pre>" + job->errorText() + "</pre>";
+
+		if (!proclist.isEmpty()) {
+			qerror += proclist;
+		}
+		qerror += "</qt>";
+	} else if (job->error()) {
+		qerror = job->errorText();
+	}
+
+	TDEStorageDevice * sdevice = hwdevices->findDiskByUID(medium->id());
+	if (sdevice) {
+		ResetProperties(sdevice);
+	}
+	mount_jobs.remove(job);
+
+	/* Job completed. Notify the caller */
+	data->error = job->error();
+	data->completed = true;
+	kapp->eventLoop()->exitLoop();
+}
+
 TQString TDEBackend::isInFstab(const Medium *medium)
 {
 	KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName);
diff --git a/tdeioslave/media/mediamanager/tdehardwarebackend.h b/tdeioslave/media/mediamanager/tdehardwarebackend.h
index 9b5407d..19f697a 100644
--- a/tdeioslave/media/mediamanager/tdehardwarebackend.h
+++ b/tdeioslave/media/mediamanager/tdehardwarebackend.h
@@ -142,6 +142,9 @@
 	TQString m_decryptionPassword;
 	bool m_decryptPasswordValid;
 
+private slots:
+	void slotResult(TDEIO::Job *job);
+
 /* TDE structures */
 private:
 	/**