Notify collection backend about renamed files when organising files

This commit is contained in:
Jonas Kvinge
2019-03-25 00:53:12 +01:00
parent fc1a2dac90
commit 15c8f2a3ee
9 changed files with 34 additions and 7 deletions

View File

@@ -216,6 +216,12 @@ void Organise::ProcessSomeFiles() {
files_with_errors_ << task.song_info_.song_.basefilename();
}
else {
if (job.remove_original_) {
// Notify other aspects of system that song has been invalidated
QString root = destination_->LocalPath();
QFileInfo new_file = QFileInfo(root + "/" + task.song_info_.new_filename_);
emit SongPathChanged(song, new_file);
}
if (job.mark_as_listened_) {
emit FileCopied(job.metadata_.id());
}

View File

@@ -30,6 +30,7 @@
#include <QObject>
#include <QThread>
#include <QBasicTimer>
#include <QFileInfo>
#include <QList>
#include <QVector>
#include <QMap>
@@ -72,6 +73,7 @@ class Organise : public QObject {
signals:
void Finished(const QStringList &files_with_errors, QStringList);
void FileCopied(int database_id);
void SongPathChanged(const Song &song, const QFileInfo &new_file);
protected:
void timerEvent(QTimerEvent *e);

View File

@@ -60,6 +60,7 @@
#include "core/utilities.h"
#include "widgets/freespacebar.h"
#include "widgets/linetextedit.h"
#include "collection/collectionbackend.h"
#include "organise.h"
#include "organisedialog.h"
#include "organiseerrordialog.h"
@@ -71,10 +72,11 @@ using std::stable_sort;
const char *OrganiseDialog::kDefaultFormat = "%albumartist/%album{ (Disc %disc)}/{%track - }%albumartist - %album - %title.%extension";
const char *OrganiseDialog::kSettingsGroup = "OrganiseDialog";
OrganiseDialog::OrganiseDialog(TaskManager *task_manager, QWidget *parent)
OrganiseDialog::OrganiseDialog(TaskManager *task_manager, CollectionBackend *backend, QWidget *parent)
: QDialog(parent),
ui_(new Ui_OrganiseDialog),
task_manager_(task_manager),
backend_(backend),
total_size_(0) {
ui_->setupUi(this);
@@ -402,6 +404,9 @@ void OrganiseDialog::accept() {
Organise *organise = new Organise(task_manager_, storage, format_, copy, ui_->overwrite->isChecked(), ui_->mark_as_listened->isChecked(), ui_->albumcover->isChecked(), new_songs_info_, ui_->eject_after->isChecked());
connect(organise, SIGNAL(Finished(QStringList, QStringList)), SLOT(OrganiseFinished(QStringList, QStringList)));
connect(organise, SIGNAL(FileCopied(int)), this, SIGNAL(FileCopied(int)));
if (backend_)
connect(organise, SIGNAL(SongPathChanged(const Song&, const QFileInfo&)), backend_, SLOT(SongPathChanged(const Song&, const QFileInfo&)));
organise->Start();
SaveGeometry();

View File

@@ -48,6 +48,7 @@ class QResizeEvent;
class QShowEvent;
class TaskManager;
class CollectionBackend;
class OrganiseErrorDialog;
class Ui_OrganiseDialog;
@@ -55,7 +56,7 @@ class OrganiseDialog : public QDialog {
Q_OBJECT
public:
OrganiseDialog(TaskManager *task_manager, QWidget *parent = nullptr);
OrganiseDialog(TaskManager *task_manager, CollectionBackend *backend = nullptr, QWidget *parent = nullptr);
~OrganiseDialog();
QSize sizeHint() const;
@@ -104,6 +105,7 @@ class OrganiseDialog : public QDialog {
Ui_OrganiseDialog *ui_;
TaskManager *task_manager_;
CollectionBackend *backend_;
OrganiseFormat format_;