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

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Alejandro Daniel Wainzinger <aikawarazuni () gmail ! com>
Date:       2008-07-19 19:00:14
Message-ID: 1216494014.740051.22483.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 834957 by awainzinger:

Add mtp device detection, fix an infinite signal/slot loop.


 M  +32 -2     MediaDeviceMonitor.cpp  
 M  +2 -1      MediaDeviceMonitor.h  


--- trunk/extragear/multimedia/amarok/src/MediaDeviceMonitor.cpp #834956:834957
@@ -29,6 +29,7 @@
 #include <solid/device.h>
 #include <solid/storageaccess.h>
 #include <solid/storagedrive.h>
+#include <solid/portablemediaplayer.h>
 
 MediaDeviceMonitor* MediaDeviceMonitor::s_instance = 0;
 
@@ -63,7 +64,7 @@
     connect(  MediaDeviceCache::instance(),  SIGNAL(  deviceAdded( const QString& ) ),
               SLOT(  deviceAdded( const QString& ) ) );
     connect(  MediaDeviceCache::instance(),  SIGNAL(  deviceRemoved( const QString& ) ),
-              SLOT(  deviceRemoved( const QString& ) ) );
+              SLOT(  slotDeviceRemoved( const QString& ) ) );
     connect(  MediaDeviceCache::instance(), SIGNAL( accessibilityChanged( bool, const QString & ) ),
               SLOT(  slotAccessibilityChanged( bool, const QString & ) ) );
 
@@ -96,6 +97,10 @@
         {
             emit ipodDetected( MediaDeviceCache::instance()->volumeMountPoint(udi), udi );
         }
+        if( isMtp( udi ) )
+        {
+            emit mtpDetected();
+        }
 
     }
 }
@@ -121,7 +126,7 @@
 }
 
 void
-MediaDeviceMonitor::deviceRemoved( const QString &udi )
+MediaDeviceMonitor::slotDeviceRemoved( const QString &udi )
 {
     DEBUG_BLOCK
 
@@ -174,3 +179,28 @@
 
 }
 
+bool
+MediaDeviceMonitor::isMtp( const QString &udi )
+{
+    DEBUG_BLOCK
+
+    Solid::Device device;
+
+    device = Solid::Device( udi );
+    if( !device.is<Solid::PortableMediaPlayer>() )
+        return false;
+
+    Solid::PortableMediaPlayer *pmp = device.as<Solid::PortableMediaPlayer>();
+    
+    foreach( QString protocol, pmp->supportedProtocols() )
+    {
+        if( protocol == "mtp" )
+        {
+            debug() << "MTP device detected!";
+            return true;
+        }
+    }
+
+    return false;
+}
+
--- trunk/extragear/multimedia/amarok/src/MediaDeviceMonitor.h #834956:834957
@@ -55,6 +55,7 @@
     void refreshDevices(); // check all connected devices
 
     signals:
+        void deviceRemoved( const QString &udi );
         void ipodDetected( const QString &mountPoint, const QString &udi );
         void mtpDetected();
 
@@ -65,7 +66,7 @@
 
 
         void deviceAdded( const QString &udi );
-        void deviceRemoved( const QString &udi );
+        void slotDeviceRemoved( const QString &udi );
         void slotAccessibilityChanged( bool accessible, const QString & udi );
 
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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