void ScanManager::runDirScan() { qDebug() << Q_FUNC_INFO; if ( !Database::instance() || ( Database::instance() && !Database::instance()->isReady() ) ) return; QStringList paths = TomahawkSettings::instance()->scannerPaths(); if ( !m_musicScannerThreadController && m_scanner.isNull() ) //still running if these are not zero { m_scanTimer->stop(); m_musicScannerThreadController = new QThread( this ); m_scanner = QWeakPointer< MusicScanner>( new MusicScanner( paths ) ); m_scanner.data()->moveToThread( m_musicScannerThreadController ); connect( m_scanner.data(), SIGNAL( finished() ), SLOT( scannerFinished() ) ); m_musicScannerThreadController->start( QThread::IdlePriority ); QMetaObject::invokeMethod( m_scanner.data(), "startScan" ); } else { qDebug() << "Could not run dir scan, old scan still running"; return; } }
void ScanManager::runManualScan( const QStringList& paths, bool recursive ) { qDebug() << Q_FUNC_INFO; if( !Database::instance() || ( Database::instance() && !Database::instance()->isReady() ) ) return; if ( !m_musicScannerThreadController && m_scanner.isNull() ) //still running if these are not zero { m_musicScannerThreadController = new QThread( this ); QStringList allPaths = paths; foreach( QString path, m_deferredDirs[recursive] ) { if( !allPaths.contains( path ) ) allPaths << path; } m_scanner = QWeakPointer< MusicScanner>( new MusicScanner( paths, recursive ) ); m_scanner.data()->moveToThread( m_musicScannerThreadController ); connect( m_scanner.data(), SIGNAL( finished() ), SLOT( scannerFinished() ) ); connect( m_scanner.data(), SIGNAL( addWatchedDirs( const QStringList & ) ), SLOT( addWatchedDirs( const QStringList & ) ) ); connect( m_scanner.data(), SIGNAL( removeWatchedDir( const QString & ) ), SLOT( removeWatchedDir( const QString & ) ) ); m_musicScannerThreadController->start( QThread::IdlePriority ); QMetaObject::invokeMethod( m_scanner.data(), "startScan" ); m_deferredDirs[recursive].clear(); }
void ScanManager::filesDeleted() { if ( !TomahawkSettings::instance()->scannerPaths().isEmpty() ) runDirScan(); else scannerFinished(); }