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

List:       kde-commits
Subject:    extragear/multimedia/k3b
From:       Sebastian Trueg <sebastian () trueg ! de>
Date:       2005-07-01 13:29:46
Message-ID: 1120224586.357168.27802.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 430474 by trueg:

Fixed HAL integration (device are properly removed now)


 M  +17 -20    libk3bdevice/k3bhalconnection.cpp  
 M  +2 -0      libk3bdevice/k3bhalconnection.h  
 M  +1 -1      tests/hal-test.h  
 M  +3 -2      tests/hal-test.pro  


--- trunk/extragear/multimedia/k3b/libk3bdevice/k3bhalconnection.cpp #430473:430474
@@ -100,9 +100,10 @@
   s_contextMap[m_halContext] = this;
 
   // report all already detected devices
-  QStringList devs = devices();
-  for( QStringList::const_iterator it = devs.constBegin(); it != devs.constEnd(); ++it )
-    emit deviceAdded( *it );
+  int numDevices;
+  char** halDeviceList = libhal_get_all_devices( m_halContext, &numDevices, 0 );
+  for( int i = 0; i < numDevices; ++i )
+    addDevice( halDeviceList[i] );
 
   return true;
 }
@@ -133,17 +134,7 @@
 
 QStringList K3bDevice::HalConnection::devices() const
 {
-  QStringList devs;
-  if( m_halContext ) {
-    int numDevices;
-    char** halDeviceList = libhal_get_all_devices( m_halContext, &numDevices, 0 );
-    for( int i = 0; i < numDevices; ++i ) {
-      QString dev = getSystemDeviceForCdrom( halDeviceList[i] );
-      if( !dev.isEmpty() )
-	devs.append( dev );
-    }
-  }
-  return devs;
+  return QStringList( m_udiDeviceMap.values() );
 }
 
 
@@ -169,16 +160,22 @@
 void K3bDevice::HalConnection::addDevice( const char* udi )
 {
   QString s = getSystemDeviceForCdrom( udi );
-  if( !s.isEmpty() )
+  if( !s.isEmpty() ) {
+    //    kdDebug() << "Mapping udi " << udi << " to device " << s << endl;
+    m_udiDeviceMap[udi] = s;
     emit deviceAdded( s );
+  }
 }
 
 
 void K3bDevice::HalConnection::removeDevice( const char* udi )
 {
-  QString s = getSystemDeviceForCdrom( udi );
-  if( !s.isEmpty() )
-    emit deviceRemoved( s );
+  QMapIterator<QCString, QString> it = m_udiDeviceMap.find( udi );
+  if( it != m_udiDeviceMap.end() ) {
+    //    kdDebug() << "Unmapping udi " << udi << " from device " << it.data() << endl;
+    emit deviceRemoved( it.data() );
+    m_udiDeviceMap.erase( it );
+  }
 }
 
 
@@ -192,7 +189,7 @@
 // CALLBACKS
 void K3bDevice::HalConnection::halDeviceAdded( LibHalContext* ctx, const char* udi )
 {
-  //  kdDebug() << k_funcinfo << endl;
+  //  kdDebug() << "adding udi   " << udi << endl;
   HalConnection* con = s_contextMap[ctx];
   con->addDevice( udi );
 }
@@ -200,7 +197,7 @@
 
 void K3bDevice::HalConnection::halDeviceRemoved( LibHalContext* ctx, const char* udi )
 {
-  //  kdDebug() << k_funcinfo << endl;
+  //  kdDebug() << "removing udi " << udi << endl;
   HalConnection* con = s_contextMap[ctx];
   con->removeDevice( udi );
 }
--- trunk/extragear/multimedia/k3b/libk3bdevice/k3bhalconnection.h #430473:430474
@@ -85,6 +85,8 @@
       LibHalFunctions m_halFunctions;
 #endif
 
+      QMap<QCString, QString> m_udiDeviceMap;
+
       /**
        * \return the system device for cdrom devices and an empty string for all other devices.
        */
--- trunk/extragear/multimedia/k3b/tests/hal-test.h #430473:430474
@@ -1,4 +1,4 @@
-#include "../k3bhalconnection.h"
+#include "../libk3bdevice/k3bhalconnection.h"
 #include <qlabel.h>
 
 
--- trunk/extragear/multimedia/k3b/tests/hal-test.pro #430473:430474
@@ -1,8 +1,9 @@
+DEFINES = HAL_0_4
 LIBS    = -lhal -ldbus-qt-1 -L/usr/kde/3.4/lib -lkdecore
 INCLUDEPATH = /usr/include/dbus-1.0 /usr/kde/3.4/include ../libk3bdevice
 CONFIG  = qt debug
-SOURCES = hal-test.cpp ../k3bhalconnection.cpp
+SOURCES = hal-test.cpp ../libk3bdevice/k3bhalconnection.cpp
 HEADERS = hal-test.h
 TARGET = hal-test
 QMAKE_EXTRA_UNIX_TARGETS = k3bhalconnection.moc
-k3bhalconnection.moc.commands = moc -o k3bhalconnection.moc ../k3bhalconnection.h
+k3bhalconnection.moc.commands = moc -o k3bhalconnection.moc ../libk3bdevice/k3bhalconnection.h
[prev in list] [next in list] [prev in thread] [next in thread] 

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