diff --git a/src/collection/collectionbackend.cpp b/src/collection/collectionbackend.cpp index fa42d0e61..03a4355f4 100644 --- a/src/collection/collectionbackend.cpp +++ b/src/collection/collectionbackend.cpp @@ -1801,6 +1801,12 @@ void CollectionBackend::ResetStatistics(const int id) { } +void CollectionBackend::DeleteAllAsync() { + + QMetaObject::invokeMethod(this, "DeleteAll", Qt::QueuedConnection); + +} + void CollectionBackend::DeleteAll() { { diff --git a/src/collection/collectionbackend.h b/src/collection/collectionbackend.h index e64a69588..b6b4ff674 100644 --- a/src/collection/collectionbackend.h +++ b/src/collection/collectionbackend.h @@ -197,7 +197,7 @@ class CollectionBackend : public CollectionBackendInterface { void IncrementSkipCountAsync(const int id, const float progress); void ResetStatisticsAsync(const int id); - void DeleteAll(); + void DeleteAllAsync(); Song GetSongBySongId(const QString &song_id); SongList GetSongsBySongId(const QStringList &song_ids); @@ -234,6 +234,7 @@ class CollectionBackend : public CollectionBackendInterface { void IncrementPlayCount(const int id); void IncrementSkipCount(const int id, const float progress); void ResetStatistics(const int id); + void DeleteAll(); void SongPathChanged(const Song &song, const QFileInfo &new_file, const std::optional new_collection_directory_id); SongList GetSongsBy(const QString &artist, const QString &album, const QString &title); diff --git a/src/settings/subsonicsettingspage.cpp b/src/settings/subsonicsettingspage.cpp index 6dbe7e292..122d2a1bf 100644 --- a/src/settings/subsonicsettingspage.cpp +++ b/src/settings/subsonicsettingspage.cpp @@ -50,6 +50,7 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog, QWidget *pare setWindowIcon(IconLoader::Load("subsonic")); QObject::connect(ui_->button_test, &QPushButton::clicked, this, &SubsonicSettingsPage::TestClicked); + QObject::connect(ui_->button_deletesongs, &QPushButton::clicked, service_, &SubsonicService::DeleteSongs); QObject::connect(this, &SubsonicSettingsPage::Test, service_, &SubsonicService::SendPingWithCredentials); diff --git a/src/settings/subsonicsettingspage.ui b/src/settings/subsonicsettingspage.ui index eb6c8883b..3347bcf08 100644 --- a/src/settings/subsonicsettingspage.ui +++ b/src/settings/subsonicsettingspage.ui @@ -7,7 +7,7 @@ 0 0 460 - 644 + 749 @@ -144,13 +144,6 @@ - - - - Test - - - @@ -188,6 +181,42 @@ + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Test + + + + + + + Delete songs + + + + + + @@ -244,7 +273,6 @@ server_url username password - button_test checkbox_verify_certificate checkbox_download_album_covers diff --git a/src/subsonic/subsonicservice.cpp b/src/subsonic/subsonicservice.cpp index 4c65de24a..5f4ccc75a 100644 --- a/src/subsonic/subsonicservice.cpp +++ b/src/subsonic/subsonicservice.cpp @@ -446,6 +446,12 @@ void SubsonicService::GetSongs() { } +void SubsonicService::DeleteSongs() { + + collection_backend_->DeleteAllAsync(); + +} + void SubsonicService::SongsResultsReceived(const SongMap &songs, const QString &error) { emit SongsResults(songs, error); diff --git a/src/subsonic/subsonicservice.h b/src/subsonic/subsonicservice.h index ce630a937..84556a398 100644 --- a/src/subsonic/subsonicservice.h +++ b/src/subsonic/subsonicservice.h @@ -92,6 +92,7 @@ class SubsonicService : public InternetService { void SendPing(); void SendPingWithCredentials(QUrl url, const QString &username, const QString &password, const SubsonicSettingsPage::AuthMethod auth_method, const bool redirect = false); void GetSongs() override; + void DeleteSongs(); void ResetSongsRequest() override; private slots: