summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorredsky17 <joedonofry@gmail.com>2019-01-19 16:20:41 +0000
committerredsky17 <joedonofry@gmail.com>2019-01-19 16:20:41 +0000
commit654b652db4493b4f27da3009307b832dc5e90396 (patch)
treea4a2eb129d8554df1bf415c818b5f9de88b40817 /src
parentModified the code that generates user's colors so that it will (diff)
downloadnheko-654b652db4493b4f27da3009307b832dc5e90396.tar.xz
Add User Font Setting
User can now select a font from the installed fonts on their system

This font currently will only be applied when nheko is restarted
(similar to how font size and scaling currently work).  This will
be addressed in a future commit.  Additionally, the dropdown
does not correctly select the previously-chosen user font, and
instead defaults to the first font available on the system
(alphabetically).  This is similar to the issue with the 'Theme'
combo defaulting to 'Light' even when another theme is selected.
Diffstat (limited to 'src')
-rw-r--r--src/UserSettingsPage.cpp29
-rw-r--r--src/UserSettingsPage.h4
-rw-r--r--src/main.cpp4
3 files changed, 35 insertions, 2 deletions
diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp

index 15ad72e1..194a32e1 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp
@@ -49,7 +49,7 @@ UserSettings::load() isTypingNotificationsEnabled_ = settings.value("user/typing_notifications", true).toBool(); isReadReceiptsEnabled_ = settings.value("user/read_receipts", true).toBool(); theme_ = settings.value("user/theme", "light").toString(); - + font_ = settings.value("user/font_family", "default").toString(); baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble(); applyTheme(); @@ -63,6 +63,13 @@ UserSettings::setFontSize(double size) } void +UserSettings::setFontFamily(QString family) +{ + font_ = family; + save(); +} + +void UserSettings::setTheme(QString theme) { theme_ = theme; @@ -106,6 +113,7 @@ UserSettings::save() settings.setValue("group_view", isGroupViewEnabled_); settings.setValue("desktop_notifications", hasDesktopNotifications_); settings.setValue("theme", theme()); + settings.setValue("font_family", font_); settings.endGroup(); } @@ -220,6 +228,20 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge fontSizeOptionLayout->addWidget(fontSizeLabel); fontSizeOptionLayout->addWidget(fontSizeCombo_, 0, Qt::AlignRight); + auto fontFamilyOptionLayout = new QHBoxLayout; + fontFamilyOptionLayout->setContentsMargins(0, OptionMargin, 0, OptionMargin); + auto fontFamilyLabel = new QLabel(tr("Font Family"), this); + fontFamilyLabel->setFont(font); + fontSelectionCombo_ = new QComboBox(this); + QFontDatabase fontDb; + auto fontFamilies = fontDb.families(); + for (const auto &family : fontFamilies) { + fontSelectionCombo_->addItem(family); + } + + fontFamilyOptionLayout->addWidget(fontFamilyLabel); + fontFamilyOptionLayout->addWidget(fontSelectionCombo_, 0, Qt::AlignRight); + auto themeOptionLayout_ = new QHBoxLayout; themeOptionLayout_->setContentsMargins(0, OptionMargin, 0, OptionMargin); auto themeLabel_ = new QLabel(tr("Theme"), this); @@ -319,6 +341,7 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge mainLayout_->addLayout(scaleFactorOptionLayout); mainLayout_->addLayout(fontSizeOptionLayout); + mainLayout_->addLayout(fontFamilyOptionLayout); mainLayout_->addWidget(new HorizontalLine(this)); mainLayout_->addLayout(themeOptionLayout_); mainLayout_->addWidget(new HorizontalLine(this)); @@ -355,7 +378,9 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge connect(fontSizeCombo_, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), [this](const QString &size) { settings_->setFontSize(size.trimmed().toDouble()); }); - + connect(fontSelectionCombo_, + static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), + [this](const QString &family) { settings_->setFontFamily(family.trimmed()); }); connect(trayToggle_, &Toggle::toggled, this, [this](bool isDisabled) { settings_->setTray(!isDisabled); if (isDisabled) { diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h
index 373126ae..196ba844 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h
@@ -18,6 +18,7 @@ #pragma once #include <QComboBox> +#include <QFontDatabase> #include <QFrame> #include <QLabel> #include <QLayout> @@ -54,6 +55,7 @@ public: } void setFontSize(double size); + void setFontFamily(QString family); void setGroupView(bool state) { @@ -103,6 +105,7 @@ private: bool isReadReceiptsEnabled_; bool hasDesktopNotifications_; double baseFontSize_; + QString font_; }; class HorizontalLine : public QFrame @@ -154,6 +157,7 @@ private: QComboBox *themeCombo_; QComboBox *scaleFactorCombo_; QComboBox *fontSizeCombo_; + QComboBox *fontSelectionCombo_; int sideMargin_ = 0; }; diff --git a/src/main.cpp b/src/main.cpp
index 591d348a..fe7ea2ff 100644 --- a/src/main.cpp +++ b/src/main.cpp
@@ -147,6 +147,10 @@ main(int argc, char *argv[]) QSettings settings; QFont font; + QString userFontFamily = settings.value("user/font_family", "").toString(); + if (!userFontFamily.isEmpty()) { + font.setFamily(userFontFamily); + } font.setPointSizeF(settings.value("user/font_size", font.pointSizeF()).toDouble()); app.setFont(font);