Make pausing and resuming library scans come from the task manager, not the organiser.

This commit is contained in:
David Sansome 2010-06-24 22:59:29 +00:00
parent dbe51d2cf5
commit e1e8866424
33 changed files with 68 additions and 42 deletions

View File

@ -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()));

View File

@ -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();
}

View File

@ -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_;

View File

@ -984,7 +984,7 @@ msgstr "خيارات"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -988,7 +988,7 @@ msgstr "Možnosti"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -989,7 +989,7 @@ msgstr "Indstillinger"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -992,7 +992,7 @@ msgstr "Einstellungen"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -993,7 +993,7 @@ msgstr "Επιλογές"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -989,7 +989,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -986,7 +986,7 @@ msgstr "Options"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -997,7 +997,7 @@ msgstr "Opciones"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -984,7 +984,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -992,7 +992,7 @@ msgstr "Options"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -986,7 +986,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -995,7 +995,7 @@ msgstr "Opzioni"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -986,7 +986,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -987,7 +987,7 @@ msgstr "Instillinger"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -984,7 +984,7 @@ msgstr "Opcions"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -986,7 +986,7 @@ msgstr "Opcje"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -991,7 +991,7 @@ msgstr "Opções"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -993,7 +993,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -985,7 +985,7 @@ msgstr "Opțiuni"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -990,7 +990,7 @@ msgstr "Настройки"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -991,7 +991,7 @@ msgstr "Možnosti"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -989,7 +989,7 @@ msgstr "Flaggor"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -986,7 +986,7 @@ msgstr "Seçenekler"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -975,7 +975,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -991,7 +991,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -984,7 +984,7 @@ msgstr "选项"
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -984,7 +984,7 @@ msgstr ""
msgid "Organise Files"
msgstr ""
msgid "Organise songs..."
msgid "Organise files..."
msgstr ""
msgid "Organising files"

View File

@ -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(

View File

@ -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();

View File

@ -52,10 +52,6 @@ public:
public slots:
void accept();
signals:
void PauseLibraryScanning();
void ResumeLibraryScanning();
protected:
void showEvent(QShowEvent *);