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

List:       kde-commits
Subject:    extragear/multimedia/amarok
From:       Martin Aumüller <aumuell () reserv ! at>
Date:       2005-11-30 22:31:32
Message-ID: 1133389892.392823.24346.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 484472 by aumuell:

also compare track number when checking if track is already present on ipod
BUG: 117380


 M  +2 -0      ChangeLog  
 M  +18 -9     src/gpodmediadevice/gpodmediadevice.cpp  
 M  +1 -1      src/gpodmediadevice/gpodmediadevice.h  
 M  +8 -4      src/mediabrowser.cpp  
 M  +1 -1      src/mediabrowser.h  


--- trunk/extragear/multimedia/amarok/ChangeLog #484471:484472
@@ -59,6 +59,8 @@
       compatibility with various iPod models.
 
   BUGFIXES:
+    * Also take track number into account when comparing tags for checking
+      if a track is already present on iPod. (BR 117380)
     * "Show Fullsize" now works for ID3 embedded cover images. (BR 114517)
       (BACKPORT?)
     * Fix possible bug when saving unencoded podcasts to strange file systems.
--- trunk/extragear/multimedia/amarok/src/gpodmediadevice/gpodmediadevice.cpp \
#484471:484472 @@ -309,9 +309,10 @@
 MediaItem *
 GpodMediaDevice::trackExists( const MetaBundle& bundle )
 {
-    GpodMediaItem *item = getTitle( bundle.artist(),
+    GpodMediaItem *item = getTrack( bundle.artist(),
             bundle.album().isEmpty() ? i18n( "Unknown" ) : bundle.album(),
-            bundle.title());
+            bundle.title(),
+            bundle.track() );
 
     return item;
 }
@@ -1074,14 +1075,18 @@
 }
 
 GpodMediaItem *
-GpodMediaDevice::getTitle(const QString &artist, const QString &album, const QString \
&title) +GpodMediaDevice::getTrack(const QString &artist, const QString &album, const \
QString &title, int trackNumber)  {
     GpodMediaItem *item = getAlbum(artist, album);
     if(item)
     {
-        GpodMediaItem *track = dynamic_cast<GpodMediaItem *>(item->findItem(title));
-        if(track)
-            return track;
+        for( GpodMediaItem *track = dynamic_cast<GpodMediaItem \
*>(item->findItem(title)); +                track;
+                track = dynamic_cast<GpodMediaItem *>(item->findItem(title, track)) \
) +        {
+            if( trackNumber==-1 || track->bundle()->track() == trackNumber )
+                return track;
+        }
     }
 
     if(m_podcastItem)
@@ -1089,9 +1094,13 @@
         item = dynamic_cast<GpodMediaItem *>(m_podcastItem->findItem(album));
         if(item)
         {
-            GpodMediaItem *track = dynamic_cast<GpodMediaItem \
                *>(item->findItem(title));
-            if(track)
-                return track;
+            for( GpodMediaItem *track = dynamic_cast<GpodMediaItem \
*>(item->findItem(title)); +                    track;
+                    track = dynamic_cast<GpodMediaItem *>(item->findItem(title, \
track)) ) +            {
+                if( trackNumber==-1 || track->bundle()->track() == trackNumber )
+                    return track;
+            }
         }
     }
 
--- trunk/extragear/multimedia/amarok/src/gpodmediadevice/gpodmediadevice.h \
#484471:484472 @@ -89,7 +89,7 @@
 
         GpodMediaItem    *getArtist(const QString &artist);
         GpodMediaItem    *getAlbum(const QString &artist, const QString &album);
-        GpodMediaItem    *getTitle(const QString &artist, const QString &album, \
const QString &title); +        GpodMediaItem    *getTrack(const QString &artist, \
const QString &album, const QString &title, int trackNumber=-1);  
         bool              removeDBTrack(Itdb_Track *track);
 
--- trunk/extragear/multimedia/amarok/src/mediabrowser.cpp #484471:484472
@@ -462,11 +462,15 @@
 }
 
 MediaItem *
-MediaItem::findItem( const QString &key ) const
+MediaItem::findItem( const QString &key, const MediaItem *after ) const
 {
-    for(MediaItem *it = dynamic_cast<MediaItem *>(firstChild());
-            it;
-            it = dynamic_cast<MediaItem *>(it->nextSibling()))
+    MediaItem *it = 0;
+    if( after )
+        it = dynamic_cast<MediaItem *>( after->nextSibling() );
+    else
+        it = dynamic_cast<MediaItem *>( firstChild() );
+
+    for( ; it; it = dynamic_cast<MediaItem *>(it->nextSibling()))
     {
         if(key == it->text(0))
             return it;
--- trunk/extragear/multimedia/amarok/src/mediabrowser.h #484471:484472
@@ -48,7 +48,7 @@
 
         void setType( Type type );
         Type type() const { return m_type; }
-        MediaItem *findItem(const QString &key) const;
+        MediaItem *findItem(const QString &key, const MediaItem *after=0) const;
 
         virtual bool isLeafItem() const;        // A leaf node of the tree
         virtual bool isFileBacked() const;      // Should the file be deleted of the \
device when removed


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

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