[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 132281] Media mounting no longer works without HAL
From:       Stephan Kulow <coolo () kde ! org>
Date:       2006-09-23 13:35:53
Message-ID: 20060923133553.10894.qmail () ktown ! kde ! org
[Download RAW message or body]

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
         
http://bugs.kde.org/show_bug.cgi?id=132281         
coolo kde org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From coolo kde org  2006-09-23 15:35 -------
SVN commit 587626 by coolo:

adding a mount function to the fstab backend that can 
be used without hal
BUG: 132281


 M  +23 -0     fstabbackend.cpp  
 M  +4 -0      fstabbackend.h  
 M  +11 -4     mediamanager.cpp  
 M  +2 -0      mediamanager.h  


--- branches/KDE/3.5/kdebase/kioslave/media/mediamanager/fstabbackend.cpp #587625:587626
 @ -37,6 +37,9  @
 #endif
 
 #include <klocale.h>
+#include <kio/job.h>
+#include <kio/netaccess.h>
+#include <kdebug.h>
 #include <kdirwatch.h>
 #include <kurl.h>
 #include <kmountpoint.h>
 @ -94,6 +97,26  @
         KDirWatch::self()->removeFile(MTAB);
 }
 
+QString FstabBackend::mount( const QString &_udi )
+{
+    const Medium* medium = m_mediaList.findById(_udi);
+    if (!medium)
+        return i18n("No such medium: %1").arg(_udi);
+    KIO::Job* job = KIO::mount( false, 0, medium->deviceNode(), medium->mountPoint());
+    KIO::NetAccess::synchronousRun( job, 0 );
+    return QString::null;
+}
+
+QString FstabBackend::unmount( const QString &_udi )
+{
+    const Medium* medium = m_mediaList.findById(_udi);
+    if (!medium)
+        return i18n("No such medium: %1").arg(_udi);
+    KIO::Job* job = KIO::unmount( medium->mountPoint(),  false);
+    KIO::NetAccess::synchronousRun( job, 0 );
+    return QString::null;
+}
+
 void FstabBackend::slotDirty(const QString &path)
 {
 	if (path==MTAB)
--- branches/KDE/3.5/kdebase/kioslave/media/mediamanager/fstabbackend.h #587625:587626
 @ -41,6 +41,10  @
                           const QString &fsType, bool mounted,
                           QString &mimeType, QString &iconName,
 	                  QString &label);
+
+	QString mount(const QString &id);
+	QString unmount(const QString &id);
+
 private slots:
 	void slotDirty(const QString &path);
 	void handleFstabChange(bool allowNotification = true);
--- branches/KDE/3.5/kdebase/kioslave/media/mediamanager/mediamanager.cpp #587625:587626
 @ -77,6 +77,7  @
 
     mp_removableBackend = 0L;
     m_halbackend = 0L;
+    m_fstabbackend = 0L;
 
 #ifdef COMPILE_HALBACKEND
     if ( MediaManagerSettings::self()->halBackendEnabled() )
 @ -85,7 +86,8  @
         if (m_halbackend->InitHal())
         {
             m_backends.append( m_halbackend );
-            m_backends.append( new FstabBackend(m_mediaList, true) );
+            m_fstabbackend = new FstabBackend(m_mediaList, true);
+            m_backends.append( m_fstabbackend );
             // No need to load something else...
             m_mediaList.blockSignals(false);
             return;
 @ -108,7 +110,8  @
     }
 #endif //COMPILE_LINUXCDPOLLING
 
-    m_backends.append( new FstabBackend(m_mediaList) );
+    m_fstabbackend = new FstabBackend(m_mediaList);
+    m_backends.append( m_fstabbackend );
     m_mediaList.blockSignals(false);
 }
 
 @ -206,7 +209,9  @
         return i18n("Feature only available with HAL");
     return m_halbackend->mount(name);
 #else
-    return i18n("Feature only available with HAL");
+    if ( !m_fstabbackend ) // lying :)
+        return i18n("Feature only available with HAL");
+    return m_fstabbackend->mount( name );
 #endif
 }
 
 @ -217,7 +222,9  @
         return i18n("Feature only available with HAL");
     return m_halbackend->unmount(name);
 #else
-    return i18n("Feature only available with HAL");
+    if ( !m_fstabbackend ) // lying :)
+        return i18n("Feature only available with HAL");
+    return m_fstabbackend->unmount( name );
 #endif
 }
 
--- branches/KDE/3.5/kdebase/kioslave/media/mediamanager/mediamanager.h #587625:587626
 @ -29,6 +29,7  @
 #include "mediadirnotify.h"
 
 class HALBackend;
+class FstabBackend;
 
 class MediaManager : public KDEDModule
 {
 @ -83,6 +84,7  @
 	RemovableBackend *mp_removableBackend;
 	HALBackend *m_halbackend;
 	MediaDirNotify m_dirNotify;
+	FstabBackend *m_fstabbackend;
 };
 
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic