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

List:       kde-commits
Subject:    [Amarok]  UMS: Can now edit track details.
From:       Alejandro Wainzinger <aikawarazuni () gmail ! com>
Date:       2009-08-16 13:57:18
Message-ID: 200908161357.n7GDvIcX020518 () Wurst ! kollide ! net
[Download RAW message or body]

commit 7c64a1f4c707372ced436ca53848d29ee5b780c4
Author:     Alejandro Wainzinger <aikawarazuni@gmail.com>
AuthorDate: Sun Aug 16 15:55:51 2009 +0200
Commit:     Alejandro Wainzinger <aikawarazuni@gmail.com>
CommitDate: Sun Aug 16 15:55:51 2009 +0200

    UMS: Can now edit track details.

diff --git a/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp \
b/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp index \
                207bad1..ce1a282 100644
--- a/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp
+++ b/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp
@@ -1175,13 +1175,18 @@ MediaDeviceHandler::metadataChanged( TrackPtr track )
 
     setupWriteCapability();
 
-    if( !m_wc )
+    if( !m_wcb )
         return;
 
-    setBasicMediaDeviceTrackInfo( track, trackPtr );
+    if ( !isOrganizable() )
+    {
+        setBasicMediaDeviceTrackInfo( track, trackPtr );
+
+        m_wc->databaseChanged();
+    }
+
+    m_wcb->updateTrack( trackPtr );
 
-    m_wc->updateTrack( trackPtr );
-    m_wc->databaseChanged();
 }
 
 void
diff --git a/src/collection/umscollection/handler/UmsHandler.cpp \
b/src/collection/umscollection/handler/UmsHandler.cpp index c6b1787..91dff93 100644
--- a/src/collection/umscollection/handler/UmsHandler.cpp
+++ b/src/collection/umscollection/handler/UmsHandler.cpp
@@ -851,6 +851,34 @@ UmsHandler::prepareToDelete()
 }
 
 void
+UmsHandler::updateTrack( Meta::MediaDeviceTrackPtr &track )
+{
+    MetaFile::TrackPtr metafile = MetaFile::TrackPtr::staticCast( \
m_umstrackhash.value( track ) ); +    if( !metafile )
+        return;
+
+    // Data has changed, update the MetaFile::Track
+    metafile->setTitle( track->name() );
+    if ( track->album() )
+        metafile->setAlbum( track->album()->name() );
+    if ( track->artist() )
+        metafile->setArtist( track->artist()->name() );
+    if ( track->composer() )
+        metafile->setComposer( track->composer()->name() );
+    if ( track->genre() )
+        metafile->setGenre( track->genre()->name() );
+    if ( track->year() )
+        metafile->setYear( track->year()->name() );
+    metafile->setTrackNumber( track->trackNumber() );
+    metafile->setComment( track->comment() );
+    metafile->setDiscNumber( track->discNumber() );
+
+    metafile->setPlayCount( track->playCount() );
+    metafile->setLastPlayed( track->lastPlayed() );
+    metafile->setRating( track->rating() );
+}
+
+void
 UmsHandler::endTrackRemove()
 {
     // TODO: remove empty directories of deleted tracks
diff --git a/src/collection/umscollection/handler/UmsHandler.h \
b/src/collection/umscollection/handler/UmsHandler.h index 0b926b6..dd122e0 100644
--- a/src/collection/umscollection/handler/UmsHandler.h
+++ b/src/collection/umscollection/handler/UmsHandler.h
@@ -136,6 +136,8 @@ class UmsHandler : public Meta::MediaDeviceHandler
         virtual void prepareToCopy();
         virtual void prepareToDelete();
 
+        virtual void updateTrack( Meta::MediaDeviceTrackPtr &track );
+
         virtual void endTrackRemove();
 #if 0
 
@@ -228,7 +230,7 @@ class UmsHandler : public Meta::MediaDeviceHandler
 
         QMap<KUrl, Meta::TrackPtr> m_trackscopying; // associates source url to \
                track of source url
         QMap<Meta::TrackPtr, KUrl> m_trackdesturl; // keeps track of destination url \
                for new tracks, mapped from source track
-	QMap<Meta::TrackPtr, Meta::MediaDeviceTrackPtr> m_srctodest;
+        QMap<Meta::TrackPtr, Meta::MediaDeviceTrackPtr> m_srctodest;
         QMap<KUrl, Meta::TrackPtr> m_tracksdeleting; // associates source url to \
track of source url being deleted  
         /* Ums Connection */
diff --git a/src/collection/umscollection/handler/capabilities/UmsWriteCapability.cpp \
b/src/collection/umscollection/handler/capabilities/UmsWriteCapability.cpp index \
                1c82f06..f2636d1 100644
--- a/src/collection/umscollection/handler/capabilities/UmsWriteCapability.cpp
+++ b/src/collection/umscollection/handler/capabilities/UmsWriteCapability.cpp
@@ -68,6 +68,12 @@ UmsWriteCapability::prepareToDelete()
 }
 
 void
+UmsWriteCapability::updateTrack( Meta::MediaDeviceTrackPtr &track )
+{
+    m_handler->updateTrack( track );
+}
+
+void
 UmsWriteCapability::endTrackRemove()
 {
     m_handler->endTrackRemove();
diff --git a/src/collection/umscollection/handler/capabilities/UmsWriteCapability.h \
b/src/collection/umscollection/handler/capabilities/UmsWriteCapability.h index \
                bf6f881..dd1ca58 100644
--- a/src/collection/umscollection/handler/capabilities/UmsWriteCapability.h
+++ b/src/collection/umscollection/handler/capabilities/UmsWriteCapability.h
@@ -45,6 +45,8 @@ class UmsWriteCapability : public WriteCapabilityBase
     virtual void prepareToCopy();
     virtual void prepareToDelete();
 
+    virtual void updateTrack( Meta::MediaDeviceTrackPtr &track );
+
     virtual void endTrackRemove();
 
     private:
diff --git a/src/meta/file/File.h b/src/meta/file/File.h
index 688727c..61a0b87 100644
--- a/src/meta/file/File.h
+++ b/src/meta/file/File.h
@@ -21,6 +21,10 @@
 
 namespace MetaFile
 {
+    class Track;
+
+    typedef KSharedPtr<Track> TrackPtr;
+
     class AMAROK_EXPORT Track : public Meta::Track
     {
         public:


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

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