diff -Naur kdebase-3.5.8.orig/kioslave/media/mounthelper/kio_media_mounthelper.cpp kdebase-3.5.8/kioslave/media/mounthelper/kio_media_mounthelper.cpp --- kdebase-3.5.8.orig/kioslave/media/mounthelper/kio_media_mounthelper.cpp 2007-10-08 15:58:36.000000000 +0200 +++ kdebase-3.5.8/kioslave/media/mounthelper/kio_media_mounthelper.cpp 2007-11-20 14:02:02.000000000 +0100 @@ -2,6 +2,8 @@ Copyright (c) 2004 Kévin Ottens Parts of this file are Copyright 2003 Waldo Bastian + Small changes for Kubuntu by + Copyright 2007 Frode M. Døving This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -31,6 +33,7 @@ #include #include #include +#include #include #include "kio_media_mounthelper.h" @@ -62,6 +65,7 @@ MountHelper::MountHelper() : KApplication() { KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); + m_progress = new KProgressDialog(); m_errorStr = ""; @@ -114,6 +118,15 @@ */ if (medium.isMounted()) { + m_progress->setLabel(i18n("Unmounting, please wait")+".."); + m_progress->setAutoClose(true); + m_progress->setAllowCancel(false); + m_progress->progressBar()->setTextEnabled(false); + m_progress->progressBar()->setTotalSteps(10); + m_progress->show(); + QTimer *t = new QTimer(this); + connect(t, SIGNAL(timeout()), SLOT(progressAdvance())); + t->start(250, FALSE); DCOPRef mediamanager("kded", "mediamanager"); DCOPReply reply = mediamanager.call( "unmount", medium.id()); if (reply.isValid()) @@ -139,6 +152,12 @@ } } +void MountHelper::progressAdvance() +{ + if (m_progress->progressBar()->progress() < 9) + m_progress->progressBar()->advance(1); +} + void MountHelper::invokeEject(const QString &device, bool quiet) { KProcess *proc = new KProcess(this); @@ -159,7 +178,7 @@ * If eject failed, report the error stored in m_errorStr */ if (proc->normalExit() && proc->exitStatus() == 0) { - ::exit(0); + QTimer::singleShot(1000, this, SLOT(quit())); } else { if (m_errorStr.isEmpty()) { if (m_isCdrom) diff -Naur kdebase-3.5.8.orig/kioslave/media/mounthelper/kio_media_mounthelper.h kdebase-3.5.8/kioslave/media/mounthelper/kio_media_mounthelper.h --- kdebase-3.5.8.orig/kioslave/media/mounthelper/kio_media_mounthelper.h 2007-10-08 15:58:36.000000000 +0200 +++ kdebase-3.5.8/kioslave/media/mounthelper/kio_media_mounthelper.h 2007-11-20 14:02:02.000000000 +0100 @@ -2,6 +2,8 @@ Copyright (c) 2004 Kévin Ottens Parts of this file are Copyright 2003 Waldo Bastian + Small changes for Kubuntu by + Copyright 2007 Frode M. Døving This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -23,6 +25,7 @@ #define _KIO_MEDIA_MOUNTHELPER_H_ #include +#include #include #include @@ -39,9 +42,11 @@ void invokeEject(const QString &device, bool quiet=false); QString m_errorStr; QString m_device; + KProgressDialog *m_progress; bool m_isCdrom; private slots: + void progressAdvance(); void ejectFinished(KProcess* proc); void error(); };