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

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Dan Meltzer <hydrogen () notyetimplemented ! com>
Date:       2007-10-18 5:19:37
Message-ID: 1192684777.096911.12898.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 726583 by dmeltzer:

Sort tracks when they are added to the playlist as well.  This could possibly cause \
problems if the user does not want them sorted by track number on insertion, but I'm \
not sure if that would ever be the case


 M  +2 -0      collectionbrowser/CollectionTreeView.cpp  
 M  +1 -1      meta/MetaUtility.cpp  
 M  +26 -15    playlist/PlaylistModel.cpp  
 M  +8 -1      playlist/PlaylistModel.h  


--- trunk/extragear/multimedia/amarok/src/collectionbrowser/CollectionTreeView.cpp \
#726582:726583 @@ -12,6 +12,7 @@
 #include "debug.h"
 #include "collectionbrowser/CollectionTreeItemModel.h"
 #include "context/ContextView.h"
+#include "playlist/PlaylistModel.h"
 #include "querybuilder.h"
 #include "TheInstances.h"
 
@@ -250,6 +251,7 @@
     else
     {
         Meta::TrackList tracks = item->descendentTracks();
+        qStableSort( tracks.begin(), tracks.end(), Amarok::trackNumberLessThan);
         The::playlistModel()->insertOptioned( tracks, insertMode );
     }
 }
--- trunk/extragear/multimedia/amarok/src/meta/MetaUtility.cpp #726582:726583
@@ -79,7 +79,7 @@
     if( !ec || !ec->isEditable() )
         return;
     ec->beginMetaDataUpdate();
-    QString title = metadata.contains( Meta::Field::TITLE ) ? 
+    QString title = metadata.contains( Meta::Field::TITLE ) ?
                             metadata.value( Meta::Field::TITLE ).toString() : \
QString();  ec->setTitle( title );
 
--- trunk/extragear/multimedia/amarok/src/playlist/PlaylistModel.cpp #726582:726583
@@ -37,6 +37,15 @@
 using namespace Playlist;
 using namespace Meta;
 
+namespace Amarok
+{
+    // Sorting of a tracklist.
+    bool trackNumberLessThan( Meta::TrackPtr left, Meta::TrackPtr right )
+    {
+        return left->trackNumber() < right->trackNumber();
+    }
+}
+
 Model *Model::s_instance = 0;
 
 Model::Model( QObject* parent )
@@ -126,7 +135,7 @@
 
         AlbumGroup * albumGroup = m_albumGroups.value( track->album() );
         return albumGroup->elementsInGroup( row );
-    
+
     } else if( role == Qt::DisplayRole && row != -1 )
     {
         switch ( index.column() ) {
@@ -722,15 +731,17 @@
 void
 Model::newResultReady( const QString &collectionId, const Meta::TrackList &tracks ) \
//Slot  {
+    Meta::TrackList ourTracks = tracks;
+    qStableSort( ourTracks.begin(), ourTracks.end(), Amarok::trackNumberLessThan );
     Q_UNUSED( collectionId )
     QueryMaker *qm = dynamic_cast<QueryMaker*>( sender() );
     if( qm )
     {
         //requires better handling of queries which return multiple results
         if( m_queryMap.contains( qm ) )
-            insertTracks( m_queryMap.value( qm ), tracks );
+            insertTracks( m_queryMap.value( qm ), ourTracks );
         else if( m_optionedQueryMap.contains( qm ) )
-            insertOptioned( tracks, m_optionedQueryMap.value( qm ) );
+            insertOptioned( ourTracks, m_optionedQueryMap.value( qm ) );
     }
 }
 
@@ -800,40 +811,40 @@
         bool removeGroupBelowLastRow = false;
 
         int temp = group->firstInGroup( aboveFirst );
-        if ( temp != -1 ) { 
+        if ( temp != -1 ) {
             //debug() << "--3";
             area1Start = temp;
             removeGroupAboveFirstRow = true;
         }
 
         temp = group->lastInGroup( firstRow + 1 );
-        if ( temp != -1 ) { 
+        if ( temp != -1 ) {
             //debug() << "--4";
             area1End = temp;
             removeGroupBelowFirstRow = true;
         }
 
         temp = group->firstInGroup( lastRow - 1 );
-        if ( temp != -1 ) { 
+        if ( temp != -1 ) {
             //debug() << "--5";
             area2Start = temp;
             removeGroupAboveLastRow = true;
         }
 
         temp = group->lastInGroup( belowLast );
-        if ( temp != -1 ) { 
+        if ( temp != -1 ) {
             //debug() << "--6";
             area2End = temp;
             removeGroupBelowLastRow = true;
         }
 
-        if ( removeGroupAboveFirstRow ) 
+        if ( removeGroupAboveFirstRow )
            { group->removeGroup( aboveFirst ); /*debug() << "removing group at row: \
                " <<  aboveFirst;*/ }
-        
+
         if ( removeGroupBelowFirstRow )
             { group->removeGroup( firstRow + 1 ); /*debug() << "removing group at \
row: " <<  firstRow + 1;*/ }  
-        if ( removeGroupAboveLastRow ) 
+        if ( removeGroupAboveLastRow )
             { group->removeGroup( lastRow -1 ); /*debug() << "removing group at row: \
" <<  lastRow - 1;*/ }  if ( removeGroupBelowLastRow )
            { group->removeGroup( belowLast );  /*debug() << "removing group at row: \
" <<  belowLast;*/ } @@ -846,11 +857,11 @@
         if ( group->subgroupCount() == 0 ) {
             //debug() << "empty...";
             delete m_albumGroups.take( itt.key() );
-            
+
         }
 
-   
 
+
     }
 
     if ( m_albumGroups.count() == 0 ) { // start from scratch
@@ -858,7 +869,7 @@
         area1Start = 0;
         area1End = m_items.count();
         area2Start = area1Start; // just to skip second pass
-        
+
     }
 
 
@@ -891,8 +902,8 @@
         area1Start = QMIN( area1Start, area2Start );
         area2Start = area1Start;
     }
-     
 
+
     //debug() << "area1Start: " << area1Start << ", area1End: " << area1End;
     //debug() << "area2Start: " << area2Start << ", area2End: " << area2End;
 
@@ -957,7 +968,7 @@
 
 
     //make sure that a group containg playing track is expanded
-    if ( m_activeRow != -1 ){ 
+    if ( m_activeRow != -1 ){
         if ( m_albumGroups.contains( m_items[ m_activeRow ]->track()->album() ) ) {
             m_albumGroups[ m_items[ m_activeRow ]->track()->album() ]->setCollapsed( \
m_activeRow,  false );  debug() << "Here";
--- trunk/extragear/multimedia/amarok/src/playlist/PlaylistModel.h #726582:726583
@@ -29,6 +29,13 @@
 class QueryMaker;
 class QUndoStack;
 
+namespace Amarok
+{
+    // Sorting of a tracklist.
+    bool trackNumberLessThan( Meta::TrackPtr left, Meta::TrackPtr right );
+}
+
+
 namespace Playlist {
 
 class TrackNavigator;
@@ -199,7 +206,7 @@
             Meta::TrackList removeRowsCommand( int position, int rows );
 
              /**
-             * This Method regroups albums between two modified rows. It also \
modifies adjacant groups ans needed, so tha  +             * This Method regroups \
                albums between two modified rows. It also modifies adjacant groups \
                ans needed, so tha
              * actual affected area can be somewhat larger than that specified by \
                the two rows.
              */
             void regroupAlbums( int firstRow, int lastRow );


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

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