@@ -75,17 +75,17 @@ TrackCollectionManager::TrackCollectionManager(QObject* parent,
7575 } else {
7676 m_pScanner = std::make_unique<LibraryScanner>(pDbConnectionPool, pConfig);
7777
78+ connect (m_pScanner.get (),
79+ &LibraryScanner::scanFinished,
80+ this ,
81+ &TrackCollectionManager::slotScanFinished);
82+
7883 // Forward signals
7984 connect (m_pScanner.get (),
8085 &LibraryScanner::scanStarted,
8186 this ,
8287 &TrackCollectionManager::libraryScanStarted,
8388 /* signal-to-signal*/ Qt::DirectConnection);
84- connect (m_pScanner.get (),
85- &LibraryScanner::scanFinished,
86- this ,
87- &TrackCollectionManager::libraryScanFinished,
88- /* signal-to-signal*/ Qt::DirectConnection);
8989 connect (m_pScanner.get (),
9090 &LibraryScanner::scanSummary,
9191 this ,
@@ -644,21 +644,26 @@ bool TrackCollectionManager::updateTrackMood(
644644}
645645#endif // __EXTRA_METADATA__
646646
647- void TrackCollectionManager::slotIncomingDirectoryChanged (const QString& path ) {
647+ void TrackCollectionManager::slotIncomingDirectoryChanged () {
648648 VERIFY_OR_DEBUG_ASSERT (m_pScanner) {
649649 return ;
650650 }
651651
652- if (path.isEmpty () || !m_pScanner->isIdle ()) {
652+ QStringList dirs = m_incommingDirWatcher.directories ();
653+ if (dirs.isEmpty ()) {
654+ return ;
655+ }
656+ if (!m_pScanner->isIdle ()) {
657+ m_incommingDirChangePending = true ;
653658 return ;
654659 }
655660
656- auto fi = QFileInfo (path );
661+ auto fi = QFileInfo (dirs. first () );
657662 const QString absPath = fi.absoluteFilePath ();
658663
659664 kLogger .info () << " Incoming directory changed, starting scan for:" << absPath;
660665
661- m_pScanner->scanDir (path );
666+ m_pScanner->scanDir (absPath );
662667}
663668
664669void TrackCollectionManager::initIncommingDirWatcher (const QString& incommingTracksDir) {
@@ -680,10 +685,17 @@ void TrackCollectionManager::initIncommingDirWatcher(const QString& incommingTra
680685 << incomingDirPath;
681686 } else {
682687 kLogger .info () << " Watching incoming tracks directory" << incomingDirPath;
688+ m_incommingDirTimer.setSingleShot (true );
689+ connect (&m_incommingDirTimer,
690+ &QTimer::timeout,
691+ this ,
692+ &TrackCollectionManager::slotIncomingDirectoryChanged);
683693 connect (&m_incommingDirWatcher,
684694 &QFileSystemWatcher::directoryChanged,
685695 this ,
686- &TrackCollectionManager::slotIncomingDirectoryChanged);
696+ [this ]() {
697+ m_incommingDirTimer.start (2000 );
698+ });
687699 }
688700}
689701
0 commit comments