From 3cf0fe876394cd3ba9dd5808be8f10a4f269a15f Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 31 Jan 2023 14:47:20 +0100 Subject: [PATCH] allow for skins to specify default app-wide font, some other subfixes to allow for proper functionality --- src/librssguard/core/feedsmodel.cpp | 11 +++++--- src/librssguard/core/messagesmodel.cpp | 11 +++++--- src/librssguard/gui/dialogs/formmain.cpp | 2 +- src/librssguard/gui/messagebox.cpp | 25 ++++++++++--------- src/librssguard/gui/reusable/labelsmenu.cpp | 8 +++--- .../gui/settings/settingsfeedsmessages.cpp | 8 ++++++ .../gui/settings/settingsfeedsmessages.ui | 18 ++++++++++--- .../qtextbrowser/textbrowserviewer.cpp | 2 -- src/librssguard/miscellaneous/settings.cpp | 6 +++++ src/librssguard/miscellaneous/settings.h | 6 +++++ src/librssguard/miscellaneous/skinfactory.cpp | 11 ++++++++ src/librssguard/miscellaneous/skinfactory.h | 2 ++ 12 files changed, 83 insertions(+), 27 deletions(-) diff --git a/src/librssguard/core/feedsmodel.cpp b/src/librssguard/core/feedsmodel.cpp index 7e55ca47b..a29e9fed8 100644 --- a/src/librssguard/core/feedsmodel.cpp +++ b/src/librssguard/core/feedsmodel.cpp @@ -370,9 +370,14 @@ void FeedsModel::onItemDataChanged(const QList& items) { void FeedsModel::setupFonts() { QFont fon; - fon.fromString(qApp->settings() - ->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString()) - .toString()); + if (qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::CustomizeListFont)).toBool()) { + fon.fromString(qApp->settings() + ->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString()) + .toString()); + } + else { + fon = Application::font("FeedsView"); + } m_normalFont = fon; diff --git a/src/librssguard/core/messagesmodel.cpp b/src/librssguard/core/messagesmodel.cpp index 16aec5543..06fe233fb 100644 --- a/src/librssguard/core/messagesmodel.cpp +++ b/src/librssguard/core/messagesmodel.cpp @@ -120,9 +120,14 @@ bool MessagesModel::setData(const QModelIndex& index, const QVariant& value, int void MessagesModel::setupFonts() { QFont fon; - fon.fromString(qApp->settings() - ->value(GROUP(Messages), Messages::ListFont, Application::font("MessagesView").toString()) - .toString()); + if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::CustomizeListFont)).toBool()) { + fon.fromString(qApp->settings() + ->value(GROUP(Messages), Messages::ListFont, Application::font("MessagesView").toString()) + .toString()); + } + else { + fon = Application::font("MessagesView"); + } m_normalFont = fon; m_boldFont = m_normalFont; diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index d563af6a0..94727d54f 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -55,7 +55,7 @@ FormMain::FormMain(QWidget* parent, Qt::WindowFlags f) : QMainWindow(parent, f), m_ui(new Ui::FormMain), m_trayMenu(nullptr), m_statusBar(nullptr) { qDebugNN << LOGSEC_GUI << "Creating main application form in thread:" << QUOTE_W_SPACE_DOT(QThread::currentThreadId()); - + // setAttribute(Qt::WA_WindowPropagation, true); m_ui->setupUi(this); qApp->setMainForm(this); diff --git a/src/librssguard/gui/messagebox.cpp b/src/librssguard/gui/messagebox.cpp index fdc4eea32..b02400242 100644 --- a/src/librssguard/gui/messagebox.cpp +++ b/src/librssguard/gui/messagebox.cpp @@ -7,12 +7,13 @@ #include #include -#include #include #include #include -MsgBox::MsgBox(QWidget* parent) : QMessageBox(parent) {} +MsgBox::MsgBox(QWidget* parent) : QMessageBox(parent) { + // setAttribute(Qt::WA_WindowPropagation, true); +} void MsgBox::setIcon(QMessageBox::Icon icon) { // Determine correct status icon size. @@ -54,16 +55,16 @@ QIcon MsgBox::iconForStatus(QMessageBox::Icon status) { } QMessageBox::StandardButton MsgBox::show(QWidget* parent, - QMessageBox::Icon icon, - const QString& title, - const QString& text, - const QString& informative_text, - const QString& detailed_text, - QMessageBox::StandardButtons buttons, - QMessageBox::StandardButton default_button, - bool* dont_show_again, - const QString& functor_heading, - const std::function& functor) { + QMessageBox::Icon icon, + const QString& title, + const QString& text, + const QString& informative_text, + const QString& detailed_text, + QMessageBox::StandardButtons buttons, + QMessageBox::StandardButton default_button, + bool* dont_show_again, + const QString& functor_heading, + const std::function& functor) { if (parent == nullptr) { parent = qApp->mainFormWidget(); } diff --git a/src/librssguard/gui/reusable/labelsmenu.cpp b/src/librssguard/gui/reusable/labelsmenu.cpp index 856c0df58..93ff2f8d5 100644 --- a/src/librssguard/gui/reusable/labelsmenu.cpp +++ b/src/librssguard/gui/reusable/labelsmenu.cpp @@ -24,9 +24,11 @@ LabelsMenu::LabelsMenu(const QList& messages, const QList& labe else { QSqlDatabase db = qApp->database()->driver()->connection(QSL("LabelsMenu")); - for (Label* label: boolinq::from(labels).orderBy([](const Label* label) { - return label->title().toLower(); - }).toStdList()) { + for (Label* label : boolinq::from(labels) + .orderBy([](const Label* label) { + return label->title().toLower(); + }) + .toStdList()) { auto count = boolinq::from(messages).count([&db, label](const Message& msg) { return DatabaseQueries::isLabelAssignedToMessage(db, label, msg); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.cpp b/src/librssguard/gui/settings/settingsfeedsmessages.cpp index 785c94ecc..314a6e8b7 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.cpp +++ b/src/librssguard/gui/settings/settingsfeedsmessages.cpp @@ -58,6 +58,8 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent } }); + connect(m_ui->m_gbFeedListFont, &QGroupBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); + connect(m_ui->m_gbArticleListFont, &QGroupBox::toggled, this, &SettingsFeedsMessages::dirtifySettings); 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); @@ -283,6 +285,8 @@ void SettingsFeedsMessages::loadSettings() { ->value(GROUP(Messages), Messages::ListFont, Application::font("MessagesView").toString()) .toString()); m_ui->m_lblMessageListFont->setFont(fon2); + m_ui->m_gbArticleListFont + ->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::CustomizeListFont)).toBool()); QFont fon3; @@ -290,6 +294,7 @@ void SettingsFeedsMessages::loadSettings() { fon3 .fromString(settings()->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString()).toString()); m_ui->m_lblFeedListFont->setFont(fon3); + m_ui->m_gbFeedListFont->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::CustomizeListFont)).toBool()); onEndLoadSettings(); } @@ -345,6 +350,9 @@ void SettingsFeedsMessages::saveSettings() { settings()->setValue(GROUP(Messages), Messages::ListFont, m_ui->m_lblMessageListFont->font().toString()); settings()->setValue(GROUP(Feeds), Feeds::ListFont, m_ui->m_lblFeedListFont->font().toString()); + settings()->setValue(GROUP(Messages), Messages::CustomizeListFont, m_ui->m_gbArticleListFont->isChecked()); + settings()->setValue(GROUP(Feeds), Feeds::CustomizeListFont, m_ui->m_gbFeedListFont->isChecked()); + qApp->mainForm()->tabWidget()->feedMessageViewer()->loadMessageViewerFonts(); qApp->feedReader()->updateAutoUpdateStatus(); diff --git a/src/librssguard/gui/settings/settingsfeedsmessages.ui b/src/librssguard/gui/settings/settingsfeedsmessages.ui index 01741bd27..bfedb529c 100644 --- a/src/librssguard/gui/settings/settingsfeedsmessages.ui +++ b/src/librssguard/gui/settings/settingsfeedsmessages.ui @@ -6,7 +6,7 @@ 0 0 - 489 + 495 531 @@ -154,7 +154,7 @@ - + 0 @@ -164,6 +164,12 @@ Feed list font + + true + + + false + @@ -550,10 +556,16 @@ - + Article list font + + true + + + false + diff --git a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp index e56ffae2e..19e44ab69 100644 --- a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp +++ b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp @@ -290,8 +290,6 @@ void TextBrowserViewer::loadMessages(const QList& messages, RootItem* r auto html_messages = prepareHtmlForMessage(messages, root); - html_messages.m_html = IOFactory::readFile("aa.html"); - setHtml(html_messages.m_html, html_messages.m_baseUrl); emit loadingFinished(true); } diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index e223a6b59..c22c4b287 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -113,6 +113,9 @@ DVALUE(bool) Feeds::AutoExpandOnSelectionDef = false; DKEY Feeds::OnlyBasicShortcutsInLists = "only_basic_shortcuts_in_lists"; DVALUE(bool) Feeds::OnlyBasicShortcutsInListsDef = false; +DKEY Feeds::CustomizeListFont = "customize_list_font"; +DVALUE(bool) Feeds::CustomizeListFontDef = false; + DKEY Feeds::ListFont = "list_font"; // Messages. @@ -181,6 +184,9 @@ DVALUE(bool) Messages::ShowOnlyUnreadMessagesDef = false; DKEY Messages::PreviewerFontStandard = "previewer_font_standard"; NON_CONST_DVALUE(QString) Messages::PreviewerFontStandardDef = QString(); +DKEY Messages::CustomizeListFont = "customize_list_font"; +DVALUE(bool) Messages::CustomizeListFontDef = false; + DKEY Messages::ListFont = "list_font"; // Custom skin colors. diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h index beacc018d..057787a89 100644 --- a/src/librssguard/miscellaneous/settings.h +++ b/src/librssguard/miscellaneous/settings.h @@ -110,6 +110,9 @@ namespace Feeds { KEY OnlyBasicShortcutsInLists; VALUE(bool) OnlyBasicShortcutsInListsDef; + KEY CustomizeListFont; + VALUE(bool) CustomizeListFontDef; + KEY ListFont; } // namespace Feeds @@ -180,6 +183,9 @@ namespace Messages { KEY PreviewerFontStandard; NON_CONST_VALUE(QString) PreviewerFontStandardDef; + KEY CustomizeListFont; + VALUE(bool) CustomizeListFontDef; + KEY ListFont; } // namespace Messages diff --git a/src/librssguard/miscellaneous/skinfactory.cpp b/src/librssguard/miscellaneous/skinfactory.cpp index 4b7ff28fc..879ef8beb 100644 --- a/src/librssguard/miscellaneous/skinfactory.cpp +++ b/src/librssguard/miscellaneous/skinfactory.cpp @@ -77,6 +77,11 @@ void SkinFactory::loadSkinFromData(const Skin& skin) { } } + if (skin.m_defaultFont != QApplication::font()) { + QApplication::setFont(skin.m_defaultFont); + qDebugNN << "Activating custom application default font" << QUOTE_W_SPACE_DOT(skin.m_defaultFont.toString()); + } + if (env_forced_style.isEmpty() && cli_forced_style.isEmpty()) { m_styleIsFrozen = false; @@ -277,6 +282,12 @@ Skin SkinFactory::skinInfo(const QString& skin_name, bool* ok) const { skin.m_description = skin_node.namedItem(QSL("description")).toElement().text(); skin.m_baseName = skin_name; + if (!skin_node.namedItem(QSL("default-font")).isNull()) { + skin.m_defaultFont = + QFont(skin_node.namedItem(QSL("default-font")).namedItem(QSL("family")).toElement().text(), + skin_node.namedItem(QSL("default-font")).namedItem(QSL("size")).toElement().text().toInt()); + } + // Obtain color palette. QHash palette; QDomNodeList colors_of_palette = skin_node.namedItem(QSL("palette")).toElement().elementsByTagName(QSL("color")); diff --git a/src/librssguard/miscellaneous/skinfactory.h b/src/librssguard/miscellaneous/skinfactory.h index 0bc6392b1..04f2cc0e7 100644 --- a/src/librssguard/miscellaneous/skinfactory.h +++ b/src/librssguard/miscellaneous/skinfactory.h @@ -8,6 +8,7 @@ #include "core/message.h" #include +#include #include #include #include @@ -63,6 +64,7 @@ struct RSSGUARD_DLLSPEC Skin { QString m_enclosureMarkup; QHash m_colorPalette; QStringList m_forcedStyles; + QFont m_defaultFont; bool m_forcedSkinColors; QMultiHash>> m_stylePalette;