fix setting row height in lists of feeds and messages

This commit is contained in:
Martin Rotter 2021-11-02 09:32:47 +01:00
parent c9ca548ebb
commit 71dd65aef9
18 changed files with 37 additions and 40 deletions

View file

@ -26,7 +26,7 @@
<url type="donation">https://github.com/sponsors/martinrotter</url>
<content_rating type="oars-1.1" />
<releases>
<release version="4.0.4" date="2021-11-01"/>
<release version="4.0.4" date="2021-11-02"/>
</releases>
<content_rating type="oars-1.0">
<content_attribute id="violence-cartoon">none</content_attribute>

View file

@ -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() {

View file

@ -148,7 +148,6 @@ class RSSGUARD_DLLSPEC FeedsModel : public QAbstractItemModel {
private:
RootItem* m_rootItem;
int m_itemHeight;
QList<QString> m_headerData;
QList<QString> m_tooltipData;
QIcon m_countsIcon;

View file

@ -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) {

View file

@ -103,7 +103,6 @@ class MessagesModel : public QSqlQueryModel, public MessagesModelSqlLayer {
QIcon m_unreadIcon;
QIcon m_enclosuresIcon;
QList<QIcon> m_scoreIcons;
int m_itemHeight;
bool m_displayFeedIcons;
};

View file

@ -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();

View file

@ -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) {

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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

View file

@ -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<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
this, &SettingsFeedsMessages::requireRestart);
connect(m_ui->m_spinHeightRowsFeeds, static_cast<void (QSpinBox::*)(int)>(&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);

View file

@ -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);

View file

@ -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,

View file

@ -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;

View file

@ -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());

View file

@ -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;

View file

@ -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 });
}

View file

@ -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;