Make context fonts configurable

Fixes #362
This commit is contained in:
Jonas Kvinge
2020-04-28 01:11:00 +02:00
parent 1a4f0dcf5a
commit 760aacca26
7 changed files with 249 additions and 21 deletions

View File

@@ -24,12 +24,17 @@
#include <QtGlobal>
#include <QAction>
#include <QVariant>
#include <QIODevice>
#include <QFile>
#include <QFont>
#include <QMenu>
#include <QCursor>
#include <QCheckBox>
#include <QToolButton>
#include <QToolTip>
#include <QLineEdit>
#include <QTextEdit>
#include <QFontComboBox>
#include <QSettings>
#include "core/iconloader.h"
@@ -58,6 +63,8 @@ const char *ContextSettingsPage::kSettingsGroupEnable[ContextSettingsOrder::NELE
"SearchLyricsEnable",
};
const qreal ContextSettingsPage::kDefaultFontSizeHeadline = 11;
ContextSettingsPage::ContextSettingsPage(SettingsDialog* dialog) : SettingsPage(dialog), ui_(new Ui_ContextSettingsPage) {
ui_->setupUi(this);
@@ -103,6 +110,18 @@ ContextSettingsPage::ContextSettingsPage(SettingsDialog* dialog) : SettingsPage(
ui_->context_exp_chooser1->setIcon(IconLoader::Load("list-add"));
ui_->context_exp_chooser2->setIcon(IconLoader::Load("list-add"));
connect(ui_->font_headline, SIGNAL(currentFontChanged(QFont)), SLOT(HeadlineFontChanged()));
connect(ui_->font_size_headline, SIGNAL(valueChanged(double)), SLOT(HeadlineFontChanged()));
connect(ui_->font_normal, SIGNAL(currentFontChanged(QFont)), SLOT(NormalFontChanged()));
connect(ui_->font_size_normal, SIGNAL(valueChanged(double)), SLOT(NormalFontChanged()));
QFile file(":/text/ghosts.txt");
if (file.open(QIODevice::ReadOnly)) {
QString text = file.readAll();
ui_->preview_headline->setText(text);
ui_->preview_normal->setText(text);
}
}
ContextSettingsPage::~ContextSettingsPage() { delete ui_; }
@@ -117,6 +136,21 @@ void ContextSettingsPage::Load() {
for (int i = 0 ; i < ContextSettingsOrder::NELEMS ; ++i) {
checkboxes[i]->setChecked(s.value(kSettingsGroupEnable[i], i != ContextSettingsOrder::ALBUMS_BY_ARTIST).toBool());
}
// Fonts
QString default_font;
int i = ui_->font_headline->findText("Noto Sans");
if (i >= 0) {
default_font = "Noto Sans";
}
else {
default_font = QWidget().font().family();
}
ui_->font_headline->setCurrentFont(s.value("font_headline", default_font).toString());
ui_->font_normal->setCurrentFont(s.value("font_normal", default_font).toString());
ui_->font_size_headline->setValue(s.value("font_size_headline", kDefaultFontSizeHeadline).toReal());
ui_->font_size_normal->setValue(s.value("font_size_normal", font().pointSizeF()).toReal());
s.endGroup();
}
@@ -131,6 +165,10 @@ void ContextSettingsPage::Save() {
for (int i = 0; i < ContextSettingsOrder::NELEMS; ++i) {
s.setValue(kSettingsGroupEnable[i], checkboxes[i]->isChecked());
}
s.setValue("font_headline", ui_->font_headline->currentFont().family());
s.setValue("font_normal", ui_->font_normal->currentFont().family());
s.setValue("font_size_headline", ui_->font_size_headline->value());
s.setValue("font_size_normal", ui_->font_size_normal->value());
s.endGroup();
}
@@ -148,3 +186,23 @@ void ContextSettingsPage::InsertVariableSecondLine(QAction* action) {
void ContextSettingsPage::ShowMenuTooltip(QAction* action) {
QToolTip::showText(QCursor::pos(), action->toolTip());
}
void ContextSettingsPage::HeadlineFontChanged() {
QFont font(ui_->font_headline->currentFont());
if (ui_->font_size_headline->value() > 0) {
font.setPointSizeF(ui_->font_size_headline->value());
}
ui_->preview_headline->setFont(font);
}
void ContextSettingsPage::NormalFontChanged() {
QFont font(ui_->font_normal->currentFont());
if (ui_->font_size_normal->value() > 0) {
font.setPointSizeF(ui_->font_size_normal->value());
}
ui_->preview_normal->setFont(font);
}

View File

@@ -57,16 +57,19 @@ public:
static const char *kSettingsSummaryFmt;
static const char *kSettingsGroupLabels[ContextSettingsOrder::NELEMS];
static const char *kSettingsGroupEnable[ContextSettingsOrder::NELEMS];
static const qreal kDefaultFontSizeHeadline;
void Load();
void Save();
private slots:
private slots:
void InsertVariableFirstLine(QAction *action);
void InsertVariableSecondLine(QAction *action);
void ShowMenuTooltip(QAction *action);
void HeadlineFontChanged();
void NormalFontChanged();
private:
private:
Ui_ContextSettingsPage *ui_;
QCheckBox *checkboxes[ContextSettingsOrder::NELEMS];
};

View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>500</width>
<height>600</height>
<height>774</height>
</rect>
</property>
<property name="windowTitle">
@@ -209,6 +209,92 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupbox_font_headline">
<property name="title">
<string>Font for headline</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_1_font">
<property name="text">
<string>Font</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_1_font_size">
<property name="text">
<string>Font size</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="font_size_headline"/>
</item>
<item row="0" column="1">
<widget class="QFontComboBox" name="font_headline"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_1_preview">
<property name="text">
<string>Preview</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QTextEdit" name="preview_headline">
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupbox_font_normal">
<property name="title">
<string>Font for data and lyrics</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_2_font">
<property name="text">
<string>Font</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QFontComboBox" name="font_normal"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2_font_size">
<property name="text">
<string>Font size</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="font_size_normal"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_1_preview_2">
<property name="text">
<string>Preview</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QTextEdit" name="preview_normal">
<property name="textInteractionFlags">
<set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="spacer_bottom">
<property name="orientation">