From 06f14b301259c40702a6798dceb0fdc4e6316e24 Mon Sep 17 00:00:00 2001 From: Stefan Derkits Date: Sat, 27 Sep 2014 15:01:09 +0200 Subject: [PATCH] add streaming operators for genre --- .../dynamic/echonest/EchonestGenerator.cpp | 24 +++++++++++++++++-- .../dynamic/echonest/EchonestGenerator.h | 5 ++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp index bbd7881be..5b9b80737 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp @@ -705,6 +705,7 @@ EchonestGenerator::loadGenres() { if ( s_genres_lock.tryLockForRead() ) { + qRegisterMetaTypeStreamOperators< Echonest::Genre >( "enGenre" ); QVariant genres = TomahawkUtils::Cache::instance()->getData( "EchonestGenerator", "genres" ); s_genres_lock.unlock(); if ( genres.isValid() && genres.canConvert< Echonest::Genres >() ) @@ -808,9 +809,28 @@ EchonestGenerator::genresReceived() } s_genresJob = 0; - qRegisterMetaType< Echonest::Genre >( "enGenre" ); - qRegisterMetaType< Echonest::Genres >( "enGenres" ); + qRegisterMetaTypeStreamOperators< Echonest::Genre >( "enGenre" ); TomahawkUtils::Cache::instance()->putData( "EchonestGenerator", 1209600000 /* 2 weeks */, "genres", QVariant::fromValue< Echonest::Genres >( s_genres ) ); s_genres_lock.unlock(); emit genresSaved(); } + +QDataStream& +operator<<(QDataStream& out, const Echonest::Genre &genre) +{ + //TODO: this should be made more complete and be moved to libechonest + return out << genre.name() << genre.description(); +} + +QDataStream& +operator>>(QDataStream& in, Echonest::Genre& genre) +{ + //TODO: this should be made more complete and be moved to libechonest + QString name; + QString description; + in >> name; + in >> description; + genre.setName( name ); + genre.setDescription( description ); + return in; +} diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h index dd75dd6ea..937dd4de8 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h @@ -149,5 +149,10 @@ private: }; +//TODO: this code should be move to libechonest +//TODO: (delete this when libechonest 2.4 is out) +QDataStream& operator<<(QDataStream& out, const Echonest::Genre& genre); +QDataStream& operator>>(QDataStream& in, Echonest::Genre& genre); + #endif