diff --git a/src/librssguard/core/messagesmodel.cpp b/src/librssguard/core/messagesmodel.cpp index 98f16655f..fb27a3f53 100644 --- a/src/librssguard/core/messagesmodel.cpp +++ b/src/librssguard/core/messagesmodel.cpp @@ -450,8 +450,6 @@ QVariant MessagesModel::data(const QModelIndex& idx, int role) const { Qt::AlignmentFlag::AlignVCenter, str).size(); - //rct.setHeight(rct.height() + 20); - return rct; } } diff --git a/src/librssguard/gui/feedsview.cpp b/src/librssguard/gui/feedsview.cpp index 667184567..8d9f0a059 100644 --- a/src/librssguard/gui/feedsview.cpp +++ b/src/librssguard/gui/feedsview.cpp @@ -805,7 +805,10 @@ void FeedsView::setupAppearance() { setAllColumnsShowFocus(false); setRootIsDecorated(false); setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); - setItemDelegate(new StyledItemDelegateWithoutFocus(GUI::HeightRowFeeds, this)); + setItemDelegate(new StyledItemDelegateWithoutFocus(qApp->settings()->value(GROUP(GUI), + SETTING(GUI::HeightRowFeeds)).toInt(), + -1, + this)); } void FeedsView::invalidateReadFeedsFilter(bool set_new_value, bool show_unread_only) { diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp index 1aa2a8a8a..c447ca827 100644 --- a/src/librssguard/gui/messagesview.cpp +++ b/src/librssguard/gui/messagesview.cpp @@ -251,7 +251,11 @@ void MessagesView::setupAppearance() { setSortingEnabled(true); setAllColumnsShowFocus(false); setSelectionMode(QAbstractItemView::SelectionMode::ExtendedSelection); - setItemDelegate(new StyledItemDelegateWithoutFocus(GUI::HeightRowMessages, this)); + setItemDelegate(new StyledItemDelegateWithoutFocus(qApp->settings()->value(GROUP(GUI), + SETTING(GUI::HeightRowMessages)).toInt(), + qApp->settings()->value(GROUP(Messages), + SETTING(Messages::ArticleListPadding)).toInt(), + this)); header()->setDefaultSectionSize(MESSAGES_VIEW_DEFAULT_COL); header()->setMinimumSectionSize(MESSAGES_VIEW_MINIMUM_COL); diff --git a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp index fb9f5cf92..1b1c09d7c 100644 --- a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp +++ b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.cpp @@ -4,8 +4,8 @@ #include "miscellaneous/application.h" -StyledItemDelegateWithoutFocus::StyledItemDelegateWithoutFocus(const QString& row_height_settings_key, QObject* parent) - : QStyledItemDelegate(parent), m_rowHeightSettingsKey(row_height_settings_key) {} +StyledItemDelegateWithoutFocus::StyledItemDelegateWithoutFocus(int height_row, int padding_row, QObject* parent) + : QStyledItemDelegate(parent), m_rowHeight(height_row), m_rowPadding(padding_row) {} void StyledItemDelegateWithoutFocus::paint(QPainter* painter, const QStyleOptionViewItem& option, @@ -26,13 +26,19 @@ void StyledItemDelegateWithoutFocus::paint(QPainter* painter, } 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); + QSize new_hint; - if (row_height <= 0) { - return original_hint; + if (m_rowHeight <= 0) { + new_hint = original_hint; } else { - return QSize(original_hint.width(), row_height); + new_hint = QSize(original_hint.width(), m_rowHeight); } + + if (m_rowPadding > 0) { + new_hint.setHeight(new_hint.height() + (2 * m_rowPadding)); + } + + return new_hint; } diff --git a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h index 688181d90..45d08ac70 100644 --- a/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h +++ b/src/librssguard/gui/reusable/styleditemdelegatewithoutfocus.h @@ -15,13 +15,14 @@ class StyledItemDelegateWithoutFocus : public QStyledItemDelegate { Q_OBJECT public: - explicit StyledItemDelegateWithoutFocus(const QString& row_height_settings_key, QObject* parent = nullptr); + explicit StyledItemDelegateWithoutFocus(int height_row, int padding_row, 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; + int m_rowHeight; + int m_rowPadding; }; #endif // STYLEDITEMDELEGATEWITHOUTFOCUS_H diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index de0267d7d..e9b003eb9 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -72,8 +72,16 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent this, &SettingsFeedsMessages::dirtifySettings); connect(m_ui->m_spinHeightRowsMessages, static_cast(&QSpinBox::valueChanged), this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_spinHeightRowsMessages, static_cast(&QSpinBox::valueChanged), + this, &SettingsFeedsMessages::requireRestart); connect(m_ui->m_spinHeightRowsFeeds, static_cast(&QSpinBox::valueChanged), this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_spinHeightRowsFeeds, static_cast(&QSpinBox::valueChanged), + this, &SettingsFeedsMessages::requireRestart); + connect(m_ui->m_spinPaddingRowsMessages, static_cast(&QSpinBox::valueChanged), + this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_spinPaddingRowsMessages, static_cast(&QSpinBox::valueChanged), + this, &SettingsFeedsMessages::requireRestart); connect(m_ui->m_checkAutoUpdate, &QCheckBox::toggled, m_ui->m_spinAutoUpdateInterval, &TimeSpinBox::setEnabled); connect(m_ui->m_checkUpdateAllFeedsOnStartup, &QCheckBox::toggled, m_ui->m_spinStartupUpdateDelay, &TimeSpinBox::setEnabled); connect(m_ui->m_spinFeedUpdateTimeout, static_cast(&QSpinBox::valueChanged), this, @@ -154,6 +162,7 @@ void SettingsFeedsMessages::changeFont(QLabel& lbl) { void SettingsFeedsMessages::loadSettings() { onBeginLoadSettings(); + m_ui->m_spinPaddingRowsMessages->setValue(settings()->value(GROUP(Messages), SETTING(Messages::ArticleListPadding)).toInt()); m_ui->m_spinHeightRowsMessages->setValue(settings()->value(GROUP(GUI), SETTING(GUI::HeightRowMessages)).toInt()); m_ui->m_spinHeightRowsFeeds->setValue(settings()->value(GROUP(GUI), SETTING(GUI::HeightRowFeeds)).toInt()); @@ -235,6 +244,7 @@ void SettingsFeedsMessages::loadSettings() { void SettingsFeedsMessages::saveSettings() { onBeginSaveSettings(); + settings()->setValue(GROUP(Messages), Messages::ArticleListPadding, m_ui->m_spinPaddingRowsMessages->value()); settings()->setValue(GROUP(GUI), GUI::HeightRowMessages, m_ui->m_spinHeightRowsMessages->value()); settings()->setValue(GROUP(GUI), GUI::HeightRowFeeds, m_ui->m_spinHeightRowsFeeds->value()); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.ui b/src/librssguard/gui/settings/settingsfeedsmessages.ui index 4f86d6520..2d0c14eb7 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.ui +++ b/src/librssguard/gui/settings/settingsfeedsmessages.ui @@ -7,7 +7,7 @@ 0 0 489 - 476 + 531 @@ -339,7 +339,7 @@ - + Image attachments height @@ -349,7 +349,7 @@ - + px @@ -362,7 +362,7 @@ - + Use custom date/time format @@ -375,7 +375,7 @@ - + @@ -385,7 +385,7 @@ - + Show only time for today articles @@ -398,7 +398,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -477,7 +477,7 @@ - + Qt::Vertical @@ -507,6 +507,35 @@ + + + + + 150 + 0 + + + + px + + + -1 + + + 100 + + + + + + + Article list top/bottom row padding + + + m_spinPaddingRowsMessages + + + @@ -549,6 +578,7 @@ m_checkKeppMessagesInTheMiddle m_checkMultilineArticleList m_spinHeightRowsMessages + m_spinPaddingRowsMessages m_spinHeightImageAttachments m_checkMessagesDateTimeFormat m_cmbMessagesDateTimeFormat diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index 73a70e443..b1e5935e8 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -105,6 +105,9 @@ DVALUE(bool) Messages::UseCustomDateDef = false; DKEY Messages::CustomDateFormat = "custom_date_format"; DVALUE(char*) Messages::CustomDateFormatDef = ""; +DKEY Messages::ArticleListPadding = "article_list_padding"; +DVALUE(int) Messages::ArticleListPaddingDef = -1; + DKEY Messages::MultilineArticleList = "multiline_article_list"; DVALUE(bool) Messages::MultilineArticleListDef = false; diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h index 8481326ba..d03c2eddc 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -125,6 +125,9 @@ namespace Messages { KEY UseCustomTime; VALUE(bool) UseCustomTimeDef; + KEY ArticleListPadding; + VALUE(int) ArticleListPaddingDef; + KEY MultilineArticleList; VALUE(bool) MultilineArticleListDef;