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

List:       kde-commits
Subject:    extragear/multimedia/amarok/src/portabledevices/kioslaves
From:       Jeff Mitchell <kde-dev () emailgoeshere ! com>
Date:       2007-07-23 21:31:56
Message-ID: 1185226316.599053.22647.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 691538 by mitchell:

Stub rename function, including non-working attempt at setting friendly name (due to \
KIO stupidity)


 M  +17 -2     mtp_backend/pmpkioslave_mtpbackend.cpp  
 M  +2 -0      mtp_backend/pmpkioslave_mtpbackend.h  
 M  +2 -0      pmpbackend.h  
 M  +0 -1      pmpdevice.cpp  
 M  +1 -0      pmpdevice.h  
 M  +51 -3     pmpkioslave.cpp  
 M  +1 -0      pmpkioslave.h  


--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/mtp_backend/pmpkioslave_mtpbackend.cpp \
#691537:691538 @@ -116,6 +116,14 @@
     return friendlyName;
 }
 
+void
+MTPBackend::setFriendlyName( const QString &name )
+{
+    kDebug() << "Setting MTPBackend friendly name" << endl;
+    if( LIBMTP_Set_Friendlyname( m_device, name.toUtf8() ) != 0 )
+        m_slave->warning( "Failed to set friendly name on the device!" );
+}
+
 QString
 MTPBackend::getModelName()
 {
@@ -152,11 +160,19 @@
             m_slave->listEntry( entry, false );
         }
         m_slave->listEntry( KIO::UDSEntry(), true );
-        emit m_slave->finished();
    }
 }
 
 void
+MTPBackend::rename( const KUrl &src, const KUrl &dest, bool overwrite )
+{
+    Q_UNUSED( src );
+    Q_UNUSED( dest );
+    Q_UNUSED( overwrite );
+    //make sure they're renaming playlists to playlists, tracks to tracks, etc...
+}
+
+void
 MTPBackend::stat( const KUrl &url )
 {
    QString path = getFilePath( url );
@@ -166,7 +182,6 @@
    entry[ KIO::UDS_FILE_TYPE ] = S_IFDIR;
    entry[ KIO::UDS_ACCESS ] = S_IRUSR | S_IRGRP | S_IROTH;
    m_slave->statEntry( entry );
-   emit m_slave->finished();
 }
 
 #include "pmpkioslave_mtpbackend.moc"
--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/mtp_backend/pmpkioslave_mtpbackend.h \
#691537:691538 @@ -37,12 +37,14 @@
         virtual ~MTPBackend();
         void initialize();
         QString getFriendlyName();
+        void setFriendlyName( const QString &name );
         QString getModelName();
 
     protected:
         void get( const KUrl &url );
         void listDir( const KUrl &url );
         void stat( const KUrl &url );
+        void rename( const KUrl &src, const KUrl &dest, bool overwrite );
 
     private:
         LIBMTP_mtpdevice_t *m_deviceList;
--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/pmpbackend.h \
#691537:691538 @@ -39,10 +39,12 @@
 
         virtual void setSolidDevice( const Solid::Device &device ) { m_solidDevice = \
device; }  virtual QString getFriendlyName() const { return QString(); }
+        virtual void setFriendlyName( const QString &name ) = 0;
         virtual QString getModelName() const { return QString(); }
         virtual void get( const KUrl &url ) = 0;
         virtual void listDir( const KUrl &url ) = 0;
         virtual void stat( const KUrl &url ) = 0;
+        virtual void rename( const KUrl &src, const KUrl &dest, bool overwrite ) = \
0;  
     protected:
         QString getFilePath( const KUrl &url ) const;
--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/pmpdevice.cpp \
#691537:691538 @@ -26,7 +26,6 @@
 void
 PMPDevice::initialize()
 {
-
     if( !m_device.isValid() )
     {
         m_slave->error( KIO::ERR_CANNOT_OPEN_FOR_READING,
--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/pmpdevice.h \
#691537:691538 @@ -25,6 +25,7 @@
 class PMPDevice
 {
     public:
+        PMPDevice() { m_slave = 0; m_device = Solid::Device(); }
         PMPDevice( PMPProtocol *slave, const Solid::Device &device ) { m_slave = \
slave; m_device = device; }  ~PMPDevice() { delete m_backend; }
 
--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/pmpkioslave.cpp \
#691537:691538 @@ -88,7 +88,10 @@
 PMPProtocol::get( const KUrl &url )
 {
     kDebug() << endl << endl << "Entering get with url = " << url << endl << endl;
-    getBackendForUrl( url )->get( url );
+    if( getBackendForUrl( url ) )
+        getBackendForUrl( url )->get( url );
+
+    emit finished();
     kDebug() << endl << endl << "Leaving get with url = " << url << endl << endl;
 }
 
@@ -143,12 +146,51 @@
         kDebug() << "Calling backend's listDir" << endl;
         kDebug() << "udiFromUrl( url ) = " << udiFromUrl( url ) << endl;
         kDebug() << "m_devices[udiFromUrl( url )] = " << m_devices[udiFromUrl( url \
                )] << endl;
-        getBackendForUrl( url )->listDir( url );
+        if( getBackendForUrl( url ) )
+            getBackendForUrl( url )->listDir( url );
     }
+
+    emit finished();
     kDebug() << endl << endl << "Leaving listDir with url = " << url << endl << \
endl;  }
 
 void
+PMPProtocol::rename( const KUrl &src, const KUrl &dest, bool overwrite )
+{
+    QString srcPath = src.path( KUrl::RemoveTrailingSlash );
+    QString destPath = dest.path( KUrl::RemoveTrailingSlash );
+    while( srcPath[0] == '/' )
+        srcPath.remove( 0, 1 );
+    while( destPath[0] == '/' )
+        destPath.remove( 0, 1 );
+    //Check to see if they're trying to set a friendly name
+    //i.e. only top-level paths
+    kDebug() << endl << "srcPath = " << srcPath << endl << "destPath = " << destPath \
<< endl; +    if( srcPath.indexOf( '/' ) == -1 && destPath.indexOf( '/' ) == -1 )
+    {
+        QString srcName = udiFromUrl( src );
+        QString dstName = udiFromUrl( dest );
+        if( m_devices.contains( dstName ) )
+            warning( "Destination name cannot be the same as a Solid UDI!" );
+        else if ( getBackendForUrl( src ) )
+            getBackendForUrl( src )->setFriendlyName( destPath );
+        emit finished();
+        return;
+    }
+    if( udiFromUrl( src ) != udiFromUrl( dest ) )
+    {
+        //this shouldn't ever happen...
+        warning( "Could not rename file, files cannot be renamed across devices!" );
+        emit finished();
+        return;
+    }
+    if( getBackendForUrl( src ) )
+        getBackendForUrl( src )->rename( src, dest, overwrite ); 
+
+    emit finished();
+}
+
+void
 PMPProtocol::stat( const KUrl &url )
 {
     kDebug() << endl << endl << "Entering stat with url = " << url << endl << endl;
@@ -160,9 +202,12 @@
         entry[ KIO::UDS_ACCESS ] = S_IRUSR | S_IRGRP | S_IROTH;
         statEntry( entry );
         emit finished();
+        return;
     }
-    else
+    else if( getBackendForUrl( url ) )
         getBackendForUrl( url )->stat( url );
+
+    emit finished();
     kDebug() << endl << endl << "Leaving stat with url = " << url << endl << endl;
 }
 
@@ -229,7 +274,10 @@
 {
     kDebug() << "udiFromUrl = " << udiFromUrl( url ) << endl;
     if( !m_devices.contains( udiFromUrl( url ) ) )
+    {
         error( KIO::ERR_CANNOT_OPEN_FOR_READING, "portable media player : Invalid \
URL (backend doesn't exist)" ); +        return 0;
+    }
     return m_devices[udiFromUrl( url )]->backend();
 }
 
--- trunk/extragear/multimedia/amarok/src/portabledevices/kioslaves/pmpkioslave.h \
#691537:691538 @@ -49,6 +49,7 @@
 
         void get( const KUrl &url );
         void listDir( const KUrl &url );
+        void rename( const KUrl &src, const KUrl &dest, bool overwrite );
         void stat( const KUrl &url );
 
     private:


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

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