Skip to content

Commit 9c315c3

Browse files
committed
qt: add monospaced font settings
1 parent 34211b6 commit 9c315c3

File tree

6 files changed

+137
-2
lines changed

6 files changed

+137
-2
lines changed

src/qt/forms/optionsdialog.ui

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,6 +1095,106 @@ https://explore.transifex.com/dash/dash/</string>
10951095
</item>
10961096
</layout>
10971097
</item>
1098+
<item>
1099+
<widget class="QGroupBox" name="font_groupBox">
1100+
<property name="title">
1101+
<string>Monospaced font in the Overview tab:</string>
1102+
</property>
1103+
<layout class="QVBoxLayout" name="font_verticalLayout">
1104+
<item>
1105+
<layout class="QHBoxLayout" name="embeddedFont_horizontalLayout">
1106+
<item>
1107+
<widget class="QRadioButton" name="embeddedFont_radioButton">
1108+
<property name="text">
1109+
<string>embedded &quot;%1&quot;</string>
1110+
</property>
1111+
</widget>
1112+
</item>
1113+
<item>
1114+
<spacer name="embeddedFont_horizontalSpacer">
1115+
<property name="orientation">
1116+
<enum>Qt::Horizontal</enum>
1117+
</property>
1118+
<property name="sizeHint" stdset="0">
1119+
<size>
1120+
<width>40</width>
1121+
<height>20</height>
1122+
</size>
1123+
</property>
1124+
</spacer>
1125+
</item>
1126+
<item>
1127+
<layout class="QVBoxLayout" name="embeddedFont_verticalLayout">
1128+
<item>
1129+
<widget class="QLabel" name="embeddedFont_label_1">
1130+
<property name="text">
1131+
<string>111.11111111 DASH</string>
1132+
</property>
1133+
</widget>
1134+
</item>
1135+
<item>
1136+
<widget class="QLabel" name="embeddedFont_label_9">
1137+
<property name="text">
1138+
<string>909.09090909 DASH</string>
1139+
</property>
1140+
</widget>
1141+
</item>
1142+
</layout>
1143+
</item>
1144+
</layout>
1145+
</item>
1146+
<item>
1147+
<widget class="Line" name="font_line">
1148+
<property name="orientation">
1149+
<enum>Qt::Horizontal</enum>
1150+
</property>
1151+
</widget>
1152+
</item>
1153+
<item>
1154+
<layout class="QHBoxLayout" name="systemFont_horizontalLayout">
1155+
<item>
1156+
<widget class="QRadioButton" name="systemFont_radioButton">
1157+
<property name="text">
1158+
<string>closest matching &quot;%1&quot;</string>
1159+
</property>
1160+
</widget>
1161+
</item>
1162+
<item>
1163+
<spacer name="systemFont_horizontalSpacer">
1164+
<property name="orientation">
1165+
<enum>Qt::Horizontal</enum>
1166+
</property>
1167+
<property name="sizeHint" stdset="0">
1168+
<size>
1169+
<width>40</width>
1170+
<height>20</height>
1171+
</size>
1172+
</property>
1173+
</spacer>
1174+
</item>
1175+
<item>
1176+
<layout class="QVBoxLayout" name="systemFont_verticalLayout">
1177+
<item>
1178+
<widget class="QLabel" name="systemFont_label_1">
1179+
<property name="text">
1180+
<string>111.11111111 DASH</string>
1181+
</property>
1182+
</widget>
1183+
</item>
1184+
<item>
1185+
<widget class="QLabel" name="systemFont_label_9">
1186+
<property name="text">
1187+
<string>909.09090909 DASH</string>
1188+
</property>
1189+
</widget>
1190+
</item>
1191+
</layout>
1192+
</item>
1193+
</layout>
1194+
</item>
1195+
</layout>
1196+
</widget>
1197+
</item>
10981198
<item>
10991199
<spacer name="verticalSpacer">
11001200
<property name="orientation">

src/qt/guiutil_font.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,12 @@ constexpr std::array<std::string_view, 18> vecIgnoreClasses{
9494
};
9595

9696
//! List of Qt objects to ignore when applying fonts
97-
constexpr std::array<std::string_view, 1> vecIgnoreObjects{
97+
constexpr std::array<std::string_view, 5> vecIgnoreObjects{
98+
"embeddedFont_label_1",
99+
"embeddedFont_label_9",
98100
"messagesWidget",
101+
"systemFont_label_1",
102+
"systemFont_label_9",
99103
};
100104

101105
//! Weights considered when testing for weights supported by a font

src/qt/optionsdialog.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,18 @@ OptionsDialog::OptionsDialog(QWidget *parent, bool enableWallet) :
217217
ui->minimizeToTray->setEnabled(false);
218218
}
219219

220+
QFont embedded_font{GUIUtil::fixedPitchFont(/*use_embedded_font=*/true)};
221+
ui->embeddedFont_radioButton->setText(ui->embeddedFont_radioButton->text().arg(embedded_font.family()));
222+
ui->embeddedFont_label_1->setFont(embedded_font);
223+
ui->embeddedFont_label_9->setFont(embedded_font);
224+
225+
QFont system_font{GUIUtil::fixedPitchFont(/*use_embedded_font=*/false)};
226+
ui->systemFont_radioButton->setText(ui->systemFont_radioButton->text().arg(system_font.family()));
227+
ui->systemFont_label_1->setFont(system_font);
228+
ui->systemFont_label_9->setFont(system_font);
229+
// Checking the embeddedFont_radioButton automatically unchecks the systemFont_radioButton.
230+
ui->systemFont_radioButton->setChecked(true);
231+
220232
GUIUtil::handleCloseWindowShortcut(this);
221233
}
222234

@@ -381,6 +393,7 @@ void OptionsDialog::setMapper()
381393
mapper->addMapping(ui->lang, OptionsModel::Language);
382394
mapper->addMapping(ui->unit, OptionsModel::DisplayUnit);
383395
mapper->addMapping(ui->thirdPartyTxUrls, OptionsModel::ThirdPartyTxUrls);
396+
mapper->addMapping(ui->embeddedFont_radioButton, OptionsModel::UseEmbeddedMonospacedFont);
384397

385398
/* Appearance
386399
See AppearanceWidget::setModel

src/qt/optionsmodel.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,12 @@ void OptionsModel::Init(bool resetSettings)
356356
addOverriddenOption("-lang");
357357

358358
language = settings.value("language").toString();
359+
360+
if (!settings.contains("UseEmbeddedMonospacedFont")) {
361+
settings.setValue("UseEmbeddedMonospacedFont", "true");
362+
}
363+
m_use_embedded_monospaced_font = settings.value("UseEmbeddedMonospacedFont").toBool();
364+
Q_EMIT useEmbeddedMonospacedFontChanged(m_use_embedded_monospaced_font);
359365
}
360366

361367
/** Helper function to copy contents from one QSettings to another.
@@ -585,6 +591,8 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
585591
}
586592
case Language:
587593
return settings.value("language");
594+
case UseEmbeddedMonospacedFont:
595+
return m_use_embedded_monospaced_font;
588596
#ifdef ENABLE_WALLET
589597
case CoinControlFeatures:
590598
return fCoinControlFeatures;
@@ -839,6 +847,11 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
839847
setRestartRequired(true);
840848
}
841849
break;
850+
case UseEmbeddedMonospacedFont:
851+
m_use_embedded_monospaced_font = value.toBool();
852+
settings.setValue("UseEmbeddedMonospacedFont", m_use_embedded_monospaced_font);
853+
Q_EMIT useEmbeddedMonospacedFontChanged(m_use_embedded_monospaced_font);
854+
break;
842855
#ifdef ENABLE_WALLET
843856
case CoinControlFeatures:
844857
fCoinControlFeatures = value.toBool();

src/qt/optionsmodel.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class OptionsModel : public QAbstractListModel
6666
FontWeightNormal, // int
6767
FontWeightBold, // int
6868
Language, // QString
69+
UseEmbeddedMonospacedFont, // bool
6970
CoinControlFeatures, // bool
7071
SubFeeFromAmount, // bool
7172
KeepChangeAddress, // bool
@@ -108,6 +109,7 @@ class OptionsModel : public QAbstractListModel
108109
bool getMinimizeOnClose() const { return fMinimizeOnClose; }
109110
BitcoinUnit getDisplayUnit() const { return m_display_bitcoin_unit; }
110111
QString getThirdPartyTxUrls() const { return strThirdPartyTxUrls; }
112+
bool getUseEmbeddedMonospacedFont() const { return m_use_embedded_monospaced_font; }
111113
bool getCoinControlFeatures() const { return fCoinControlFeatures; }
112114
bool getSubFeeFromAmount() const { return m_sub_fee_from_amount; }
113115
bool getEnablePSBTControls() const { return m_enable_psbt_controls; }
@@ -138,6 +140,7 @@ class OptionsModel : public QAbstractListModel
138140
QString language;
139141
BitcoinUnit m_display_bitcoin_unit;
140142
QString strThirdPartyTxUrls;
143+
bool m_use_embedded_monospaced_font;
141144
bool fCoinControlFeatures;
142145
bool m_sub_fee_from_amount;
143146
bool m_enable_psbt_controls;
@@ -160,6 +163,7 @@ class OptionsModel : public QAbstractListModel
160163
void coinControlFeaturesChanged(bool);
161164
void keepChangeAddressChanged(bool);
162165
void showTrayIconChanged(bool);
166+
void useEmbeddedMonospacedFontChanged(bool);
163167
};
164168

165169
#endif // BITCOIN_QT_OPTIONSMODEL_H

src/qt/overviewpage.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@ void OverviewPage::setClientModel(ClientModel *model)
302302
// Show warning, for example if this is a prerelease version
303303
connect(model, &ClientModel::alertsChanged, this, &OverviewPage::updateAlerts);
304304
updateAlerts(model->getStatusBarWarnings());
305-
setMonospacedFont(/*use_embedded_font=*/false);
305+
connect(model->getOptionsModel(), &OptionsModel::useEmbeddedMonospacedFontChanged, this, &OverviewPage::setMonospacedFont);
306+
setMonospacedFont(model->getOptionsModel()->getUseEmbeddedMonospacedFont());
306307
// explicitly update CoinJoin frame and transaction list to reflect actual settings
307308
updateAdvancedCJUI(model->getOptionsModel()->getShowAdvancedCJUI());
308309
}

0 commit comments

Comments
 (0)