Make pausing and resuming library scans come from the task manager, not the organiser.
This commit is contained in:
parent
dbe51d2cf5
commit
e1e8866424
@ -45,6 +45,7 @@ void Organise::Start() {
|
||||
return;
|
||||
|
||||
task_id_ = task_manager_->StartTask(tr("Organising files"));
|
||||
task_manager_->SetTaskBlocksLibraryScans(true);
|
||||
|
||||
thread_ = new QThread;
|
||||
connect(thread_, SIGNAL(started()), SLOT(ProcessSomeFiles()));
|
||||
|
@ -27,6 +27,7 @@ int TaskManager::StartTask(const QString& name) {
|
||||
t.name = name;
|
||||
t.progress = 0;
|
||||
t.progress_max = 0;
|
||||
t.blocks_library_scans = false;
|
||||
|
||||
{
|
||||
QMutexLocker l(&mutex_);
|
||||
@ -49,6 +50,20 @@ QList<TaskManager::Task> TaskManager::GetTasks() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TaskManager::SetTaskBlocksLibraryScans(int id) {
|
||||
{
|
||||
QMutexLocker l(&mutex_);
|
||||
if (!tasks_.contains(id))
|
||||
return;
|
||||
|
||||
Task& t = tasks_[id];
|
||||
t.blocks_library_scans = true;
|
||||
}
|
||||
|
||||
emit TasksChanged();
|
||||
emit PauseLibraryWatchers();
|
||||
}
|
||||
|
||||
void TaskManager::SetTaskProgress(int id, int progress, int max) {
|
||||
{
|
||||
QMutexLocker l(&mutex_);
|
||||
@ -65,11 +80,27 @@ void TaskManager::SetTaskProgress(int id, int progress, int max) {
|
||||
}
|
||||
|
||||
void TaskManager::SetTaskFinished(int id) {
|
||||
bool resume_library_watchers = false;
|
||||
|
||||
{
|
||||
QMutexLocker l(&mutex_);
|
||||
if (!tasks_.contains(id))
|
||||
return;
|
||||
|
||||
if (tasks_[id].blocks_library_scans) {
|
||||
resume_library_watchers = true;
|
||||
foreach (const Task& task, tasks_.values()) {
|
||||
if (task.id != id && task.blocks_library_scans) {
|
||||
resume_library_watchers = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks_.remove(id);
|
||||
}
|
||||
|
||||
emit TasksChanged();
|
||||
if (resume_library_watchers)
|
||||
emit ResumeLibraryWatchers();
|
||||
}
|
||||
|
@ -32,20 +32,23 @@ public:
|
||||
QString name;
|
||||
int progress;
|
||||
int progress_max;
|
||||
bool blocks_library_scans;
|
||||
};
|
||||
|
||||
// Thread-safe
|
||||
int StartTask(const QString& name);
|
||||
// Everything here is thread safe
|
||||
QList<Task> GetTasks();
|
||||
|
||||
public slots:
|
||||
// Thread-safe
|
||||
int StartTask(const QString& name);
|
||||
void SetTaskBlocksLibraryScans(int id);
|
||||
void SetTaskProgress(int id, int progress, int max = 0);
|
||||
void SetTaskFinished(int id);
|
||||
|
||||
signals:
|
||||
void TasksChanged();
|
||||
|
||||
void PauseLibraryWatchers();
|
||||
void ResumeLibraryWatchers();
|
||||
|
||||
private:
|
||||
QMutex mutex_;
|
||||
QMap<int, Task> tasks_;
|
||||
|
@ -984,7 +984,7 @@ msgstr "خيارات"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -988,7 +988,7 @@ msgstr "Možnosti"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -989,7 +989,7 @@ msgstr "Indstillinger"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -992,7 +992,7 @@ msgstr "Einstellungen"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -993,7 +993,7 @@ msgstr "Επιλογές"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -989,7 +989,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -986,7 +986,7 @@ msgstr "Options"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -997,7 +997,7 @@ msgstr "Opciones"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -984,7 +984,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -992,7 +992,7 @@ msgstr "Options"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -986,7 +986,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -995,7 +995,7 @@ msgstr "Opzioni"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -986,7 +986,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -987,7 +987,7 @@ msgstr "Instillinger"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -984,7 +984,7 @@ msgstr "Opcions"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -986,7 +986,7 @@ msgstr "Opcje"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -991,7 +991,7 @@ msgstr "Opções"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -993,7 +993,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -985,7 +985,7 @@ msgstr "Opțiuni"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -990,7 +990,7 @@ msgstr "Настройки"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -991,7 +991,7 @@ msgstr "Možnosti"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -989,7 +989,7 @@ msgstr "Flaggor"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -986,7 +986,7 @@ msgstr "Seçenekler"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -975,7 +975,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -991,7 +991,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -984,7 +984,7 @@ msgstr "选项"
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -984,7 +984,7 @@ msgstr ""
|
||||
msgid "Organise Files"
|
||||
msgstr ""
|
||||
|
||||
msgid "Organise songs..."
|
||||
msgid "Organise files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Organising files"
|
||||
|
@ -342,10 +342,8 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
||||
connect(ui_->library_view, SIGNAL(ShowConfigDialog()), SLOT(ShowLibraryConfig()));
|
||||
connect(library_->model(), SIGNAL(TotalSongCountUpdated(int)), ui_->library_view, SLOT(TotalSongCountUpdated(int)));
|
||||
|
||||
connect(organise_dialog_.get(), SIGNAL(PauseLibraryScanning()),
|
||||
library_, SLOT(PauseWatcher()));
|
||||
connect(organise_dialog_.get(), SIGNAL(ResumeLibraryScanning()),
|
||||
library_, SLOT(ResumeWatcher()));
|
||||
connect(task_manager_, SIGNAL(PauseLibraryWatchers()), library_, SLOT(PauseWatcher()));
|
||||
connect(task_manager_, SIGNAL(ResumeLibraryWatchers()), library_, SLOT(ResumeWatcher()));
|
||||
|
||||
// Library filter widget
|
||||
QAction* library_config_action = new QAction(
|
||||
|
@ -199,9 +199,6 @@ void OrganiseDialog::accept() {
|
||||
Organise* organise = new Organise(
|
||||
task_manager_, ui_->destination->currentText(), format_,
|
||||
!ui_->move->isChecked(), ui_->overwrite->isChecked(), filenames_);
|
||||
|
||||
emit PauseLibraryScanning();
|
||||
connect(organise, SIGNAL(destroyed()), SIGNAL(ResumeLibraryScanning()));
|
||||
organise->Start();
|
||||
|
||||
QDialog::accept();
|
||||
|
@ -52,10 +52,6 @@ public:
|
||||
public slots:
|
||||
void accept();
|
||||
|
||||
signals:
|
||||
void PauseLibraryScanning();
|
||||
void ResumeLibraryScanning();
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent *);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user