[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