1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-04-22 08:52:12 +02:00

TWK-401: Only update source stats after addfiles dbcmd is finished, instead of playing a race condition game. Also, refresh recent albums on stats change

This commit is contained in:
Leo Franchi 2011-08-19 16:54:37 -04:00
parent 498d7052de
commit 6521198127
4 changed files with 19 additions and 8 deletions

@ -27,6 +27,7 @@
#include "databasecommand_collectionstats.h"
#include "databaseimpl.h"
#include "network/controlconnection.h"
#include "sourcelist.h"
#include "utils/logger.h"
@ -72,7 +73,15 @@ DatabaseCommand_AddFiles::postCommitHook()
emit notify( m_queries );
if( source()->isLocal() )
{
Servent::instance()->triggerDBSync();
// Re-calculate local db stats
DatabaseCommand_CollectionStats* cmd = new DatabaseCommand_CollectionStats( SourceList::instance()->getLocal() );
connect( cmd, SIGNAL( done( QVariantMap ) ),
SourceList::instance()->getLocal().data(), SLOT( setStats( QVariantMap ) ), Qt::QueuedConnection );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
}
}

@ -108,6 +108,15 @@ void
WelcomeWidget::updateRecentTracks()
{
m_tracksModel->loadHistory( Tomahawk::source_ptr(), HISTORY_TRACK_ITEMS );
connect( SourceList::instance()->getLocal().data(), SIGNAL( stats( QVariantMap ) ), this, SLOT( updateRecentAdditions() ) );
}
void
WelcomeWidget::updateRecentAdditions()
{
m_recentAlbumsModel->clear();
m_recentAlbumsModel->addFilteredCollection( collection_ptr(), 20, DatabaseCommand_AllAlbums::ModificationTime );
}

@ -103,6 +103,7 @@ signals:
public slots:
void updateRecentTracks();
void updatePlaylists();
void updateRecentAdditions();
private slots:
void onSourceAdded( const Tomahawk::source_ptr& source );

@ -283,14 +283,6 @@ MusicScanner::listerFinished( const QMap<QString, unsigned int>& newmtimes )
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
}
// re-calculate source stats
{
DatabaseCommand_CollectionStats* cmd = new DatabaseCommand_CollectionStats( SourceList::instance()->getLocal() );
connect( cmd, SIGNAL( done( QVariantMap ) ),
SourceList::instance()->getLocal().data(), SLOT( setStats( QVariantMap ) ), Qt::QueuedConnection );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
}
if ( !m_dirLister.isNull() )
{
m_dirListerThreadController->quit();;