mirror of
https://github.com/strawberrymusicplayer/strawberry
synced 2025-01-30 00:55:33 +01:00
Set source in backends to fix losing source in InitFromFilePartial()
when updating path
This commit is contained in:
parent
9105b7615c
commit
ba314dd734
@ -55,7 +55,7 @@ SCollection::SCollection(Application *app, QObject *parent)
|
|||||||
backend_ = new CollectionBackend();
|
backend_ = new CollectionBackend();
|
||||||
backend()->moveToThread(app->database()->thread());
|
backend()->moveToThread(app->database()->thread());
|
||||||
|
|
||||||
backend_->Init(app->database(), kSongsTable, kDirsTable, kSubdirsTable, kFtsTable);
|
backend_->Init(app->database(), Song::Source_Collection, kSongsTable, kDirsTable, kSubdirsTable, kFtsTable);
|
||||||
|
|
||||||
model_ = new CollectionModel(backend_, app_, this);
|
model_ = new CollectionModel(backend_, app_, this);
|
||||||
|
|
||||||
|
@ -53,8 +53,9 @@ CollectionBackend::CollectionBackend(QObject *parent) :
|
|||||||
CollectionBackendInterface(parent),
|
CollectionBackendInterface(parent),
|
||||||
db_(nullptr) {}
|
db_(nullptr) {}
|
||||||
|
|
||||||
void CollectionBackend::Init(Database *db, const QString &songs_table, const QString &dirs_table, const QString &subdirs_table, const QString &fts_table) {
|
void CollectionBackend::Init(Database *db, const Song::Source source, const QString &songs_table, const QString &dirs_table, const QString &subdirs_table, const QString &fts_table) {
|
||||||
db_ = db;
|
db_ = db;
|
||||||
|
source_ = source;
|
||||||
songs_table_ = songs_table;
|
songs_table_ = songs_table;
|
||||||
dirs_table_ = dirs_table;
|
dirs_table_ = dirs_table;
|
||||||
subdirs_table_ = subdirs_table;
|
subdirs_table_ = subdirs_table;
|
||||||
@ -328,6 +329,7 @@ void CollectionBackend::SongPathChanged(const Song &song, const QFileInfo &new_f
|
|||||||
// Take a song and update its path
|
// Take a song and update its path
|
||||||
Song updated_song = song;
|
Song updated_song = song;
|
||||||
updated_song.InitFromFilePartial(new_file.absoluteFilePath());
|
updated_song.InitFromFilePartial(new_file.absoluteFilePath());
|
||||||
|
updated_song.set_source(source_);
|
||||||
SongList updated_songs;
|
SongList updated_songs;
|
||||||
updated_songs << updated_song;
|
updated_songs << updated_song;
|
||||||
AddOrUpdateSongs(updated_songs);
|
AddOrUpdateSongs(updated_songs);
|
||||||
|
@ -123,7 +123,7 @@ class CollectionBackend : public CollectionBackendInterface {
|
|||||||
static const char *kSettingsGroup;
|
static const char *kSettingsGroup;
|
||||||
|
|
||||||
Q_INVOKABLE CollectionBackend(QObject *parent = nullptr);
|
Q_INVOKABLE CollectionBackend(QObject *parent = nullptr);
|
||||||
void Init(Database *db, const QString &songs_table, const QString &dirs_table, const QString &subdirs_table, const QString &fts_table);
|
void Init(Database *db, const Song::Source source, const QString &songs_table, const QString &dirs_table, const QString &subdirs_table, const QString &fts_table);
|
||||||
|
|
||||||
Database *db() const { return db_; }
|
Database *db() const { return db_; }
|
||||||
|
|
||||||
@ -238,6 +238,7 @@ signals:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Database *db_;
|
Database *db_;
|
||||||
|
Song::Source source_;
|
||||||
QString songs_table_;
|
QString songs_table_;
|
||||||
QString dirs_table_;
|
QString dirs_table_;
|
||||||
QString subdirs_table_;
|
QString subdirs_table_;
|
||||||
|
@ -357,7 +357,7 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const Subdirectory
|
|||||||
// associated cue
|
// associated cue
|
||||||
QString matching_cue = NoExtensionPart(file) + ".cue";
|
QString matching_cue = NoExtensionPart(file) + ".cue";
|
||||||
|
|
||||||
Song matching_song;
|
Song matching_song(source_);
|
||||||
if (FindSongByPath(songs_in_db, file, &matching_song)) {
|
if (FindSongByPath(songs_in_db, file, &matching_song)) {
|
||||||
uint matching_cue_mtime = GetMtimeForCue(matching_cue);
|
uint matching_cue_mtime = GetMtimeForCue(matching_cue);
|
||||||
|
|
||||||
@ -553,6 +553,7 @@ SongList CollectionWatcher::ScanNewFile(const QString &file, const QString &path
|
|||||||
Song song(source_);
|
Song song(source_);
|
||||||
TagReaderClient::Instance()->ReadFileBlocking(file, &song);
|
TagReaderClient::Instance()->ReadFileBlocking(file, &song);
|
||||||
if (song.is_valid()) {
|
if (song.is_valid()) {
|
||||||
|
song.set_source(source_);
|
||||||
song_list << song;
|
song_list << song;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,7 @@ ConnectedDevice::ConnectedDevice(const QUrl &url, DeviceLister *lister, const QS
|
|||||||
connect(backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(BackendTotalSongCountUpdated(int)));
|
connect(backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(BackendTotalSongCountUpdated(int)));
|
||||||
|
|
||||||
backend_->Init(app_->database(),
|
backend_->Init(app_->database(),
|
||||||
|
Song::Source_Device,
|
||||||
QString("device_%1_songs").arg(database_id),
|
QString("device_%1_songs").arg(database_id),
|
||||||
QString("device_%1_directories").arg(database_id),
|
QString("device_%1_directories").arg(database_id),
|
||||||
QString("device_%1_subdirectories").arg(database_id),
|
QString("device_%1_subdirectories").arg(database_id),
|
||||||
|
@ -110,15 +110,15 @@ QobuzService::QobuzService(Application *app, QObject *parent)
|
|||||||
|
|
||||||
artists_collection_backend_ = new CollectionBackend();
|
artists_collection_backend_ = new CollectionBackend();
|
||||||
artists_collection_backend_->moveToThread(app_->database()->thread());
|
artists_collection_backend_->moveToThread(app_->database()->thread());
|
||||||
artists_collection_backend_->Init(app_->database(), kArtistsSongsTable, QString(), QString(), kArtistsSongsFtsTable);
|
artists_collection_backend_->Init(app_->database(), Song::Source_Qobuz, kArtistsSongsTable, QString(), QString(), kArtistsSongsFtsTable);
|
||||||
|
|
||||||
albums_collection_backend_ = new CollectionBackend();
|
albums_collection_backend_ = new CollectionBackend();
|
||||||
albums_collection_backend_->moveToThread(app_->database()->thread());
|
albums_collection_backend_->moveToThread(app_->database()->thread());
|
||||||
albums_collection_backend_->Init(app_->database(), kAlbumsSongsTable, QString(), QString(), kAlbumsSongsFtsTable);
|
albums_collection_backend_->Init(app_->database(), Song::Source_Qobuz, kAlbumsSongsTable, QString(), QString(), kAlbumsSongsFtsTable);
|
||||||
|
|
||||||
songs_collection_backend_ = new CollectionBackend();
|
songs_collection_backend_ = new CollectionBackend();
|
||||||
songs_collection_backend_->moveToThread(app_->database()->thread());
|
songs_collection_backend_->moveToThread(app_->database()->thread());
|
||||||
songs_collection_backend_->Init(app_->database(), kSongsTable, QString(), QString(), kSongsFtsTable);
|
songs_collection_backend_->Init(app_->database(), Song::Source_Qobuz, kSongsTable, QString(), QString(), kSongsFtsTable);
|
||||||
|
|
||||||
artists_collection_model_ = new CollectionModel(artists_collection_backend_, app_, this);
|
artists_collection_model_ = new CollectionModel(artists_collection_backend_, app_, this);
|
||||||
albums_collection_model_ = new CollectionModel(albums_collection_backend_, app_, this);
|
albums_collection_model_ = new CollectionModel(albums_collection_backend_, app_, this);
|
||||||
|
@ -79,7 +79,7 @@ SubsonicService::SubsonicService(Application *app, QObject *parent)
|
|||||||
|
|
||||||
collection_backend_ = new CollectionBackend();
|
collection_backend_ = new CollectionBackend();
|
||||||
collection_backend_->moveToThread(app_->database()->thread());
|
collection_backend_->moveToThread(app_->database()->thread());
|
||||||
collection_backend_->Init(app_->database(), kSongsTable, QString(), QString(), kSongsFtsTable);
|
collection_backend_->Init(app_->database(), Song::Source_Subsonic, kSongsTable, QString(), QString(), kSongsFtsTable);
|
||||||
|
|
||||||
// Model
|
// Model
|
||||||
|
|
||||||
|
@ -116,15 +116,15 @@ TidalService::TidalService(Application *app, QObject *parent)
|
|||||||
|
|
||||||
artists_collection_backend_ = new CollectionBackend();
|
artists_collection_backend_ = new CollectionBackend();
|
||||||
artists_collection_backend_->moveToThread(app_->database()->thread());
|
artists_collection_backend_->moveToThread(app_->database()->thread());
|
||||||
artists_collection_backend_->Init(app_->database(), kArtistsSongsTable, QString(), QString(), kArtistsSongsFtsTable);
|
artists_collection_backend_->Init(app_->database(), Song::Source_Tidal, kArtistsSongsTable, QString(), QString(), kArtistsSongsFtsTable);
|
||||||
|
|
||||||
albums_collection_backend_ = new CollectionBackend();
|
albums_collection_backend_ = new CollectionBackend();
|
||||||
albums_collection_backend_->moveToThread(app_->database()->thread());
|
albums_collection_backend_->moveToThread(app_->database()->thread());
|
||||||
albums_collection_backend_->Init(app_->database(), kAlbumsSongsTable, QString(), QString(), kAlbumsSongsFtsTable);
|
albums_collection_backend_->Init(app_->database(), Song::Source_Tidal, kAlbumsSongsTable, QString(), QString(), kAlbumsSongsFtsTable);
|
||||||
|
|
||||||
songs_collection_backend_ = new CollectionBackend();
|
songs_collection_backend_ = new CollectionBackend();
|
||||||
songs_collection_backend_->moveToThread(app_->database()->thread());
|
songs_collection_backend_->moveToThread(app_->database()->thread());
|
||||||
songs_collection_backend_->Init(app_->database(), kSongsTable, QString(), QString(), kSongsFtsTable);
|
songs_collection_backend_->Init(app_->database(), Song::Source_Tidal, kSongsTable, QString(), QString(), kSongsFtsTable);
|
||||||
|
|
||||||
artists_collection_model_ = new CollectionModel(artists_collection_backend_, app_, this);
|
artists_collection_model_ = new CollectionModel(artists_collection_backend_, app_, this);
|
||||||
albums_collection_model_ = new CollectionModel(albums_collection_backend_, app_, this);
|
albums_collection_model_ = new CollectionModel(albums_collection_backend_, app_, this);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user