diff --git a/src/libtomahawk/database/databasecommand_addfiles.cpp b/src/libtomahawk/database/databasecommand_addfiles.cpp index d8d1ae2d4..bebf7c72e 100644 --- a/src/libtomahawk/database/databasecommand_addfiles.cpp +++ b/src/libtomahawk/database/databasecommand_addfiles.cpp @@ -214,14 +214,13 @@ DatabaseCommand_AddFiles::exec( DatabaseImpl* dbi ) query->addResults( results ); m_queries << query; - added++; } - qDebug() << "Inserted" << added; + qDebug() << "Inserted" << added << "tracks to database"; // TODO building the index could be a separate job, outside this transaction if ( added ) - dbi->updateSearchIndex(); + source()->updateIndexWhenSynced(); qDebug() << "Committing" << added << "tracks..."; emit done( m_files, source()->collection() ); diff --git a/src/libtomahawk/database/databaseimpl.cpp b/src/libtomahawk/database/databaseimpl.cpp index 8ead28cd3..4a0983783 100644 --- a/src/libtomahawk/database/databaseimpl.cpp +++ b/src/libtomahawk/database/databaseimpl.cpp @@ -131,14 +131,6 @@ DatabaseImpl::loadIndex() } -void -DatabaseImpl::updateSearchIndex() -{ - DatabaseCommand* cmd = new DatabaseCommand_UpdateSearchIndex(); - Database::instance()->enqueue( QSharedPointer( cmd ) ); -} - - bool DatabaseImpl::updateSchema( int oldVersion ) { diff --git a/src/libtomahawk/database/databaseimpl.h b/src/libtomahawk/database/databaseimpl.h index 2e814f8f8..619026327 100644 --- a/src/libtomahawk/database/databaseimpl.h +++ b/src/libtomahawk/database/databaseimpl.h @@ -72,9 +72,6 @@ public: return left.second > right.second; } - // indexes entries from "table" where id >= pkey - void updateSearchIndex(); - QString dbid() const { return m_dbid; } void loadIndex(); diff --git a/src/libtomahawk/source.cpp b/src/libtomahawk/source.cpp index c016a5e8d..62fc8e2b5 100644 --- a/src/libtomahawk/source.cpp +++ b/src/libtomahawk/source.cpp @@ -25,6 +25,7 @@ #include "network/controlconnection.h" #include "database/databasecommand_addsource.h" #include "database/databasecommand_sourceoffline.h" +#include "database/databasecommand_updatesearchindex.h" #include "database/database.h" #include @@ -42,6 +43,7 @@ Source::Source( int id, const QString& username ) , m_online( false ) , m_username( username ) , m_id( id ) + , m_updateIndexWhenSynced( false ) , m_state( DBSyncConnection::UNKNOWN ) , m_cc( 0 ) , m_avatar( 0 ) @@ -235,23 +237,43 @@ Source::onStateChanged( DBSyncConnection::State newstate, DBSyncConnection::Stat switch( newstate ) { case DBSyncConnection::CHECKING: + { msg = tr( "Checking" ); break; + } case DBSyncConnection::FETCHING: + { msg = tr( "Fetching" ); break; + } case DBSyncConnection::PARSING: + { msg = tr( "Parsing" ); break; + } case DBSyncConnection::SAVING: + { msg = tr( "Saving" ); break; + } case DBSyncConnection::SYNCED: + { + if ( m_updateIndexWhenSynced ) + { + m_updateIndexWhenSynced = false; + + DatabaseCommand* cmd = new DatabaseCommand_UpdateSearchIndex(); + Database::instance()->enqueue( QSharedPointer( cmd ) ); + } + msg = QString(); break; + } case DBSyncConnection::SCANNING: + { msg = tr( "Scanning (%L1 tracks)" ).arg( info ); break; + } default: msg = QString(); @@ -332,3 +354,9 @@ Source::reportSocialAttributesChanged( DatabaseCommand_SocialAction* action ) } } + +void +Source::updateIndexWhenSynced() +{ + m_updateIndexWhenSynced = true; +} diff --git a/src/libtomahawk/source.h b/src/libtomahawk/source.h index 84a4ad571..e4f2f8fae 100644 --- a/src/libtomahawk/source.h +++ b/src/libtomahawk/source.h @@ -30,9 +30,10 @@ #include "dllmacro.h" -class DatabaseCommand_LogPlayback; class ControlConnection; +class DatabaseCommand_LogPlayback; class DatabaseCommand_SocialAction; +class DatabaseCommand_UpdateSearchIndex; namespace Tomahawk { @@ -45,6 +46,7 @@ friend class ::DBSyncConnection; friend class ::ControlConnection; friend class ::DatabaseCommand_LogPlayback; friend class ::DatabaseCommand_SocialAction; +friend class ::DatabaseCommand_AddFiles; public: enum AvatarStyle { Original, FancyStyle }; @@ -109,6 +111,7 @@ private slots: void dbLoaded( unsigned int id, const QString& fname ); QString lastCmdGuid() const { return m_lastCmdGuid; } void setLastCmdGuid( const QString& guid ) { m_lastCmdGuid = guid; } + void updateIndexWhenSynced(); void setOffline(); void setOnline(); @@ -131,6 +134,7 @@ private: QString m_friendlyname; int m_id; bool m_scrubFriendlyName; + bool m_updateIndexWhenSynced; Tomahawk::query_ptr m_currentTrack; QString m_textStatus;