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

List:       kde-commits
Subject:    extragear/multimedia/amarok/src/collection
From:       Alexandre Pereira de Oliveira <aoliveira () kdemail ! net>
Date:       2007-03-31 20:49:30
Message-ID: 1175374170.457312.15054.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 648615 by aoliveira:

Adding newResultReady( QString collectionId, DataList ) and returnResultAsDataPtrs( \
bool ) to querymaker, and make the necessary changes  on children of this class for \
stuff to compile (and hopefully for sqlquerybuilder to work) 


 M  +3 -0      metaquerybuilder.h  
 M  +3 -0      querymaker.h  
 M  +22 -6     sqlcollection/sqlquerybuilder.cpp  
 M  +4 -0      sqlcollection/sqlquerybuilder.h  


--- trunk/extragear/multimedia/amarok/src/collection/metaquerybuilder.h \
#648614:648615 @@ -46,6 +46,8 @@
         virtual QueryMaker* startYearQuery();
         virtual QueryMaker* startCustomQuery();
 
+        virtual void returnResultAsDataPtrs( bool resultAsDataPtrs ) { \
m_resultAsDataPtrs = resultAsDataPtrs; } +
         virtual QueryMaker* addReturnValue( qint64 value);
         virtual QueryMaker* orderBy( qint64 value, bool descending = false );
 
@@ -69,6 +71,7 @@
         QList<QueryMaker*> builders;
         int m_queryDoneCount;
         QMutex m_queryDoneCountMutex;
+        bool m_resultAsDataPtrs;
 
 };
 
--- trunk/extragear/multimedia/amarok/src/collection/querymaker.h #648614:648615
@@ -55,6 +55,8 @@
         virtual QueryMaker* startYearQuery() = 0;
         virtual QueryMaker* startCustomQuery() = 0;
 
+        virtual void returnResultAsDataPtrs( bool resultAsDataPtrs ) = 0;
+
         /**
             only works after starting a custom query with startCustomQuery()
           */
@@ -81,6 +83,7 @@
         AMAROK_EXPORT void newResultReady( QString collectionId, GenreList );
         AMAROK_EXPORT void newResultReady( QString collectionId, ComposerList );
         AMAROK_EXPORT void newResultReady( QString collectionId, YearList );
+        AMAROK_EXPORT void newResultReady( QString collectionId, DataList );
         AMAROK_EXPORT void newResultReady( QString collectionId, QStringList );
 
         AMAROK_EXPORT void queryDone();
--- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/sqlquerybuilder.cpp \
#648614:648615 @@ -384,6 +384,22 @@
     emit queryDone();
 }
 
+// What's worse, a bunch of almost identical repeated code, or a not so obvious \
macro? :-) +// The macro below will emit the proper result signal. If \
m_resultAsDataPtrs is true, +// it'll emit the signal that takes a list of DataPtrs. \
Otherwise, it'll call the +// signal that takes the list of the specific class.
+
+#define emitProperResult( PointerType, list ) { \
+            if ( m_resultAsDataPtrs ) { \
+                DataList data; \
+                foreach( PointerType p, list ) { \
+                    data << DataPtr::staticCast( p ); \
+                } \
+                emit newResultReady( m_collection->collectionId(), data ); \
+            } \
+            emit newResultReady( m_collection->collectionId(), list ); \
+        }
+
 void
 SqlQueryBuilder::handleTracks( const QStringList &result )
 {
@@ -396,7 +412,7 @@
         QStringList row = result.mid( i*28, 28 );
         tracks.append( reg->getTrack( row ) );
     }
-    emit newResultReady( m_collection->collectionId(), tracks );
+    emitProperResult( TrackPtr, tracks );
 }
 
 void
@@ -408,7 +424,7 @@
     {
         artists.append( reg->getArtist( iter.next(), iter.next().toInt() ) );
     }
-    emit newResultReady( m_collection->collectionId(), artists );
+    emitProperResult( ArtistPtr, artists );
 }
 
 void
@@ -421,7 +437,7 @@
         albums.append( reg->getAlbum( iter.next(), iter.next().toInt() ) );
         iter.next(); //contains tags.isCompilation, not handled at the moment
     }
-    emit newResultReady( m_collection->collectionId(), albums );
+    emitProperResult( AlbumPtr, albums );
 }
 
 void
@@ -433,7 +449,7 @@
     {
         genres.append( reg->getGenre( iter.next(), iter.next().toInt() ) );
     }
-    emit newResultReady( m_collection->collectionId(), genres );
+    emitProperResult( GenrePtr, genres );
 }
 
 void
@@ -445,7 +461,7 @@
     {
         composers.append( reg->getComposer( iter.next(), iter.next().toInt() ) );
     }
-    emit newResultReady( m_collection->collectionId(), composers );
+    emitProperResult( ComposerPtr, composers );
 }
 
 void
@@ -457,7 +473,7 @@
     {
         years.append( reg->getYear( iter.next(), iter.next().toInt() ) );
     }
-    emit newResultReady( m_collection->collectionId(), years );
+    emitProperResult( YearPtr, years );
 }
 
 #include "sqlquerybuilder.moc"
--- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/sqlquerybuilder.h \
#648614:648615 @@ -42,6 +42,8 @@
         virtual QueryMaker* startYearQuery();
         virtual QueryMaker* startCustomQuery();
 
+        virtual void returnResultAsDataPtrs( bool resultAsDataPtrs ) { \
m_resultAsDataPtrs = resultAsDataPtrs; } +
         virtual QueryMaker* includeCollection( const QString &collectionId );
         virtual QueryMaker* excludeCollection( const QString &collectionId );
 
@@ -79,6 +81,8 @@
         class Private;
         Private * const d;
 
+        bool m_resultAsDataPtrs;
+
 };
 
 #endif /* AMAROK_COLLECTION_SQLQUERYBUILDER_H */


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

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