From c03e31a26a8fd1e1c1c9863ea9486e2347f5b7e9 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 14 Mar 2022 14:06:29 +0100 Subject: [PATCH] work on man. sort, now can move bottom/top for feed --- src/librssguard/core/feedsmodel.h | 2 +- src/librssguard/database/databasequeries.cpp | 2 +- src/librssguard/gui/dialogs/formmain.cpp | 4 ++++ src/librssguard/gui/feedsview.cpp | 10 ++++++++++ src/librssguard/gui/feedsview.h | 2 ++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/librssguard/core/feedsmodel.h b/src/librssguard/core/feedsmodel.h index 0b55473c9..a3e2abad0 100644 --- a/src/librssguard/core/feedsmodel.h +++ b/src/librssguard/core/feedsmodel.h @@ -107,7 +107,7 @@ class RSSGUARD_DLLSPEC FeedsModel : public QAbstractItemModel { bool restoreAllBins(); bool emptyAllBins(); - void changeSortOrder(RootItem* item, bool move_top, bool move_bottom, int new_sort_order); + void changeSortOrder(RootItem* item, bool move_top, bool move_bottom, int new_sort_order = {}); // Feeds operations. bool markItemRead(RootItem* item, RootItem::ReadStatus read); diff --git a/src/librssguard/database/databasequeries.cpp b/src/librssguard/database/databasequeries.cpp index df5d59e4a..4176de2fe 100644 --- a/src/librssguard/database/databasequeries.cpp +++ b/src/librssguard/database/databasequeries.cpp @@ -2166,7 +2166,7 @@ void DatabaseQueries::moveFeed(Feed* feed, bool move_top, bool move_bottom, int return it->kind() == RootItem::Kind::Feed ? it->sortOrder() : 0; }).max(); - if (feed->sortOrder() == move_index || /* Item is already sorted OK. */ + if ((!move_top && !move_bottom && feed->sortOrder() == move_index) || /* Item is already sorted OK. */ (!move_top && !move_bottom && move_index < 0 ) || /* Order cannot be smaller than 0 if we do not move to begin/end. */ (!move_top && !move_bottom && move_index > max_sort_order ) || /* Cannot move past biggest sort order. */ (move_top && feed->sortOrder() == 0) || /* Item is already on top. */ diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index 5705f11d4..7a155cd8f 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -901,6 +901,10 @@ void FormMain::createConnections() { tabWidget()->feedMessageViewer()->feedsView(), &FeedsView::moveSelectedItemUp); connect(m_ui->m_actionFeedMoveDown, &QAction::triggered, tabWidget()->feedMessageViewer()->feedsView(), &FeedsView::moveSelectedItemDown); + connect(m_ui->m_actionFeedMoveTop, &QAction::triggered, + tabWidget()->feedMessageViewer()->feedsView(), &FeedsView::moveSelectedItemTop); + connect(m_ui->m_actionFeedMoveBottom, &QAction::triggered, + tabWidget()->feedMessageViewer()->feedsView(), &FeedsView::moveSelectedItemBottom); } void FormMain::backupDatabaseSettings() { diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index 577ce0dcc..cecf8b43e 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -293,6 +293,16 @@ void FeedsView::moveSelectedItemUp() { m_proxyModel->invalidate(); } +void FeedsView::moveSelectedItemTop() { + m_sourceModel->changeSortOrder(selectedItem(), true, false); + m_proxyModel->invalidate(); +} + +void FeedsView::moveSelectedItemBottom() { + m_sourceModel->changeSortOrder(selectedItem(), false, true); + m_proxyModel->invalidate(); +} + void FeedsView::moveSelectedItemDown() { m_sourceModel->changeSortOrder(selectedItem(), false, false, selectedItem()->sortOrder() + 1); m_proxyModel->invalidate(); diff --git a/src/librssguard/gui/feedsview.h b/src/librssguard/gui/feedsview.h index b80701245..a8f6f7f46 100644 --- a/src/librssguard/gui/feedsview.h +++ b/src/librssguard/gui/feedsview.h @@ -68,6 +68,8 @@ class RSSGUARD_DLLSPEC FeedsView : public BaseTreeView { // Sort order manipulations. void moveSelectedItemUp(); + void moveSelectedItemTop(); + void moveSelectedItemBottom(); void moveSelectedItemDown(); // Selects next/previous item (feed/category) in the list.