From 71dd65aef991b09a6bc6ece62144699432d3d3c4 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 2 Nov 2021 09:32:47 +0100 Subject: [PATCH] fix setting row height in lists of feeds and messages --- .../desktop/com.github.rssguard.appdata.xml | 2 +- src/librssguard/core/feedsmodel.cpp | 11 ++--------- src/librssguard/core/feedsmodel.h | 1 - src/librssguard/core/messagesmodel.cpp | 11 +---------- src/librssguard/core/messagesmodel.h | 1 - src/librssguard/gui/dialogs/formmain.cpp | 4 ++-- src/librssguard/gui/feedsview.cpp | 2 +- src/librssguard/gui/messagesview.cpp | 2 +- .../reusable/styleditemdelegatewithoutfocus.cpp | 17 ++++++++++++++++- .../reusable/styleditemdelegatewithoutfocus.h | 6 +++++- .../gui/settings/settingsfeedsmessages.cpp | 5 ----- src/librssguard/gui/systemtrayicon.cpp | 2 +- src/librssguard/miscellaneous/application.cpp | 2 +- src/librssguard/miscellaneous/application.h | 2 +- src/librssguard/network-web/oauth2service.cpp | 3 ++- .../services/standard/standardcategory.cpp | 2 +- .../services/standard/standardfeed.cpp | 2 +- .../services/standard/standardserviceroot.cpp | 2 +- 18 files changed, 37 insertions(+), 40 deletions(-) diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 90175f9a6..4b3019170 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -26,7 +26,7 @@ https://github.com/sponsors/martinrotter - + none diff --git a/src/librssguard/core/feedsmodel.cpp b/src/librssguard/core/feedsmodel.cpp index 12e163e50..4fc12e2ec 100644 --- a/src/librssguard/core/feedsmodel.cpp +++ b/src/librssguard/core/feedsmodel.cpp @@ -28,7 +28,7 @@ using RootItemPtr = RootItem*; -FeedsModel::FeedsModel(QObject* parent) : QAbstractItemModel(parent), m_itemHeight(-1) { +FeedsModel::FeedsModel(QObject* parent) : QAbstractItemModel(parent) { setObjectName(QSL("FeedsModel")); // Create root item. @@ -120,7 +120,7 @@ bool FeedsModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int qApp->showGuiMessage(Notification::Event::GeneralEvent, { tr("Cannot perform drag & drop operation"), tr("You can't transfer dragged item into different account, this is not supported."), - QSystemTrayIcon::MessageIcon::Warning }); + QSystemTrayIcon::MessageIcon::Critical }); qDebugNN << LOGSEC_FEEDMODEL << "Dragged item cannot be dragged into different account. Cancelling drag-drop action."; return false; @@ -459,13 +459,6 @@ void FeedsModel::setupFonts() { m_normalFont = fon; m_boldFont = m_normalFont; m_boldFont.setBold(true); - - m_itemHeight = qApp->settings()->value(GROUP(GUI), SETTING(GUI::HeightRowFeeds)).toInt(); - - if (m_itemHeight > 0) { - m_boldFont.setPixelSize(int(m_itemHeight * 0.6)); - m_normalFont.setPixelSize(int(m_itemHeight * 0.6)); - } } void FeedsModel::reloadWholeLayout() { diff --git a/src/librssguard/core/feedsmodel.h b/src/librssguard/core/feedsmodel.h index 89a05e908..baedc6a1b 100644 --- a/src/librssguard/core/feedsmodel.h +++ b/src/librssguard/core/feedsmodel.h @@ -148,7 +148,6 @@ class RSSGUARD_DLLSPEC FeedsModel : public QAbstractItemModel { private: RootItem* m_rootItem; - int m_itemHeight; QList m_headerData; QList m_tooltipData; QIcon m_countsIcon; diff --git a/src/librssguard/core/messagesmodel.cpp b/src/librssguard/core/messagesmodel.cpp index c0af1f00f..b9e5920b7 100644 --- a/src/librssguard/core/messagesmodel.cpp +++ b/src/librssguard/core/messagesmodel.cpp @@ -22,7 +22,7 @@ MessagesModel::MessagesModel(QObject* parent) : QSqlQueryModel(parent), m_cache(new MessagesModelCache(this)), m_messageHighlighter(MessageHighlighter::NoHighlighting), - m_customDateFormat(QString()), m_selectedItem(nullptr), m_itemHeight(-1), m_displayFeedIcons(false) { + m_customDateFormat(QString()), m_selectedItem(nullptr), m_displayFeedIcons(false) { setupFonts(); setupIcons(); setupHeaderData(); @@ -119,15 +119,6 @@ void MessagesModel::setupFonts() { m_boldStrikedFont = m_boldFont; m_normalStrikedFont.setStrikeOut(true); m_boldStrikedFont.setStrikeOut(true); - - m_itemHeight = qApp->settings()->value(GROUP(GUI), SETTING(GUI::HeightRowMessages)).toInt(); - - if (m_itemHeight > 0) { - m_boldFont.setPixelSize(int(m_itemHeight * 0.6)); - m_normalFont.setPixelSize(int(m_itemHeight * 0.6)); - m_boldStrikedFont.setPixelSize(int(m_itemHeight * 0.6)); - m_normalStrikedFont.setPixelSize(int(m_itemHeight * 0.6)); - } } void MessagesModel::loadMessages(RootItem* item) { diff --git a/src/librssguard/core/messagesmodel.h b/src/librssguard/core/messagesmodel.h index 2c3b5d938..6653b795f 100644 --- a/src/librssguard/core/messagesmodel.h +++ b/src/librssguard/core/messagesmodel.h @@ -103,7 +103,6 @@ class MessagesModel : public QSqlQueryModel, public MessagesModelSqlLayer { QIcon m_unreadIcon; QIcon m_enclosuresIcon; QList m_scoreIcons; - int m_itemHeight; bool m_displayFeedIcons; }; diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index 9f2f5be11..db0eb48f0 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -122,7 +122,7 @@ void FormMain::showDbCleanupAssistant() { qApp->showGuiMessage(Notification::Event::GeneralEvent, { tr("Cannot cleanup database"), tr("Cannot cleanup database, because another critical action is running."), - QSystemTrayIcon::Warning }); + QSystemTrayIcon::MessageIcon::Warning }); } } @@ -466,7 +466,7 @@ void FormMain::switchVisibility(bool force_hide) { qApp->showGuiMessage(Notification::Event::GeneralEvent, { tr("Close dialogs"), tr("Close opened modal dialogs first."), - QSystemTrayIcon::Warning }); + QSystemTrayIcon::MessageIcon::Warning }); } else { hide(); diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index 264358081..10aa4933c 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -738,7 +738,7 @@ void FeedsView::setupAppearance() { setAllColumnsShowFocus(false); setRootIsDecorated(false); setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); - setItemDelegate(new StyledItemDelegateWithoutFocus(this)); + setItemDelegate(new StyledItemDelegateWithoutFocus(GUI::HeightRowFeeds, this)); } void FeedsView::selectionChanged(const QItemSelection& selected, const QItemSelection& deselected) { diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp index f751ab7c7..00b9dd667 100644 --- a/src/librssguard/gui/messagesview.cpp +++ b/src/librssguard/gui/messagesview.cpp @@ -215,7 +215,7 @@ void MessagesView::setupAppearance() { setAllColumnsShowFocus(false); setSelectionMode(QAbstractItemView::SelectionMode::ExtendedSelection); - setItemDelegate(new StyledItemDelegateWithoutFocus(this)); + setItemDelegate(new StyledItemDelegateWithoutFocus(GUI::HeightRowMessages, this)); header()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL); header()->setMinimumSectionSize(MESSAGES_VIEW_MINIMUM_COL); header()->setFirstSectionMovable(true); diff --git a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp index 066b0332b..cdfa506ff 100644 --- a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp +++ b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp @@ -2,7 +2,10 @@ #include "gui/reusable/styleditemdelegatewithoutfocus.h" -StyledItemDelegateWithoutFocus::StyledItemDelegateWithoutFocus(QObject* parent) : QStyledItemDelegate(parent) {} +#include "miscellaneous/application.h" + +StyledItemDelegateWithoutFocus::StyledItemDelegateWithoutFocus(const QString& row_height_settings_key, QObject* parent) + : QStyledItemDelegate(parent), m_rowHeightSettingsKey(row_height_settings_key) {} void StyledItemDelegateWithoutFocus::paint(QPainter* painter, const QStyleOptionViewItem& option, @@ -15,3 +18,15 @@ void StyledItemDelegateWithoutFocus::paint(QPainter* painter, QStyledItemDelegate::paint(painter, itemOption, index); } + +QSize StyledItemDelegateWithoutFocus::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { + auto row_height = qApp->settings()->value(GROUP(GUI), m_rowHeightSettingsKey).toInt(); + auto original_hint = QStyledItemDelegate::sizeHint(option, index); + + if (row_height <= 0) { + return original_hint; + } + else { + return QSize(original_hint.width(), row_height); + } +} diff --git a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h index 7fd5c4776..688181d90 100644 --- a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h +++ b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h @@ -15,9 +15,13 @@ class StyledItemDelegateWithoutFocus : public QStyledItemDelegate { Q_OBJECT public: - explicit StyledItemDelegateWithoutFocus(QObject* parent = nullptr); + explicit StyledItemDelegateWithoutFocus(const QString& row_height_settings_key, QObject* parent = nullptr); virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const; + + private: + QString m_rowHeightSettingsKey; }; #endif // STYLEDITEMDELEGATEWITHOUTFOCUS_H diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index 038beddc3..fce8e5625 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -42,11 +42,6 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent connect(m_ui->m_checkDisplayPlaceholders, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); #endif - connect(m_ui->m_spinHeightRowsMessages, static_cast(&QSpinBox::valueChanged), - this, &SettingsFeedsMessages::requireRestart); - connect(m_ui->m_spinHeightRowsFeeds, static_cast(&QSpinBox::valueChanged), - this, &SettingsFeedsMessages::requireRestart); - connect(m_ui->m_cbListsRestrictedShortcuts, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_cmbIgnoreContentsChanges, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_cbHideCountsIfNoUnread, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); diff --git a/src/librssguard/gui/systemtrayicon.cpp b/src/librssguard/gui/systemtrayicon.cpp index 6c5b8f67e..60ab3cdee 100644 --- a/src/librssguard/gui/systemtrayicon.cpp +++ b/src/librssguard/gui/systemtrayicon.cpp @@ -20,7 +20,7 @@ bool TrayIconMenu::event(QEvent* event) { qApp->showGuiMessage(Notification::Event::GeneralEvent, { tr("Close dialogs"), tr("Close opened modal dialogs first."), - QSystemTrayIcon::Warning }); + QSystemTrayIcon::MessageIcon::Warning }); } return QMenu::event(event); diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index 335099950..f06c00943 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -510,7 +510,7 @@ void Application::showGuiMessage(Notification::Event event, } } - if (dest.m_messageBox) { + if (dest.m_messageBox || msg.m_type == QSystemTrayIcon::MessageIcon::Critical) { // Tray icon or OSD is not available, display simple text box. MessageBox::show(parent == nullptr ? mainFormWidget() : parent, QMessageBox::Icon(msg.m_type), msg.m_title, msg.m_message, diff --git a/src/librssguard/miscellaneous/application.h b/src/librssguard/miscellaneous/application.h index 535e690ba..c4bfb4d66 100644 --- a/src/librssguard/miscellaneous/application.h +++ b/src/librssguard/miscellaneous/application.h @@ -55,7 +55,7 @@ struct GuiMessage { struct GuiMessageDestination { public: - GuiMessageDestination(bool tray = true, bool message_box = true, bool status_bar = false) + GuiMessageDestination(bool tray = true, bool message_box = false, bool status_bar = false) : m_tray(tray), m_messageBox(message_box), m_statusBar(status_bar) {} bool m_tray; diff --git a/src/librssguard/network-web/oauth2service.cpp b/src/librssguard/network-web/oauth2service.cpp index 3f9c1ce29..24963890f 100644 --- a/src/librssguard/network-web/oauth2service.cpp +++ b/src/librssguard/network-web/oauth2service.cpp @@ -192,7 +192,8 @@ void OAuth2Service::refreshAccessToken(const QString& refresh_token) { qApp->showGuiMessage(Notification::Event::LoginDataRefreshed, { tr("Logging in via OAuth 2.0..."), tr("Refreshing login tokens for '%1'...").arg(m_tokenUrl.toString()), - QSystemTrayIcon::MessageIcon::Information }); + QSystemTrayIcon::MessageIcon::Information }, + { true, false, true }); qDebugNN << LOGSEC_OAUTH << "Posting data for access token refreshing:" << QUOTE_W_SPACE_DOT(content); m_networkManager.post(networkRequest, content.toUtf8()); diff --git a/src/librssguard/services/standard/standardcategory.cpp b/src/librssguard/services/standard/standardcategory.cpp index e16bcba84..30209ccd8 100644 --- a/src/librssguard/services/standard/standardcategory.cpp +++ b/src/librssguard/services/standard/standardcategory.cpp @@ -40,7 +40,7 @@ bool StandardCategory::performDragDropChange(RootItem* target_item) { << "Cannot overwrite category:" << QUOTE_W_SPACE_DOT(ex.message()); qApp->showGuiMessage(Notification::Event::GeneralEvent, { - tr("Error"), + tr("Cannot save category data"), tr("Cannot save data for category, detailed information was logged via debug log."), QSystemTrayIcon::MessageIcon::Critical }); return false; diff --git a/src/librssguard/services/standard/standardfeed.cpp b/src/librssguard/services/standard/standardfeed.cpp index ec11f39ef..3786b8b97 100644 --- a/src/librssguard/services/standard/standardfeed.cpp +++ b/src/librssguard/services/standard/standardfeed.cpp @@ -207,7 +207,7 @@ void StandardFeed::fetchMetadataForItself() { << "Cannot overwrite feed:" << QUOTE_W_SPACE_DOT(ex.message()); qApp->showGuiMessage(Notification::Event::GeneralEvent, { - tr("Error"), + tr("Cannot save feed data"), tr("Cannot save data for feed: %1").arg(ex.message()), QSystemTrayIcon::MessageIcon::Critical }); } diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index c51c32d75..eb0b5b7e9 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -396,7 +396,7 @@ void StandardServiceRoot::addNewCategory(RootItem* selected_item) { qApp->showGuiMessage(Notification::Event::GeneralEvent, { tr("Cannot add category"), tr("Cannot add category because another critical operation is ongoing."), - QSystemTrayIcon::Warning }); + QSystemTrayIcon::MessageIcon::Warning }); // Thus, cannot delete and quit the method. return;