From 5f14f2cc82cd6458383755ca4026e54dd76e154f Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 14 Mar 2022 16:10:35 +0100 Subject: [PATCH] make deleting of feeds work with sort order --- src/librssguard/database/databasequeries.cpp | 8 +++++--- src/librssguard/database/databasequeries.h | 2 +- src/librssguard/gui/feedsview.cpp | 2 ++ src/librssguard/services/owncloud/owncloudfeed.cpp | 2 +- src/librssguard/services/standard/standardfeed.cpp | 2 +- src/librssguard/services/tt-rss/ttrssfeed.cpp | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/librssguard/database/databasequeries.cpp b/src/librssguard/database/databasequeries.cpp index 4176de2fe..dd892a9a7 100644 --- a/src/librssguard/database/databasequeries.cpp +++ b/src/librssguard/database/databasequeries.cpp @@ -2112,11 +2112,13 @@ void DatabaseQueries::createOverwriteAccount(const QSqlDatabase& db, ServiceRoot } } -bool DatabaseQueries::deleteFeed(const QSqlDatabase& db, int feed_custom_id, int account_id) { +bool DatabaseQueries::deleteFeed(const QSqlDatabase& db, Feed* feed, int account_id) { + moveItem(feed, false, true, {}, db); + QSqlQuery q(db); q.prepare(QSL("DELETE FROM Messages WHERE feed = :feed AND account_id = :account_id;")); - q.bindValue(QSL(":feed"), feed_custom_id); + q.bindValue(QSL(":feed"), feed->customId()); q.bindValue(QSL(":account_id"), account_id); if (!q.exec()) { @@ -2125,7 +2127,7 @@ bool DatabaseQueries::deleteFeed(const QSqlDatabase& db, int feed_custom_id, int // Remove feed itself. q.prepare(QSL("DELETE FROM Feeds WHERE custom_id = :feed AND account_id = :account_id;")); - q.bindValue(QSL(":feed"), feed_custom_id); + q.bindValue(QSL(":feed"), feed->customId()); q.bindValue(QSL(":account_id"), account_id); return q.exec() && diff --git a/src/librssguard/database/databasequeries.h b/src/librssguard/database/databasequeries.h index ce9455f72..23840db34 100644 --- a/src/librssguard/database/databasequeries.h +++ b/src/librssguard/database/databasequeries.h @@ -124,7 +124,7 @@ class DatabaseQueries { static void storeAccountTree(const QSqlDatabase& db, RootItem* tree_root, int account_id); static void createOverwriteFeed(const QSqlDatabase& db, Feed* feed, int account_id, int parent_id); static void createOverwriteCategory(const QSqlDatabase& db, Category* category, int account_id, int parent_id); - static bool deleteFeed(const QSqlDatabase& db, int feed_custom_id, int account_id); + static bool deleteFeed(const QSqlDatabase& db, Feed* feed, int account_id); static bool deleteCategory(const QSqlDatabase& db, int id); template diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index cecf8b43e..8e11710df 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -270,6 +270,8 @@ void FeedsView::deleteSelectedItem() { // We have deleteable item selected, remove it via GUI. if (!selected_item->deleteViaGui()) { + m_proxyModel->invalidate(); + qApp->showGuiMessage(Notification::Event::GeneralEvent, { tr("Cannot delete \"%1\"").arg(selected_item->title()), tr("This item cannot be deleted because something critically failed. Submit bug report."), diff --git a/src/librssguard/services/owncloud/owncloudfeed.cpp b/src/librssguard/services/owncloud/owncloudfeed.cpp index 28664e9f3..68ffee310 100644 --- a/src/librssguard/services/owncloud/owncloudfeed.cpp +++ b/src/librssguard/services/owncloud/owncloudfeed.cpp @@ -29,7 +29,7 @@ bool OwnCloudFeed::deleteViaGui() { bool OwnCloudFeed::removeItself() { QSqlDatabase database = qApp->database()->driver()->connection(metaObject()->className()); - return DatabaseQueries::deleteFeed(database, customId().toInt(), serviceRoot()->accountId()); + return DatabaseQueries::deleteFeed(database, this, serviceRoot()->accountId()); } OwnCloudServiceRoot* OwnCloudFeed::serviceRoot() const { diff --git a/src/librssguard/services/standard/standardfeed.cpp b/src/librssguard/services/standard/standardfeed.cpp index 0b42f8b9d..1ab40953e 100644 --- a/src/librssguard/services/standard/standardfeed.cpp +++ b/src/librssguard/services/standard/standardfeed.cpp @@ -492,7 +492,7 @@ bool StandardFeed::performDragDropChange(RootItem* target_item) { bool StandardFeed::removeItself() { QSqlDatabase database = qApp->database()->driver()->connection(metaObject()->className()); - return DatabaseQueries::deleteFeed(database, customId().toInt(), getParentServiceRoot()->accountId()); + return DatabaseQueries::deleteFeed(database, this, getParentServiceRoot()->accountId()); } StandardFeed::Type StandardFeed::type() const { diff --git a/src/librssguard/services/tt-rss/ttrssfeed.cpp b/src/librssguard/services/tt-rss/ttrssfeed.cpp index 1afed9766..207d2eec8 100644 --- a/src/librssguard/services/tt-rss/ttrssfeed.cpp +++ b/src/librssguard/services/tt-rss/ttrssfeed.cpp @@ -60,5 +60,5 @@ QList TtRssFeed::contextMenuFeedsList() { bool TtRssFeed::removeItself() { QSqlDatabase database = qApp->database()->driver()->connection(metaObject()->className()); - return DatabaseQueries::deleteFeed(database, customId().toInt(), serviceRoot()->accountId()); + return DatabaseQueries::deleteFeed(database, this, serviceRoot()->accountId()); }