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

List:       kde-commits
Subject:    KDE/kdebase/kioslave/media
From:       Kévin Ottens <ervin () ipsquad ! net>
Date:       2005-07-14 15:20:20
Message-ID: 1121354420.295517.7578.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 434563 by ervin:

Add some settings to the mediamanager and the GUI counterpart in the KCM.
You can now turn off selectively the HAL backend if you dislike its behavior
and the CD polling backend which generate activity on the IDE bus, and might
fails burning on some hardware.

BUG:103082
BUG:103073



 M  +1 -1      configure.in.in  
 M  +14 -3     kcmodule/Makefile.am  
 M  +12 -1     kcmodule/main.cpp  
 M  +1 -0      kcmodule/main.h  
 A             kcmodule/managermodule.cpp   [License: LGPL]
 A             kcmodule/managermodule.h   [License: LGPL]
 A             kcmodule/managermoduleview.ui  
 M  +3 -1      libmediacommon/Makefile.am  
 A             libmediacommon/mediamanagersettings.kcfg  
 A             libmediacommon/mediamanagersettings.kcfgc  
 M  +45 -16    mediamanager/mediamanager.cpp  
 M  +4 -1      mediamanager/mediamanager.h  


--- trunk/KDE/kdebase/kioslave/media/configure.in.in #434562:434563
@@ -137,7 +137,7 @@
 
 ########### Check if media HAL backend sould be compiled
 
-AC_MSG_CHECKING(if the HAL backend for media:/ sould be compiled)
+AC_MSG_CHECKING(if the HAL backend for media:/ should be compiled)
 
 HALBACKEND=no
 if [test "x$hal" = "xFOUND"] && [test "x$dbus" = "xFOUND"] && [test "x$dbusqt" = "xFOUND"] ; then
--- trunk/KDE/kdebase/kioslave/media/kcmodule/Makefile.am #434562:434563
@@ -1,17 +1,28 @@
 INCLUDES = -I$(srcdir)/../libmediacommon $(all_includes)
 METASOURCES = AUTO
 
+CXXFLAGS=
+if include_media_linuxcdpolling
+CXXFLAGS+=-DCOMPILE_LINUXCDPOLLING
+endif
+if include_media_halbackend
+CXXFLAGS+=-DCOMPILE_HALBACKEND
+endif
+
 kde_module_LTLIBRARIES = kcm_media.la
 kcm_media_la_SOURCES = notifiermodule.cpp notifiermoduleview.ui \
                        serviceconfigdialog.cpp serviceview.ui \
-                       mimetypelistboxitem.cpp main.cpp
+                       mimetypelistboxitem.cpp \
+                       managermodule.cpp managermoduleview.ui \
+                       main.cpp
 
 kcm_media_la_LDFLAGS = -module -avoid-version $(all_libraries) -no-undefined
 kcm_media_la_LIBADD = ../libmediacommon/libmediacommon.la $(LIB_KDECORE) $(LIB_KDEUI) $(LIB_KIO)
 
+noinst_HEADERS = notifiermodule.h managermodule.h \
+                 serviceconfigdialog.h mimetypelistboxitem.h \
+                 main.h
 
-noinst_HEADERS = notifiermodule.h serviceconfigdialog.h mimetypelistboxitem.h main.h
-
 xdg_apps_DATA = media.desktop
 
 messages: rc.cpp
--- trunk/KDE/kdebase/kioslave/media/kcmodule/main.cpp #434562:434563
@@ -29,6 +29,7 @@
 #include <kgenericfactory.h>
 
 #include "notifiermodule.h"
+#include "managermodule.h"
 
 
 typedef KGenericFactory<MediaModule, QWidget> MediaFactory;
@@ -42,14 +43,21 @@
 	QTabWidget *tab = new QTabWidget( this );
 	
 	layout->addWidget( tab );
+
+
 	
 	m_notifierModule = new NotifierModule( this, "notifier" );
 	tab->addTab( m_notifierModule, i18n( "&Notifications" ) );
 	connect( m_notifierModule, SIGNAL( changed( bool ) ),
 	         this, SLOT( moduleChanged( bool ) ) );
 
+	m_managerModule = new ManagerModule( this, "manager" );
+	tab->addTab( m_managerModule, i18n( "&Advanced" ) );
+	connect( m_managerModule, SIGNAL( changed( bool ) ),
+	         this, SLOT( moduleChanged( bool ) ) );
 
-	
+
+
 	KAboutData * about = new KAboutData("kcmmedia",
 	                                    I18N_NOOP("Storage Media"),
 	                                    "0.6",
@@ -66,16 +74,19 @@
 void MediaModule::load()
 {
 	m_notifierModule->load();
+	m_managerModule->load();
 }
 
 void MediaModule::save()
 {
 	m_notifierModule->save();
+	m_managerModule->save();
 }
 
 void MediaModule::defaults()
 {
 	m_notifierModule->defaults();
+	m_managerModule->defaults();
 }
 
 void MediaModule::moduleChanged( bool state )
--- trunk/KDE/kdebase/kioslave/media/kcmodule/main.h #434562:434563
@@ -39,6 +39,7 @@
 	
 private:
 	KCModule *m_notifierModule;
+	KCModule *m_managerModule;
 };
 
 #endif
--- trunk/KDE/kdebase/kioslave/media/libmediacommon/Makefile.am #434562:434563
@@ -5,5 +5,7 @@
 libmediacommon_la_SOURCES = medium.cpp actionlistboxitem.cpp \
                             notifieraction.cpp notifierserviceaction.cpp \
                             notifiernothingaction.cpp notifieropenaction.cpp \
-                            notifiersettings.cpp
+                            notifiersettings.cpp mediamanagersettings.kcfgc
 
+kde_kcfg_DATA = mediamanagersettings.kcfg
+
--- trunk/KDE/kdebase/kioslave/media/mediamanager/mediamanager.cpp #434562:434563
@@ -27,6 +27,8 @@
 
 #include <kdirnotify_stub.h>
 
+#include "mediamanagersettings.h"
+
 #include "fstabbackend.h"
 
 #ifdef COMPILE_HALBACKEND
@@ -49,37 +51,58 @@
 	         SIGNAL(mediumStateChanged(const QString&, const QString&, bool)),
 	         SLOT(slotMediumChanged(const QString&, const QString&, bool)) );
 
-	m_backends.setAutoDelete(true);
 	QTimer::singleShot( 10, this, SLOT( loadBackends() ) );
 }
 
+MediaManager::~MediaManager()
+{
+	while ( !m_backends.isEmpty() )
+	{
+		BackendBase *b = m_backends.first();
+		m_backends.remove( b );
+		delete b;
+	}
+}
+
 void MediaManager::loadBackends()
 {
-	m_backends.clear();
+	while ( !m_backends.isEmpty() )
+	{
+		BackendBase *b = m_backends.first();
+		m_backends.remove( b );
+		delete b;
+	}
+
 	mp_removableBackend = 0L;
 
 #ifdef COMPILE_HALBACKEND
-	HALBackend* halBackend = new HALBackend(m_mediaList, this);
-	if (halBackend->InitHal())
-		m_backends.append( halBackend );
-	else
+	if ( MediaManagerSettings::self()->halBackendEnabled() )
 	{
-		delete halBackend;
-		mp_removableBackend = new RemovableBackend(m_mediaList);
-		m_backends.append( mp_removableBackend );
-#ifdef COMPILE_LINUXCDPOLLING
-		m_backends.append( new LinuxCDPolling(m_mediaList) );
-#endif //COMPILE_LINUXCDPOLLING
-		m_backends.append( new FstabBackend(m_mediaList) );
+		HALBackend* hal_backend = new HALBackend(m_mediaList, this);
+		if (hal_backend->InitHal())
+		{
+			m_backends.append( hal_backend );
+			// No need to load something else...
+			return;
+		}
+		else
+		{
+			delete hal_backend;
+		}
 	}
-#else //COMPILE_HALBACKEND
+#endif // COMPILE_HALBACKEND
+
 	mp_removableBackend = new RemovableBackend(m_mediaList);
 	m_backends.append( mp_removableBackend );
+	
 #ifdef COMPILE_LINUXCDPOLLING
-	m_backends.append( new LinuxCDPolling(m_mediaList) );
+	if ( MediaManagerSettings::self()->cdPollingEnabled() )
+	{
+		m_backends.append( new LinuxCDPolling(m_mediaList) );
+	}
 #endif //COMPILE_LINUXCDPOLLING
+
 	m_backends.append( new FstabBackend(m_mediaList) );
-#endif //COMPILE_HALBACKEND
 }
 
 
@@ -138,6 +161,12 @@
 	m_mediaList.setUserLabel(name, label);
 }
 
+ASYNC MediaManager::reloadBackends()
+{
+	MediaManagerSettings::self()->readConfig();
+	loadBackends();
+}
+
 bool MediaManager::removablePlug(const QString &devNode, const QString &label)
 {
 	if (mp_removableBackend)
--- trunk/KDE/kdebase/kioslave/media/mediamanager/mediamanager.h #434562:434563
@@ -35,6 +35,7 @@
 K_DCOP
 public:
 	MediaManager(const QCString &obj);
+	~MediaManager();
 
 k_dcop:
 	QStringList fullList();
@@ -42,6 +43,8 @@
 	QString nameForLabel(const QString &label);
 	ASYNC setUserLabel(const QString &name, const QString &label);
 
+	ASYNC reloadBackends();
+
 	// Removable media handling (for people not having HAL)
 	bool removablePlug(const QString &devNode, const QString &label);
 	bool removableUnplug(const QString &devNode);
@@ -62,7 +65,7 @@
 
 private:
 	MediaList m_mediaList;
-	QPtrList<BackendBase> m_backends;
+	QValueList<BackendBase*> m_backends;
 	RemovableBackend *mp_removableBackend;
 	MediaDirNotify m_dirNotify;
 };
[prev in list] [next in list] [prev in thread] [next in thread] 

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