allow for skins to specify default app-wide font, some other subfixes to allow for proper functionality

This commit is contained in:
Martin Rotter 2023-01-31 14:47:20 +01:00
parent 6fcedef29b
commit 3cf0fe8763
12 changed files with 83 additions and 27 deletions

View file

@ -370,9 +370,14 @@ void FeedsModel::onItemDataChanged(const QList<RootItem*>& items) {
void FeedsModel::setupFonts() { void FeedsModel::setupFonts() {
QFont fon; QFont fon;
fon.fromString(qApp->settings() if (qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::CustomizeListFont)).toBool()) {
->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString()) fon.fromString(qApp->settings()
.toString()); ->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString())
.toString());
}
else {
fon = Application::font("FeedsView");
}
m_normalFont = fon; m_normalFont = fon;

View file

@ -120,9 +120,14 @@ bool MessagesModel::setData(const QModelIndex& index, const QVariant& value, int
void MessagesModel::setupFonts() { void MessagesModel::setupFonts() {
QFont fon; QFont fon;
fon.fromString(qApp->settings() if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::CustomizeListFont)).toBool()) {
->value(GROUP(Messages), Messages::ListFont, Application::font("MessagesView").toString()) fon.fromString(qApp->settings()
.toString()); ->value(GROUP(Messages), Messages::ListFont, Application::font("MessagesView").toString())
.toString());
}
else {
fon = Application::font("MessagesView");
}
m_normalFont = fon; m_normalFont = fon;
m_boldFont = m_normalFont; m_boldFont = m_normalFont;

View file

@ -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) { : QMainWindow(parent, f), m_ui(new Ui::FormMain), m_trayMenu(nullptr), m_statusBar(nullptr) {
qDebugNN << LOGSEC_GUI qDebugNN << LOGSEC_GUI
<< "Creating main application form in thread:" << QUOTE_W_SPACE_DOT(QThread::currentThreadId()); << "Creating main application form in thread:" << QUOTE_W_SPACE_DOT(QThread::currentThreadId());
// setAttribute(Qt::WA_WindowPropagation, true);
m_ui->setupUi(this); m_ui->setupUi(this);
qApp->setMainForm(this); qApp->setMainForm(this);

View file

@ -7,12 +7,13 @@
#include <QCheckBox> #include <QCheckBox>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QDialogButtonBox>
#include <QPushButton> #include <QPushButton>
#include <QStyle> #include <QStyle>
#include <QtGlobal> #include <QtGlobal>
MsgBox::MsgBox(QWidget* parent) : QMessageBox(parent) {} MsgBox::MsgBox(QWidget* parent) : QMessageBox(parent) {
// setAttribute(Qt::WA_WindowPropagation, true);
}
void MsgBox::setIcon(QMessageBox::Icon icon) { void MsgBox::setIcon(QMessageBox::Icon icon) {
// Determine correct status icon size. // Determine correct status icon size.
@ -54,16 +55,16 @@ QIcon MsgBox::iconForStatus(QMessageBox::Icon status) {
} }
QMessageBox::StandardButton MsgBox::show(QWidget* parent, QMessageBox::StandardButton MsgBox::show(QWidget* parent,
QMessageBox::Icon icon, QMessageBox::Icon icon,
const QString& title, const QString& title,
const QString& text, const QString& text,
const QString& informative_text, const QString& informative_text,
const QString& detailed_text, const QString& detailed_text,
QMessageBox::StandardButtons buttons, QMessageBox::StandardButtons buttons,
QMessageBox::StandardButton default_button, QMessageBox::StandardButton default_button,
bool* dont_show_again, bool* dont_show_again,
const QString& functor_heading, const QString& functor_heading,
const std::function<void()>& functor) { const std::function<void()>& functor) {
if (parent == nullptr) { if (parent == nullptr) {
parent = qApp->mainFormWidget(); parent = qApp->mainFormWidget();
} }

View file

@ -24,9 +24,11 @@ LabelsMenu::LabelsMenu(const QList<Message>& messages, const QList<Label*>& labe
else { else {
QSqlDatabase db = qApp->database()->driver()->connection(QSL("LabelsMenu")); QSqlDatabase db = qApp->database()->driver()->connection(QSL("LabelsMenu"));
for (Label* label: boolinq::from(labels).orderBy([](const Label* label) { for (Label* label : boolinq::from(labels)
return label->title().toLower(); .orderBy([](const Label* label) {
}).toStdList()) { return label->title().toLower();
})
.toStdList()) {
auto count = boolinq::from(messages).count([&db, label](const Message& msg) { auto count = boolinq::from(messages).count([&db, label](const Message& msg) {
return DatabaseQueries::isLabelAssignedToMessage(db, label, msg); return DatabaseQueries::isLabelAssignedToMessage(db, label, msg);

View file

@ -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_cbListsRestrictedShortcuts, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
connect(m_ui->m_cmbIgnoreContentsChanges, &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); 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()) ->value(GROUP(Messages), Messages::ListFont, Application::font("MessagesView").toString())
.toString()); .toString());
m_ui->m_lblMessageListFont->setFont(fon2); m_ui->m_lblMessageListFont->setFont(fon2);
m_ui->m_gbArticleListFont
->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::CustomizeListFont)).toBool());
QFont fon3; QFont fon3;
@ -290,6 +294,7 @@ void SettingsFeedsMessages::loadSettings() {
fon3 fon3
.fromString(settings()->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString()).toString()); .fromString(settings()->value(GROUP(Feeds), Feeds::ListFont, Application::font("FeedsView").toString()).toString());
m_ui->m_lblFeedListFont->setFont(fon3); m_ui->m_lblFeedListFont->setFont(fon3);
m_ui->m_gbFeedListFont->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::CustomizeListFont)).toBool());
onEndLoadSettings(); onEndLoadSettings();
} }
@ -345,6 +350,9 @@ void SettingsFeedsMessages::saveSettings() {
settings()->setValue(GROUP(Messages), Messages::ListFont, m_ui->m_lblMessageListFont->font().toString()); 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(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->mainForm()->tabWidget()->feedMessageViewer()->loadMessageViewerFonts();
qApp->feedReader()->updateAutoUpdateStatus(); qApp->feedReader()->updateAutoUpdateStatus();

View file

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>489</width> <width>495</width>
<height>531</height> <height>531</height>
</rect> </rect>
</property> </property>
@ -154,7 +154,7 @@
<item row="1" column="0" colspan="2"> <item row="1" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
<widget class="QGroupBox" name="groupBox_6"> <widget class="QGroupBox" name="m_gbFeedListFont">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum"> <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -164,6 +164,12 @@
<property name="title"> <property name="title">
<string>Feed list font</string> <string>Feed list font</string>
</property> </property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QFormLayout" name="formLayout_3"> <layout class="QFormLayout" name="formLayout_3">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="m_lblFeedListFont"> <widget class="QLabel" name="m_lblFeedListFont">
@ -550,10 +556,16 @@
</widget> </widget>
</item> </item>
<item row="9" column="0"> <item row="9" column="0">
<widget class="QGroupBox" name="groupBox_5"> <widget class="QGroupBox" name="m_gbArticleListFont">
<property name="title"> <property name="title">
<string>Article list font</string> <string>Article list font</string>
</property> </property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_17"> <layout class="QHBoxLayout" name="horizontalLayout_17">
<item> <item>
<widget class="QLabel" name="m_lblMessageListFont"> <widget class="QLabel" name="m_lblMessageListFont">

View file

@ -290,8 +290,6 @@ void TextBrowserViewer::loadMessages(const QList<Message>& messages, RootItem* r
auto html_messages = prepareHtmlForMessage(messages, root); auto html_messages = prepareHtmlForMessage(messages, root);
html_messages.m_html = IOFactory::readFile("aa.html");
setHtml(html_messages.m_html, html_messages.m_baseUrl); setHtml(html_messages.m_html, html_messages.m_baseUrl);
emit loadingFinished(true); emit loadingFinished(true);
} }

View file

@ -113,6 +113,9 @@ DVALUE(bool) Feeds::AutoExpandOnSelectionDef = false;
DKEY Feeds::OnlyBasicShortcutsInLists = "only_basic_shortcuts_in_lists"; DKEY Feeds::OnlyBasicShortcutsInLists = "only_basic_shortcuts_in_lists";
DVALUE(bool) Feeds::OnlyBasicShortcutsInListsDef = false; DVALUE(bool) Feeds::OnlyBasicShortcutsInListsDef = false;
DKEY Feeds::CustomizeListFont = "customize_list_font";
DVALUE(bool) Feeds::CustomizeListFontDef = false;
DKEY Feeds::ListFont = "list_font"; DKEY Feeds::ListFont = "list_font";
// Messages. // Messages.
@ -181,6 +184,9 @@ DVALUE(bool) Messages::ShowOnlyUnreadMessagesDef = false;
DKEY Messages::PreviewerFontStandard = "previewer_font_standard"; DKEY Messages::PreviewerFontStandard = "previewer_font_standard";
NON_CONST_DVALUE(QString) Messages::PreviewerFontStandardDef = QString(); NON_CONST_DVALUE(QString) Messages::PreviewerFontStandardDef = QString();
DKEY Messages::CustomizeListFont = "customize_list_font";
DVALUE(bool) Messages::CustomizeListFontDef = false;
DKEY Messages::ListFont = "list_font"; DKEY Messages::ListFont = "list_font";
// Custom skin colors. // Custom skin colors.

View file

@ -110,6 +110,9 @@ namespace Feeds {
KEY OnlyBasicShortcutsInLists; KEY OnlyBasicShortcutsInLists;
VALUE(bool) OnlyBasicShortcutsInListsDef; VALUE(bool) OnlyBasicShortcutsInListsDef;
KEY CustomizeListFont;
VALUE(bool) CustomizeListFontDef;
KEY ListFont; KEY ListFont;
} // namespace Feeds } // namespace Feeds
@ -180,6 +183,9 @@ namespace Messages {
KEY PreviewerFontStandard; KEY PreviewerFontStandard;
NON_CONST_VALUE(QString) PreviewerFontStandardDef; NON_CONST_VALUE(QString) PreviewerFontStandardDef;
KEY CustomizeListFont;
VALUE(bool) CustomizeListFontDef;
KEY ListFont; KEY ListFont;
} // namespace Messages } // namespace Messages

View file

@ -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()) { if (env_forced_style.isEmpty() && cli_forced_style.isEmpty()) {
m_styleIsFrozen = false; 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_description = skin_node.namedItem(QSL("description")).toElement().text();
skin.m_baseName = skin_name; 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. // Obtain color palette.
QHash<SkinEnums::PaletteColors, QColor> palette; QHash<SkinEnums::PaletteColors, QColor> palette;
QDomNodeList colors_of_palette = skin_node.namedItem(QSL("palette")).toElement().elementsByTagName(QSL("color")); QDomNodeList colors_of_palette = skin_node.namedItem(QSL("palette")).toElement().elementsByTagName(QSL("color"));

View file

@ -8,6 +8,7 @@
#include "core/message.h" #include "core/message.h"
#include <QColor> #include <QColor>
#include <QFont>
#include <QHash> #include <QHash>
#include <QMetaType> #include <QMetaType>
#include <QPalette> #include <QPalette>
@ -63,6 +64,7 @@ struct RSSGUARD_DLLSPEC Skin {
QString m_enclosureMarkup; QString m_enclosureMarkup;
QHash<SkinEnums::PaletteColors, QColor> m_colorPalette; QHash<SkinEnums::PaletteColors, QColor> m_colorPalette;
QStringList m_forcedStyles; QStringList m_forcedStyles;
QFont m_defaultFont;
bool m_forcedSkinColors; bool m_forcedSkinColors;
QMultiHash<QPalette::ColorGroup, QPair<QPalette::ColorRole, QPair<QColor, Qt::BrushStyle>>> m_stylePalette; QMultiHash<QPalette::ColorGroup, QPair<QPalette::ColorRole, QPair<QColor, Qt::BrushStyle>>> m_stylePalette;