From 5b9ab4b4782b2b71946045d16b8415aca648a809 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser <muesli@gmail.com> Date: Fri, 20 May 2011 01:34:15 +0200 Subject: [PATCH] * Hopefully the last set of debug spam cleanup :-) --- src/libtomahawk/aclsystem.cpp | 22 +-- src/libtomahawk/collection.cpp | 8 +- .../database/databasecollection.cpp | 15 +- .../databasecommand_loaddynamicplaylist.h | 15 +- src/libtomahawk/network/servent.cpp | 36 ++--- .../playlist/dynamic/DynamicPlaylist.cpp | 10 +- .../dynamic/echonest/EchonestControl.cpp | 146 +++++++++--------- .../dynamic/echonest/EchonestGenerator.cpp | 122 +++++++-------- src/libtomahawk/utils/tomahawkutils.cpp | 11 +- src/sourcetree/items/collectionitem.cpp | 2 +- 10 files changed, 190 insertions(+), 197 deletions(-) diff --git a/src/libtomahawk/aclsystem.cpp b/src/libtomahawk/aclsystem.cpp index 15c75a407..0b87e3a1a 100644 --- a/src/libtomahawk/aclsystem.cpp +++ b/src/libtomahawk/aclsystem.cpp @@ -1,5 +1,5 @@ /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === - * + * * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * * Tomahawk is free software: you can redistribute it and/or modify @@ -41,7 +41,7 @@ ACLSystem::ACLSystem( QObject* parent ) { s_instance = this; //qRegisterMetaType< QHash< QString, QHash< QString, ACL > > >("ACLSystem::ACLCacheHash"); - + QStringList savedEntries = TomahawkSettings::instance()->aclEntries(); if( !savedEntries.empty() && savedEntries.size() % 3 == 0 ) { @@ -54,7 +54,7 @@ ACLSystem::ACLSystem( QObject* parent ) index += 3; } } - + m_saveTimer.setSingleShot( false ); m_saveTimer.setInterval( 60000 ); connect( &m_saveTimer, SIGNAL( timeout() ), this, SLOT( saveTimerFired() ) ); @@ -70,10 +70,10 @@ ACLSystem::~ACLSystem() ACLSystem::ACL ACLSystem::isAuthorizedUser( const QString& dbid ) { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; QMutexLocker locker( &m_cacheMutex ); - qDebug() << "Current cache keys = " << m_cache.keys(); - qDebug() << "Looking up dbid"; + qDebug() << "Current cache keys =" << m_cache.keys(); +// qDebug() << "Looking up dbid"; if( !m_cache.contains( dbid ) ) return ACLSystem::NotFound; else @@ -88,12 +88,12 @@ ACLSystem::isAuthorizedUser( const QString& dbid ) void ACLSystem::authorizeUser( const QString& dbid, ACLSystem::ACL globalType ) { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; if( globalType == ACLSystem::NotFound ) return; - + QMutexLocker locker( &m_cacheMutex ); - + QHash< QString, ACL > peerHash; if( m_cache.contains( dbid ) ) peerHash = m_cache[dbid]; @@ -105,10 +105,10 @@ ACLSystem::ACL ACLSystem::isAuthorizedPath( const QString& dbid, const QString& path ) { QMutexLocker locker( &m_cacheMutex ); - + if( !m_cache.contains( dbid ) ) return ACLSystem::NotFound; - + QHash< QString, ACL > peerHash = m_cache[dbid]; if( !peerHash.contains( path ) ) { diff --git a/src/libtomahawk/collection.cpp b/src/libtomahawk/collection.cpp index 1782d345c..05b7522e7 100644 --- a/src/libtomahawk/collection.cpp +++ b/src/libtomahawk/collection.cpp @@ -185,7 +185,7 @@ Collection::station( const QString& guid ) void Collection::setPlaylists( const QList<Tomahawk::playlist_ptr>& plists ) { - qDebug() << Q_FUNC_INFO << plists.count(); +// qDebug() << Q_FUNC_INFO << plists.count(); foreach ( const playlist_ptr& p, plists ) { // qDebug() << "Batch inserting playlist:" << p->guid(); @@ -198,7 +198,7 @@ Collection::setPlaylists( const QList<Tomahawk::playlist_ptr>& plists ) void Collection::setAutoPlaylists( const QList< Tomahawk::dynplaylist_ptr >& plists ) { - qDebug() << Q_FUNC_INFO << plists.count(); +// qDebug() << Q_FUNC_INFO << plists.count(); foreach ( const dynplaylist_ptr& p, plists ) { @@ -212,7 +212,7 @@ Collection::setAutoPlaylists( const QList< Tomahawk::dynplaylist_ptr >& plists ) void Collection::setStations( const QList< dynplaylist_ptr >& stations ) { - qDebug() << Q_FUNC_INFO << stations.count(); +// qDebug() << Q_FUNC_INFO << stations.count(); foreach ( const dynplaylist_ptr& s, stations ) { @@ -226,7 +226,7 @@ Collection::setStations( const QList< dynplaylist_ptr >& stations ) void Collection::setTracks( const QList<Tomahawk::query_ptr>& tracks ) { - qDebug() << Q_FUNC_INFO << tracks.count() << name(); +// qDebug() << Q_FUNC_INFO << tracks.count() << name(); m_tracks << tracks; emit tracksAdded( tracks ); diff --git a/src/libtomahawk/database/databasecollection.cpp b/src/libtomahawk/database/databasecollection.cpp index 45537610d..f0eb88873 100644 --- a/src/libtomahawk/database/databasecollection.cpp +++ b/src/libtomahawk/database/databasecollection.cpp @@ -38,7 +38,6 @@ DatabaseCollection::DatabaseCollection( const source_ptr& src, QObject* parent ) void DatabaseCollection::loadPlaylists() { - qDebug() << Q_FUNC_INFO; DatabaseCommand_LoadAllPlaylists* cmd = new DatabaseCommand_LoadAllPlaylists( source() ); connect( cmd, SIGNAL( done( const QList<Tomahawk::playlist_ptr>& ) ), @@ -51,7 +50,6 @@ DatabaseCollection::loadPlaylists() void DatabaseCollection::loadAutoPlaylists() { - qDebug() << Q_FUNC_INFO; DatabaseCommand_LoadAllAutoPlaylists* cmd = new DatabaseCommand_LoadAllAutoPlaylists( source() ); connect( cmd, SIGNAL( autoPlaylistLoaded( Tomahawk::source_ptr, QVariantList ) ), @@ -60,10 +58,10 @@ DatabaseCollection::loadAutoPlaylists() Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) ); } + void DatabaseCollection::loadStations() { - qDebug() << Q_FUNC_INFO; DatabaseCommand_LoadAllStations* cmd = new DatabaseCommand_LoadAllStations( source() ); connect( cmd, SIGNAL( stationLoaded( Tomahawk::source_ptr, QVariantList ) ), @@ -110,8 +108,6 @@ DatabaseCollection::removeTracks( const QDir& dir ) QList< Tomahawk::playlist_ptr > DatabaseCollection::playlists() { - qDebug() << Q_FUNC_INFO; - if ( Collection::playlists().isEmpty() ) { loadPlaylists(); @@ -124,8 +120,6 @@ DatabaseCollection::playlists() QList< dynplaylist_ptr > DatabaseCollection::autoPlaylists() { - qDebug() << Q_FUNC_INFO; - if ( Collection::autoPlaylists().isEmpty() ) { loadAutoPlaylists(); @@ -134,11 +128,10 @@ DatabaseCollection::autoPlaylists() return Collection::autoPlaylists(); } + QList< dynplaylist_ptr > DatabaseCollection::stations() { - qDebug() << Q_FUNC_INFO; - if ( Collection::stations().isEmpty() ) { loadStations(); @@ -151,8 +144,6 @@ DatabaseCollection::stations() QList< Tomahawk::query_ptr > DatabaseCollection::tracks() { - qDebug() << Q_FUNC_INFO; - if ( !isLoaded() ) { loadTracks(); @@ -161,6 +152,7 @@ DatabaseCollection::tracks() return Collection::tracks(); } + void DatabaseCollection::autoPlaylistCreated( const source_ptr& source, const QVariantList& data ) { dynplaylist_ptr p( new DynamicPlaylist( source, //src @@ -177,6 +169,7 @@ void DatabaseCollection::autoPlaylistCreated( const source_ptr& source, const QV addAutoPlaylist( p ); } + void DatabaseCollection::stationCreated( const source_ptr& source, const QVariantList& data ) { dynplaylist_ptr p( new DynamicPlaylist( source, //src diff --git a/src/libtomahawk/database/databasecommand_loaddynamicplaylist.h b/src/libtomahawk/database/databasecommand_loaddynamicplaylist.h index e797e1cec..08c831b6f 100644 --- a/src/libtomahawk/database/databasecommand_loaddynamicplaylist.h +++ b/src/libtomahawk/database/databasecommand_loaddynamicplaylist.h @@ -1,5 +1,5 @@ /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === - * + * * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * * Tomahawk is free software: you can redistribute it and/or modify @@ -31,17 +31,18 @@ class DatabaseCommand_LoadDynamicPlaylist : public DatabaseCommand_LoadPlaylistEntries { Q_OBJECT - + public: explicit DatabaseCommand_LoadDynamicPlaylist( QString revision_guid, QObject* parent = 0 ) : DatabaseCommand_LoadPlaylistEntries( revision_guid, parent ) - { qDebug() << "loaded with:" << revision_guid << guid(); } - - + { +// qDebug() << "loaded with:" << revision_guid << guid(); + } + virtual void exec( DatabaseImpl* ); virtual bool doesMutates() const { return false; } virtual QString commandname() const { return "loaddynamicplaylist"; } - + signals: // used if loading an ondemand playlist void done( QString, @@ -58,7 +59,7 @@ signals: bool, QMap< QString, Tomahawk::plentry_ptr >, bool ); - + private: }; diff --git a/src/libtomahawk/network/servent.cpp b/src/libtomahawk/network/servent.cpp index 8c3761bfa..8b27affac 100644 --- a/src/libtomahawk/network/servent.cpp +++ b/src/libtomahawk/network/servent.cpp @@ -108,31 +108,31 @@ Servent::startListening( QHostAddress ha, bool upnp, int port ) defPortAlso = listen( ha, defPort ); if( !defPortAlso ) { - qDebug() << "Failed to listen on both port " << m_port << " and port " << defPort; - qDebug() << "Error string is " << errorString(); + qDebug() << "Failed to listen on both port" << m_port << "and port" << defPort; + qDebug() << "Error string is" << errorString(); return false; } else - qDebug() << "Servent listening on port " << defPort << " servent thread:" << thread(); + qDebug() << "Servent listening on port" << defPort << "servent thread:" << thread(); } else { bool defPortAlso = listen( ha, defPort ); - qDebug() << "Servent listening on port " << m_port << " servent thread:" << thread(); + qDebug() << "Servent listening on port" << m_port << "servent thread:" << thread(); if( defPortAlso ) - qDebug() << "Servent also listening on port " << defPort << " servent thread:" << thread(); + qDebug() << "Servent also listening on port" << defPort << "servent thread:" << thread(); } // --lanhack means to advertise your LAN IP over jabber as if it were externallyVisible - qDebug() << "Address mode = " << (int)(TomahawkSettings::instance()->externalAddressMode()); - qDebug() << "Static host/port preferred ? = " << ( TomahawkSettings::instance()->preferStaticHostPort() ? "true" : "false" ); + qDebug() << "Address mode =" << (int)(TomahawkSettings::instance()->externalAddressMode()); + qDebug() << "Static host/port preferred =" << ( TomahawkSettings::instance()->preferStaticHostPort() ? "true" : "false" ); if( TomahawkSettings::instance()->preferStaticHostPort() ) { qDebug() << "Forcing static preferred host and port"; m_externalHostname = TomahawkSettings::instance()->externalHostname(); m_externalPort = TomahawkSettings::instance()->externalPort(); - qDebug() << m_externalHostname << m_externalPort; +// qDebug() << m_externalHostname << m_externalPort; emit ready(); return true; } @@ -176,7 +176,7 @@ Servent::startListening( QHostAddress ha, bool upnp, int port ) QString Servent::createConnectionKey( const QString& name, const QString &nodeid, const QString &key, bool onceOnly ) { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; Q_ASSERT( this->thread() == QThread::currentThread() ); QString _key = ( key.isEmpty() ? uuid() : key ); @@ -226,7 +226,7 @@ Servent::registerOffer( const QString& key, Connection* conn ) void Servent::registerControlConnection( ControlConnection* conn ) { - qDebug() << Q_FUNC_INFO << conn->id(); +// qDebug() << Q_FUNC_INFO << conn->id(); m_controlconnections.append( conn ); } @@ -274,7 +274,7 @@ Servent::incomingConnection( int sd ) connect( sock, SIGNAL( readyRead() ), SLOT( readyRead() ), Qt::QueuedConnection ); connect( sock, SIGNAL( disconnected() ), sock, SLOT( deleteLater() ), Qt::QueuedConnection ); - qDebug() << "connection accepted."; +// qDebug() << "connection accepted."; } @@ -324,13 +324,13 @@ Servent::readyRead() nodeid = m.value( "nodeid" ).toString(); controlid = m.value( "controlid" ).toString(); - qDebug() << "Incoming connection details: " << m; + qDebug() << "Incoming connection details:" << m; if( !nodeid.isEmpty() ) // only control connections send nodeid { foreach( ControlConnection* con, m_controlconnections ) { - qDebug() << con->socket() << sock; +// qDebug() << con->socket() << sock; if( con->id() == nodeid ) { qDebug() << "Duplicate control connection detected, dropping:" << nodeid << conntype; @@ -420,7 +420,7 @@ Servent::socketConnected() { QTcpSocketExtra* sock = (QTcpSocketExtra*)sender(); - qDebug() << "Servent::SocketConnected" << thread() << "socket:" << sock; +// qDebug() << "Servent::SocketConnected" << thread() << "socket:" << sock; Connection* conn = sock->_conn; handoverSocket( conn, sock ); @@ -565,7 +565,7 @@ Servent::reverseOfferRequest( ControlConnection* orig_conn, const QString &their Connection* Servent::claimOffer( ControlConnection* cc, const QString &nodeid, const QString &key, const QHostAddress peer ) { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; bool noauth = qApp->arguments().contains( "--noauth" ); @@ -722,7 +722,7 @@ Servent::checkACL( const Connection* conn, const QString &nodeid, bool showDialo QSharedPointer<QIODevice> Servent::remoteIODeviceFactory( const result_ptr& result ) { - qDebug() << Q_FUNC_INFO << thread(); +// qDebug() << Q_FUNC_INFO << thread(); QSharedPointer<QIODevice> sp; QStringList parts = result->url().mid( QString( "servent://" ).length() ).split( "\t" ); @@ -809,10 +809,10 @@ bool Servent::connectedToSession( const QString& session ) { qDebug() << Q_FUNC_INFO; - qDebug() << "Checking against" << session; +// qDebug() << "Checking against" << session; foreach( ControlConnection* cc, m_controlconnections ) { - qDebug() << "Checking session" << cc->id(); +// qDebug() << "Checking session" << cc->id(); if( cc->id() == session ) return true; } diff --git a/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp b/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp index a6d779376..e69dbb320 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicPlaylist.cpp @@ -56,7 +56,7 @@ DynamicPlaylist::DynamicPlaylist ( const Tomahawk::source_ptr& src, const QString& guid ) : Playlist( src, currentrevision, title, info, creator, createdOn, shared, lastmod, guid ) { - qDebug() << "Creating Dynamic Playlist 1"; +// qDebug() << "Creating Dynamic Playlist 1"; // TODO instantiate generator m_generator = geninterface_ptr( GeneratorFactory::create( type ) ); m_generator->setMode( mode ); @@ -74,7 +74,7 @@ DynamicPlaylist::DynamicPlaylist ( const Tomahawk::source_ptr& author, bool shared ) : Playlist ( author, guid, title, info, creator, shared ) { - qDebug() << "Creating Dynamic Playlist 2"; +// qDebug() << "Creating Dynamic Playlist 2"; m_generator = geninterface_ptr( GeneratorFactory::create( type ) ); m_generator->setMode( mode ); } @@ -208,7 +208,7 @@ DynamicPlaylist::createNewRevision( const QString& newrev, void DynamicPlaylist::loadRevision( const QString& rev ) { - qDebug() << Q_FUNC_INFO << "Loading with:" << ( rev.isEmpty() ? currentrevision() : rev ); +// qDebug() << Q_FUNC_INFO << "Loading with:" << ( rev.isEmpty() ? currentrevision() : rev ); setBusy( true ); DatabaseCommand_LoadDynamicPlaylist* cmd = new DatabaseCommand_LoadDynamicPlaylist( rev.isEmpty() ? currentrevision() : rev ); @@ -258,7 +258,7 @@ DynamicPlaylist::remove( const Tomahawk::dynplaylist_ptr& playlist ) void DynamicPlaylist::reportCreated( const Tomahawk::dynplaylist_ptr& self ) { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; Q_ASSERT( self.data() == this ); Q_ASSERT( !author().isNull() ); Q_ASSERT( !author()->collection().isNull() ); @@ -274,7 +274,7 @@ DynamicPlaylist::reportCreated( const Tomahawk::dynplaylist_ptr& self ) void DynamicPlaylist::reportDeleted( const Tomahawk::dynplaylist_ptr& self ) { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; Q_ASSERT( self.data() == this ); // will emit Collection::playlistDeleted(...) if( self->mode() == Static ) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index d742f9899..b2246eaf2 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -1,5 +1,5 @@ /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === - * + * * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * * Tomahawk is free software: you can redistribute it and/or modify @@ -34,7 +34,7 @@ Tomahawk::EchonestControl::EchonestControl( const QString& selectedType, const Q m_editingTimer.setInterval( 500 ); //timeout to edits m_editingTimer.setSingleShot( true ); connect( &m_editingTimer, SIGNAL( timeout() ), this, SLOT( editTimerFired() ) ); - + m_delayedEditTimer.setInterval( 250 ); // additional timer for "just typing" without enter or focus change m_delayedEditTimer.setSingleShot( true ); connect( &m_delayedEditTimer, SIGNAL( timeout() ), &m_editingTimer, SLOT( start() ) ); @@ -54,7 +54,7 @@ Tomahawk::EchonestControl::matchSelector() return m_match.data(); } -void +void Tomahawk::EchonestControl::setSelectedType ( const QString& type ) { if( type != selectedType() ) { @@ -62,11 +62,11 @@ Tomahawk::EchonestControl::setSelectedType ( const QString& type ) delete m_input.data(); if( !m_match.isNull() ) delete m_match.data(); - + Tomahawk::DynamicControl::setSelectedType ( type ); updateWidgets(); updateData(); - qDebug() << "Setting new type, set data to:" << m_data.first << m_data.second; +// qDebug() << "Setting new type, set data to:" << m_data.first << m_data.second; } } @@ -81,34 +81,34 @@ Tomahawk::EchonestControl::toENParam() const return m_data; } -QString +QString Tomahawk::EchonestControl::input() const { return m_data.second.toString(); } -QString +QString Tomahawk::EchonestControl::match() const { return m_matchData; } -QString +QString Tomahawk::EchonestControl::matchString() const { return m_matchString; } -QString +QString Tomahawk::EchonestControl::summary() const -{ +{ if( m_summary.isEmpty() ) const_cast< EchonestControl* >( this )->calculateSummary(); - + return m_summary; } -void +void Tomahawk::EchonestControl::setInput(const QString& input) { // TODO generate widgets @@ -116,7 +116,7 @@ Tomahawk::EchonestControl::setInput(const QString& input) updateWidgetsFromData(); } -void +void Tomahawk::EchonestControl::setMatch(const QString& match) { // TODO generate widgets @@ -124,7 +124,7 @@ Tomahawk::EchonestControl::setMatch(const QString& match) updateWidgetsFromData(); } -void +void Tomahawk::EchonestControl::updateWidgets() { if( !m_input.isNull() ) @@ -132,54 +132,54 @@ Tomahawk::EchonestControl::updateWidgets() if( !m_match.isNull() ) delete m_match.data(); m_overrideType = -1; - + // make sure the widgets are the proper kind for the selected type, and hook up to their slots if( selectedType() == "Artist" ) { m_currentType = Echonest::DynamicPlaylist::Artist; - + QComboBox* match = new QComboBox(); QLineEdit* input = new QLineEdit(); - + match->addItem( "Limit To", Echonest::DynamicPlaylist::ArtistType ); match->addItem( "Similar To", Echonest::DynamicPlaylist::ArtistRadioType ); m_matchString = match->currentText(); m_matchData = match->itemData( match->currentIndex() ).toString(); - + input->setPlaceholderText( "Artist name" ); input->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Fixed ); - + connect( match, SIGNAL( currentIndexChanged(int) ), this, SLOT( updateData() ) ); connect( match, SIGNAL( currentIndexChanged(int) ), this, SIGNAL( changed() ) ); connect( input, SIGNAL( textChanged(QString) ), this, SLOT( updateData() ) ); connect( input, SIGNAL( editingFinished() ), this, SLOT( editingFinished() ) ); connect( input, SIGNAL( textEdited( QString ) ), &m_editingTimer, SLOT( stop() ) ); connect( input, SIGNAL( textEdited( QString ) ), &m_delayedEditTimer, SLOT( start() ) ); - + match->hide(); input->hide(); m_match = QWeakPointer< QWidget >( match ); m_input = QWeakPointer< QWidget >( input ); } else if( selectedType() == "Artist Description" ) { m_currentType = Echonest::DynamicPlaylist::Description; - + QLabel* match = new QLabel( tr( "is" ) ); QLineEdit* input = new QLineEdit(); - + m_matchString = QString(); m_matchData = QString::number( (int)Echonest::DynamicPlaylist::ArtistDescriptionType ); - + connect( input, SIGNAL( textChanged(QString) ), this, SLOT( updateData() ) ); connect( input, SIGNAL( editingFinished() ), this, SLOT( editingFinished() ) ); connect( input, SIGNAL( textEdited( QString ) ), &m_editingTimer, SLOT( stop() ) ); connect( input, SIGNAL( textEdited( QString ) ), &m_delayedEditTimer, SLOT( start() ) ); - + match->hide(); input->hide(); m_match = QWeakPointer< QWidget >( match ); m_input = QWeakPointer< QWidget >( input ); } else if( selectedType() == "Variety" ) { m_currentType = Echonest::DynamicPlaylist::Variety; - + QLabel* match = new QLabel( tr( "is" ) ); LabeledSlider* input = new LabeledSlider( tr( "Less" ), tr( "More" ) ); input->slider()->setRange( 0, 10000 ); @@ -188,47 +188,47 @@ Tomahawk::EchonestControl::updateWidgets() m_matchString = match->text(); m_matchData = match->text(); - - + + connect( input->slider(), SIGNAL( valueChanged( int ) ), this, SLOT( updateData() ) ); connect( input->slider(), SIGNAL( valueChanged( int ) ), this, SLOT( editingFinished() ) ); - + match->hide(); input->hide(); m_match = QWeakPointer< QWidget >( match ); m_input = QWeakPointer< QWidget >( input ); } else if( selectedType() == "Tempo" ) { m_currentType = Echonest::DynamicPlaylist::MinTempo; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::MinTempo, Echonest::DynamicPlaylist::MaxTempo, tr( "0 BPM" ), tr( "500 BPM" ), 500 ); } else if( selectedType() == "Duration" ) { m_currentType = Echonest::DynamicPlaylist::MinDuration; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::MinDuration, Echonest::DynamicPlaylist::MaxDuration, tr( "0 secs" ), tr( "3600 secs" ), 3600 ); } else if( selectedType() == "Loudness" ) { m_currentType = Echonest::DynamicPlaylist::MinLoudness; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::MinLoudness, Echonest::DynamicPlaylist::MaxLoudness, tr( "-100 dB" ), tr( "100 dB" ), 100 ); qobject_cast< LabeledSlider* >( m_input.data() )->slider()->setMinimum( -100 ); } else if( selectedType() == "Danceability" ) { m_currentType = Echonest::DynamicPlaylist::MinDanceability; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::MinDanceability, Echonest::DynamicPlaylist::MaxDanceability, tr( "Less" ), tr( "More" ), 10000 ); } else if( selectedType() == "Energy" ) { m_currentType = Echonest::DynamicPlaylist::MinEnergy; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::MinEnergy, Echonest::DynamicPlaylist::MaxEnergy, tr( "Less" ), tr( "More" ), 10000 ); } else if( selectedType() == "Artist Familiarity" ) { m_currentType = Echonest::DynamicPlaylist::ArtistMinFamiliarity; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::ArtistMinFamiliarity, Echonest::DynamicPlaylist::ArtistMaxFamiliarity, tr( "Less" ), tr( "More" ), 10000 ); } else if( selectedType() == "Artist Hotttnesss" ) { m_currentType = Echonest::DynamicPlaylist::ArtistMinHotttnesss; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::ArtistMinHotttnesss, Echonest::DynamicPlaylist::ArtistMaxHotttnesss, tr( "Less" ), tr( "More" ), 10000 ); } else if( selectedType() == "Song Hotttnesss" ) { m_currentType = Echonest::DynamicPlaylist::SongMinHotttnesss; - + setupMinMaxWidgets( Echonest::DynamicPlaylist::SongMinHotttnesss, Echonest::DynamicPlaylist::SongMaxHotttnesss, tr( "Less" ), tr( "More" ), 10000 ); } else if( selectedType() == "Latitude" ) { m_currentType = Echonest::DynamicPlaylist::ArtistMinLatitude; @@ -242,26 +242,26 @@ Tomahawk::EchonestControl::updateWidgets() qobject_cast< LabeledSlider* >( m_input.data() )->slider()->setMinimum( -180 ); } else if( selectedType() == "Mode" ) { m_currentType = Echonest::DynamicPlaylist::Mode; - + QLabel* match = new QLabel( tr( "is" ) ); QComboBox* combo = new QComboBox; combo->addItem( tr( "Major" ), QString::number( 1 ) ); combo->addItem( tr( "Minor" ), QString::number( 0 ) ); - + m_matchString = match->text(); m_matchData = match->text(); - - + + connect( combo, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( combo, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); - + match->hide(); combo->hide(); m_match = QWeakPointer< QWidget >( match ); m_input = QWeakPointer< QWidget >( combo ); } else if( selectedType() == "Key" ) { m_currentType = Echonest::DynamicPlaylist::Key; - + QLabel* match = new QLabel( tr( "is" ) ); QComboBox* combo = new QComboBox; combo->addItem( tr( "C" ), QString::number( 0 ) ); @@ -276,25 +276,25 @@ Tomahawk::EchonestControl::updateWidgets() combo->addItem( tr( "A" ), QString::number( 9 ) ); combo->addItem( tr( "B Flat" ), QString::number( 10 ) ); combo->addItem( tr( "B" ), QString::number( 11 ) ); - + m_matchString = match->text(); m_matchData = match->text(); - - + + connect( combo, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( combo, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); - + match->hide(); combo->hide(); m_match = QWeakPointer< QWidget >( match ); m_input = QWeakPointer< QWidget >( combo ); } else if( selectedType() == "Sorting" ) { m_currentType = Echonest::DynamicPlaylist::Key; - + QComboBox* match = new QComboBox(); match->addItem( tr( "Ascending" ), 0 ); match->addItem( tr( "Descending" ), 1 ); - + QComboBox* combo = new QComboBox; combo->addItem( tr( "Tempo" ), QString::number( Echonest::DynamicPlaylist::SortTempoAscending ) ); combo->addItem( tr( "Duration" ), QString::number( Echonest::DynamicPlaylist::SortDurationAscending ) ); @@ -308,15 +308,15 @@ Tomahawk::EchonestControl::updateWidgets() combo->addItem( tr( "Key" ), QString::number( Echonest::DynamicPlaylist::SortKeyAscending ) ); combo->addItem( tr( "Energy" ), QString::number( Echonest::DynamicPlaylist::SortEnergyAscending ) ); combo->addItem( tr( "Danceability" ), QString::number( Echonest::DynamicPlaylist::SortDanceabilityAscending ) ); - + m_matchString = "Ascending"; // default m_matchData = Echonest::DynamicPlaylist::SortTempoAscending; - + connect( match, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( match, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); connect( combo, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( combo, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); - + match->hide(); combo->hide(); m_match = QWeakPointer< QWidget >( match ); @@ -329,26 +329,26 @@ Tomahawk::EchonestControl::updateWidgets() calculateSummary(); } -void +void Tomahawk::EchonestControl::setupMinMaxWidgets( Echonest::DynamicPlaylist::PlaylistParam min, Echonest::DynamicPlaylist::PlaylistParam max, const QString& leftL, const QString& rightL, int maxRange ) { QComboBox* match = new QComboBox; match->addItem( "At Least", min ); match->addItem( "At Most", max ); - + LabeledSlider* input = new LabeledSlider( leftL, rightL ); input->slider()->setRange( 0, maxRange ); input->slider()->setTickInterval( 1 ); input->slider()->setTracking( false ); - + m_matchString = match->currentText(); m_matchData = match->itemData( match->currentIndex() ).toString(); - + connect( match, SIGNAL( activated( int ) ), this, SLOT( updateData() ) ); connect( match, SIGNAL( activated( int ) ), this, SLOT( editingFinished() ) ); connect( input->slider(), SIGNAL( valueChanged( int ) ), this, SLOT( updateData() ) ); connect( input->slider(), SIGNAL( valueChanged( int ) ), this, SLOT( editingFinished() ) ); - + match->hide(); input->hide(); m_match = QWeakPointer< QWidget >( match ); @@ -356,7 +356,7 @@ Tomahawk::EchonestControl::setupMinMaxWidgets( Echonest::DynamicPlaylist::Playli } -void +void Tomahawk::EchonestControl::updateData() { if( selectedType() == "Artist" ) { @@ -394,7 +394,7 @@ Tomahawk::EchonestControl::updateData() if( match && input ) { m_matchString = match->currentText(); m_matchData = match->itemData( match->currentIndex() ).toString(); - + // what a HACK int enumVal = input->itemData( input->currentIndex() ).toInt() + m_matchData.toInt(); m_data.first = Echonest::DynamicPlaylist::Sort; @@ -402,11 +402,11 @@ Tomahawk::EchonestControl::updateData() // qDebug() << "SAVING" << input->currentIndex() << "AS" << enumVal << "(" << input->itemData( input->currentIndex() ).toInt() << "+" << m_matchData.toInt() << ")"; } } - + calculateSummary(); } -void +void Tomahawk::EchonestControl::updateFromComboAndSlider( bool smooth ) { QComboBox* combo = qobject_cast<QComboBox*>( m_match.data() ); @@ -421,7 +421,7 @@ Tomahawk::EchonestControl::updateFromComboAndSlider( bool smooth ) } } -void +void Tomahawk::EchonestControl::updateFromLabelAndCombo() { QComboBox* s = qobject_cast<QComboBox*>( m_input.data() ); @@ -433,7 +433,7 @@ Tomahawk::EchonestControl::updateFromLabelAndCombo() // fills in the current widget with the data from json or dbcmd (m_data.second and m_matchData) -void +void Tomahawk::EchonestControl::updateWidgetsFromData() { if( selectedType() == "Artist" ) { @@ -452,7 +452,7 @@ Tomahawk::EchonestControl::updateWidgetsFromData() if( s ) s->slider()->setValue( m_data.second.toDouble() * 10000 ); } else if( selectedType() == "Tempo" || selectedType() == "Duration" || selectedType() == "Loudness" || selectedType() == "Latitude" || selectedType() == "Longitude" ) { - updateToComboAndSlider(); + updateToComboAndSlider(); } else if( selectedType() == "Danceability" || selectedType() == "Energy" || selectedType() == "Artist Familiarity" || selectedType() == "Artist Hotttnesss" || selectedType() == "Song Hotttnesss" ) { updateToComboAndSlider( true ); } else if( selectedType() == "Mode" || selectedType() == "Key" ) { @@ -462,7 +462,7 @@ Tomahawk::EchonestControl::updateWidgetsFromData() QComboBox* input = qobject_cast< QComboBox* >( m_input.data() ); if( match && input ) { match->setCurrentIndex( match->findData( m_matchData )); - + // HACK alert. if it's odd, subtract 1 int val = ( m_data.second.toInt() - ( m_data.second.toInt() % 2 ) ) / 2; input->setCurrentIndex( val ); @@ -472,7 +472,7 @@ Tomahawk::EchonestControl::updateWidgetsFromData() calculateSummary(); } -void +void Tomahawk::EchonestControl::updateToComboAndSlider( bool smooth ) { QComboBox* combo = qobject_cast<QComboBox*>( m_match.data() ); @@ -491,26 +491,26 @@ void Tomahawk::EchonestControl::updateToLabelAndCombo() } } -void +void Tomahawk::EchonestControl::editingFinished() { - qDebug() << Q_FUNC_INFO; +// qDebug() << Q_FUNC_INFO; m_editingTimer.start(); } -void +void Tomahawk::EchonestControl::editTimerFired() { // make sure it's really changed if( m_cacheData != m_data.second ) { // new, so emit changed emit changed(); } - + m_cacheData = m_data.second; } -void +void Tomahawk::EchonestControl::calculateSummary() { // turns the current control into an english phrase suitable for embedding into a sentence summary @@ -522,7 +522,7 @@ Tomahawk::EchonestControl::calculateSummary() else if( static_cast< Echonest::DynamicPlaylist::ArtistTypeEnum >( m_matchData.toInt() ) == Echonest::DynamicPlaylist::ArtistRadioType ) summary = QString( "similar to ~%1" ).arg( m_data.second.toString() ); } else if( selectedType() == "Artist Description" ) { - summary = QString( "with genre ~%1" ).arg( m_data.second.toString() ); + summary = QString( "with genre ~%1" ).arg( m_data.second.toString() ); } else if( selectedType() == "Variety" || selectedType() == "Danceability" || selectedType() == "Artist Hotttnesss" || selectedType() == "Energy" || selectedType() == "Artist Familiarity" || selectedType() == "Song Hotttnesss" ) { QString modifier; qreal sliderVal = m_data.second.toReal(); @@ -560,11 +560,11 @@ Tomahawk::EchonestControl::calculateSummary() Q_ASSERT( !m_input.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_input.data() ) ); QString sortType = qobject_cast< QComboBox* >( m_input.data() )->currentText().toLower(); - + Q_ASSERT( !m_match.isNull() ); Q_ASSERT( qobject_cast< QComboBox* >( m_match.data() ) ); QString ascdesc = qobject_cast< QComboBox* >( m_match.data() )->currentText().toLower(); - + summary = QString( "sorted in %1 %2 order" ).arg( ascdesc ).arg( sortType ); } m_summary = summary; diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp index 6f07beb1d..c4e22c61e 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp @@ -1,5 +1,5 @@ /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === - * + * * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * * Tomahawk is free software: you can redistribute it and/or modify @@ -27,27 +27,27 @@ using namespace Tomahawk; EchonestFactory::EchonestFactory() {} -GeneratorInterface* +GeneratorInterface* EchonestFactory::create() { return new EchonestGenerator(); } -dyncontrol_ptr +dyncontrol_ptr EchonestFactory::createControl( const QString& controlType ) { return dyncontrol_ptr( new EchonestControl( controlType, typeSelectors() ) ); } -QStringList +QStringList EchonestFactory::typeSelectors() const { - return QStringList() << "Artist" << "Artist Description" << "Variety" << "Tempo" << "Duration" << "Loudness" - << "Danceability" << "Energy" << "Artist Familiarity" << "Artist Hotttnesss" << "Song Hotttnesss" + return QStringList() << "Artist" << "Artist Description" << "Variety" << "Tempo" << "Duration" << "Loudness" + << "Danceability" << "Energy" << "Artist Familiarity" << "Artist Hotttnesss" << "Song Hotttnesss" << "Longitude" << "Latitude" << "Mode" << "Key" << "Sorting"; } -EchonestGenerator::EchonestGenerator ( QObject* parent ) +EchonestGenerator::EchonestGenerator ( QObject* parent ) : GeneratorInterface ( parent ) , m_dynPlaylist( new Echonest::DynamicPlaylist() ) , m_steeredSinceLastTrack( false ) @@ -55,7 +55,7 @@ EchonestGenerator::EchonestGenerator ( QObject* parent ) m_type = "echonest"; m_mode = OnDemand; m_logo.load( RESPATH "/images/echonest_logo.png" ); - qDebug() << "ECHONEST:" << m_logo.size(); +// qDebug() << "ECHONEST:" << m_logo.size(); } EchonestGenerator::~EchonestGenerator() @@ -63,7 +63,7 @@ EchonestGenerator::~EchonestGenerator() delete m_dynPlaylist; } -dyncontrol_ptr +dyncontrol_ptr EchonestGenerator::createControl( const QString& type ) { m_controls << dyncontrol_ptr( new EchonestControl( type, GeneratorFactory::typeSelectors( m_type ) ) ); @@ -76,18 +76,18 @@ QPixmap EchonestGenerator::logo() } -void -EchonestGenerator::generate ( int number ) +void +EchonestGenerator::generate( int number ) { // convert to an echonest query, and fire it off qDebug() << Q_FUNC_INFO; - qDebug() << "Generating playlist with " << m_controls.size(); + qDebug() << "Generating playlist with" << m_controls.size(); foreach( const dyncontrol_ptr& ctrl, m_controls ) qDebug() << ctrl->selectedType() << ctrl->match() << ctrl->input(); - + try { Echonest::DynamicPlaylist::PlaylistParams params = getParams(); - + params.append( Echonest::DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Results, number ) ); QNetworkReply* reply = Echonest::DynamicPlaylist::staticPlaylist( params ); qDebug() << "Generating a static playlist from echonest!" << reply->url().toString(); @@ -98,12 +98,12 @@ EchonestGenerator::generate ( int number ) } } -void +void EchonestGenerator::startOnDemand() { try { Echonest::DynamicPlaylist::PlaylistParams params = getParams(); - + QNetworkReply* reply = m_dynPlaylist->start( params ); qDebug() << "starting a dynamic playlist from echonest!" << reply->url().toString(); connect( reply, SIGNAL( finished() ), this, SLOT( dynamicStarted() ) ); @@ -113,7 +113,7 @@ EchonestGenerator::startOnDemand() } } -void +void EchonestGenerator::fetchNext( int rating ) { if( m_dynPlaylist->sessionId().isEmpty() ) { @@ -121,7 +121,7 @@ EchonestGenerator::fetchNext( int rating ) qWarning() << Q_FUNC_INFO << "asked to fetch next dynamic song when we're not in the middle of a playlist!"; return; } - + QNetworkReply* reply; if( m_steeredSinceLastTrack ) { qDebug() << "Steering dynamic playlist!" << m_steerData.first << m_steerData.second; @@ -135,34 +135,34 @@ EchonestGenerator::fetchNext( int rating ) } -void +void EchonestGenerator::staticFinished() { Q_ASSERT( sender() ); Q_ASSERT( qobject_cast< QNetworkReply* >( sender() ) ); - + QNetworkReply* reply = qobject_cast< QNetworkReply* >( sender() ); - + Echonest::SongList songs; try { songs = Echonest::DynamicPlaylist::parseStaticPlaylist( reply ); } catch( const Echonest::ParseError& e ) { - qWarning() << "libechonest threw an error trying to parse the static playlist! code" << e.errorType() << "error desc:" << e.what(); - + qWarning() << "libechonest threw an error trying to parse the static playlist code" << e.errorType() << "error desc:" << e.what(); + emit error( "The Echo Nest returned an error creating the playlist", e.what() ); return; } - + QList< query_ptr > queries; foreach( const Echonest::Song& song, songs ) { qDebug() << "EchonestGenerator got song:" << song; queries << queryFromSong( song ); } - + emit generated( queries ); } -Echonest::DynamicPlaylist::PlaylistParams +Echonest::DynamicPlaylist::PlaylistParams EchonestGenerator::getParams() const throw( std::runtime_error ) { Echonest::DynamicPlaylist::PlaylistParams params; @@ -173,14 +173,14 @@ EchonestGenerator::getParams() const throw( std::runtime_error ) return params; } -void +void EchonestGenerator::dynamicStarted() { Q_ASSERT( sender() ); Q_ASSERT( qobject_cast< QNetworkReply* >( sender() ) ); QNetworkReply* reply = qobject_cast< QNetworkReply* >( sender() ); - - try + + try { Echonest::Song song = m_dynPlaylist->parseStart( reply ); query_ptr songQuery = queryFromSong( song ); @@ -191,19 +191,19 @@ EchonestGenerator::dynamicStarted() } } -void +void EchonestGenerator::dynamicFetched() { Q_ASSERT( sender() ); Q_ASSERT( qobject_cast< QNetworkReply* >( sender() ) ); QNetworkReply* reply = qobject_cast< QNetworkReply* >( sender() ); - - resetSteering(); - + + resetSteering(); + if( !m_steerer.isNull() ) m_steerer.data()->resetSteering( true ); - - try + + try { Echonest::Song song = m_dynPlaylist->parseNextSong( reply ); query_ptr songQuery = queryFromSong( song ); @@ -214,7 +214,7 @@ EchonestGenerator::dynamicFetched() } } -void +void EchonestGenerator::steerDescription( const QString& desc ) { m_steeredSinceLastTrack = true; @@ -222,7 +222,7 @@ EchonestGenerator::steerDescription( const QString& desc ) m_steerData.second = desc; } -void +void EchonestGenerator::steerField( const QString& field ) { m_steeredSinceLastTrack = true; @@ -230,7 +230,7 @@ EchonestGenerator::steerField( const QString& field ) m_steerData.second = field; } -void +void EchonestGenerator::resetSteering() { m_steeredSinceLastTrack = false; @@ -239,12 +239,12 @@ EchonestGenerator::resetSteering() } -bool +bool EchonestGenerator::onlyThisArtistType( Echonest::DynamicPlaylist::ArtistTypeEnum type ) const throw( std::runtime_error ) { bool only = true; bool some = false; - + foreach( const dyncontrol_ptr& control, m_controls ) { if( ( control->selectedType() == "Artist" || control->selectedType() == "Artist Description" ) && static_cast<Echonest::DynamicPlaylist::ArtistTypeEnum>( control->match().toInt() ) != type ) { only = false; @@ -257,11 +257,11 @@ EchonestGenerator::onlyThisArtistType( Echonest::DynamicPlaylist::ArtistTypeEnum } else if( some && !only ) { throw std::runtime_error( "All artist match types must be the same" ); } - + return false; } -void +void EchonestGenerator::appendRadioType( Echonest::DynamicPlaylist::PlaylistParams& params ) const throw( std::runtime_error ) { /** @@ -269,9 +269,9 @@ EchonestGenerator::appendRadioType( Echonest::DynamicPlaylist::PlaylistParams& p * the types are artist, artist-radio, artist-description, catalog, catalog-radio, song-radio. we don't care about the catalog ones, and * we can't use the song ones since for the moment EN only accepts Song IDs, not names, and we don't want to insert an extra song.search * call first. - * + * */ - + /// 1. artist: If all the artist controls are Limit-To. If some were but not all, error out. /// 2. artist-description: If all the artist entries are Description. If some were but not all, error out. /// 3. artist-radio: If all the artist entries are Similar To. If some were but not all, error out. @@ -283,34 +283,34 @@ EchonestGenerator::appendRadioType( Echonest::DynamicPlaylist::PlaylistParams& p params.append( Echonest::DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Type, Echonest::DynamicPlaylist::ArtistRadioType ) ); } -query_ptr +query_ptr EchonestGenerator::queryFromSong(const Echonest::Song& song) { // track[ "album" ] = song.release(); // TODO should we include it? can be quite specific return Query::get( song.artistName(), song.title(), QString(), uuid() ); } -QWidget* +QWidget* EchonestGenerator::steeringWidget() { if( m_steerer.isNull() ) { m_steerer = QWeakPointer< EchonestSteerer >( new EchonestSteerer ); - + connect( m_steerer.data(), SIGNAL( steerField( QString ) ), this, SLOT( steerField( QString ) ) ); connect( m_steerer.data(), SIGNAL( steerDescription( QString ) ), this, SLOT( steerDescription( QString ) ) ); connect( m_steerer.data(), SIGNAL( reset() ), this, SLOT( resetSteering() ) ); } - + return m_steerer.data(); } -QString +QString EchonestGenerator::sentenceSummary() { /** * The idea is we generate an english sentence from the individual phrases of the controls. We have to follow a few rules, but othewise it's quite straightforward. - * + * * Rules: * - Sentence starts with "Songs " * - Artists always go first @@ -318,16 +318,16 @@ EchonestGenerator::sentenceSummary() * - sorting always at end * - collapse artists. "Like X, like Y, like Z, ..." -> "Like X, Y, and Z" * - skip empty artist entries - * + * * NOTE / TODO: In order for the sentence to be grammatically correct, we must follow the EN API rules. That means we can't have multiple of some types of filters, * and all Artist types must be the same. The filters aren't checked at the moment until Generate / Play is pressed. Consider doing a check on hide as well. */ QList< dyncontrol_ptr > allcontrols = m_controls; QString sentence = "Songs "; - + /// 1. Collect all artist filters /// 2. Get the sorted by filter if it exists. - QList< dyncontrol_ptr > artists; + QList< dyncontrol_ptr > artists; dyncontrol_ptr sorting; foreach( const dyncontrol_ptr& control, allcontrols ) { if( control->selectedType() == "Artist" || control->selectedType() == "Artist Description" ) @@ -337,7 +337,7 @@ EchonestGenerator::sentenceSummary() } if( !sorting.isNull() ) allcontrols.removeAll( sorting ); - + /// Skip empty artists QList< dyncontrol_ptr > empty; foreach( const dyncontrol_ptr& artist, artists ) { @@ -349,20 +349,20 @@ EchonestGenerator::sentenceSummary() artists.removeAll( toremove ); allcontrols.removeAll( toremove ); } - + /// If there are no artists and no filters, show some help text if( artists.isEmpty() && allcontrols.isEmpty() ) sentence = "No configured filters!"; - - /// Do the assembling. Start with the artists if there are any, then do all the rest. + + /// Do the assembling. Start with the artists if there are any, then do all the rest. for( int i = 0; i < artists.size(); i++ ) { dyncontrol_ptr artist = artists.value( i ); allcontrols.removeAll( artist ); // remove from pool while we're here - + /// Collapse artist lists QString center, suffix; QString summary = artist.dynamicCast< EchonestControl >()->summary(); - + if( i == 0 ) { // if it's the first.. special casez center = summary.remove( "~" ); if( artists.size() == 2 ) // special case for 2, no comma. ( X and Y ) @@ -399,12 +399,12 @@ EchonestGenerator::sentenceSummary() sentence += prefix + allcontrols.value( i ).dynamicCast< EchonestControl >()->summary() + suffix; } qDebug() << "Got artists and contents:" << sentence; - + if( !sorting.isNull() ) { sentence += "and " + sorting.dynamicCast< EchonestControl >()->summary() + "."; } qDebug() << "Got full summary:" << sentence; - + return sentence; } diff --git a/src/libtomahawk/utils/tomahawkutils.cpp b/src/libtomahawk/utils/tomahawkutils.cpp index 48b92af31..ad989557b 100644 --- a/src/libtomahawk/utils/tomahawkutils.cpp +++ b/src/libtomahawk/utils/tomahawkutils.cpp @@ -349,7 +349,7 @@ nam() { if ( s_nam.isNull() ) return 0; - + return s_nam.data(); } @@ -373,7 +373,7 @@ setProxy( QNetworkProxy* proxy ) { s_proxy = proxy; s_nam.data()->setProxy( *proxy ); - qDebug() << Q_FUNC_INFO << " setting proxy to use proxy DNS? " << (TomahawkSettings::instance()->proxyDns() ? "true" : "false"); + qDebug() << Q_FUNC_INFO << "setting proxy to use proxy DNS?" << (TomahawkSettings::instance()->proxyDns() ? "true" : "false"); if ( !TomahawkSettings::instance()->proxyDns() ) s_proxy->setCapabilities( QNetworkProxy::TunnelingCapability | QNetworkProxy::ListeningCapability | QNetworkProxy::UdpTunnelingCapability ); } @@ -410,8 +410,7 @@ DNSResolver::resolve( QString &host, QString type ) // For the moment, assume we are looking for XMPP... QString fullHost( "_xmpp-client._tcp." + host ); - qDebug() << "Looking up SRV record for " << fullHost.toUtf8(); - + qDebug() << "Looking up SRV record for" << fullHost.toUtf8(); m_dnsSharedRequest->query( fullHost.toUtf8(), QJDns::Srv ); } else @@ -429,7 +428,7 @@ DNSResolver::resultsReady() QList<QJDns::Record> results = m_dnsSharedRequest->results(); foreach( QJDns::Record r, results ) { - qDebug() << "Found result (of some type): " << QString( r.name ); + qDebug() << "Found result (of some type):" << QString( r.name ); if( r.type == QJDns::Srv ) { QString foundResult( r.name ); @@ -438,7 +437,7 @@ DNSResolver::resultsReady() } } } - qDebug() << "DNS resolve request was NOT successful! Error: " << (int)(m_dnsSharedRequest->error()); + qDebug() << "DNS resolve request was NOT successful! Error:" << (int)(m_dnsSharedRequest->error()); QString badResult( "NONE" ); emit result( badResult ); } diff --git a/src/sourcetree/items/collectionitem.cpp b/src/sourcetree/items/collectionitem.cpp index 97d7a7f42..a559fbc83 100644 --- a/src/sourcetree/items/collectionitem.cpp +++ b/src/sourcetree/items/collectionitem.cpp @@ -178,7 +178,7 @@ CollectionItem::playlistsDeletedInternal( SourceTreeItem* parent, const QList< T void CollectionItem::onPlaylistsAdded( const QList< playlist_ptr >& playlists ) { - qDebug() << Q_FUNC_INFO << m_source->friendlyName() << playlists.count(); +// qDebug() << Q_FUNC_INFO << m_source->friendlyName() << playlists.count(); if( playlists.isEmpty() ) return;