Editor: simplify font to display options page connection

Operating on saved settings is less error prone and easier to maintain.

Change-Id: I92e3a6b52296cddc302ba2e4410edfd243b8ad32
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2023-05-08 12:03:20 +02:00
parent 5cb0a56296
commit 06b0d105dc
2 changed files with 13 additions and 41 deletions

View File

@@ -4,6 +4,7 @@
#include "displaysettingspage.h"
#include "displaysettings.h"
#include "fontsettings.h"
#include "marginsettings.h"
#include "texteditorconstants.h"
#include "texteditorsettings.h"
@@ -50,23 +51,18 @@ public:
enableTextWrappingHintLabel = new QLabel(Tr::tr("<i>Set <a href=\"font zoom\">font line spacing</a> "
"to 100% to enable text wrapping option.</i>"));
fontSettingsPageLineSpacing = fontSettingsPageLineSpacingLink();
if (fontSettingsPageLineSpacing) {
connect(fontSettingsPageLineSpacing, &QSpinBox::valueChanged,
this, [this](const int &value) {
if (value != 100)
enableTextWrapping->setChecked(false);
enableTextWrapping->setEnabled(value == 100);
enableTextWrappingHintLabel->setVisible(value != 100);
});
if (fontSettingsPageLineSpacing->value() != 100)
auto updateWrapping = [this] {
const bool normalLineSpacing = TextEditorSettings::fontSettings().relativeLineSpacing() == 100;
if (!normalLineSpacing)
enableTextWrapping->setChecked(false);
enableTextWrapping->setEnabled(normalLineSpacing);
enableTextWrappingHintLabel->setVisible(!normalLineSpacing);
};
enableTextWrapping->setEnabled(fontSettingsPageLineSpacing->value() == 100);
enableTextWrappingHintLabel->setVisible(fontSettingsPageLineSpacing->value() != 100);
}
updateWrapping();
connect(TextEditorSettings::instance(), &TextEditorSettings::fontSettingsChanged,
this, updateWrapping);
connect(enableTextWrappingHintLabel, &QLabel::linkActivated, [] {
Core::ICore::showOptionsDialog(Constants::TEXT_EDITOR_FONT_SETTINGS); } );
@@ -177,8 +173,6 @@ public:
void settingsToUI();
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
QSpinBox *fontSettingsPageLineSpacingLink();
DisplaySettingsPagePrivate *m_data = nullptr;
QCheckBox *enableTextWrapping;
@@ -208,8 +202,6 @@ public:
QRadioButton *atMargin;
QRadioButton *rightAligned;
QRadioButton *betweenLines;
QSpinBox *fontSettingsPageLineSpacing = nullptr;
};
void DisplaySettingsWidget::apply()
@@ -226,10 +218,8 @@ void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
{
displaySettings.m_displayLineNumbers = displayLineNumbers->isChecked();
displaySettings.m_textWrapping = enableTextWrapping->isChecked();
if (fontSettingsPageLineSpacing) {
if (fontSettingsPageLineSpacing->value() != 100)
displaySettings.m_textWrapping = false;
}
if (TextEditorSettings::fontSettings().relativeLineSpacing() != 100)
displaySettings.m_textWrapping = false;
marginSettings.m_showMargin = showWrapColumn->isChecked();
marginSettings.m_tintMarginArea = tintMarginArea->isChecked();
marginSettings.m_useIndenter = useIndenter->isChecked();
@@ -322,23 +312,6 @@ void DisplaySettingsWidget::setDisplaySettings(const DisplaySettings &newDisplay
}
}
QSpinBox *DisplaySettingsWidget::fontSettingsPageLineSpacingLink()
{
for (const auto &page : Core::IOptionsPage::allOptionsPages()) {
QWidget *widget = page->widget();
if (!widget)
continue;
for (QSpinBox *spinBox : widget->findChildren<QSpinBox *>()) {
if (spinBox->objectName() == QLatin1String("FontSettingsPage.LineSpacingSpinBox"))
return spinBox;
}
}
return nullptr;
}
DisplaySettingsPage::DisplaySettingsPage()
: d(new DisplaySettingsPagePrivate)
{

View File

@@ -119,7 +119,6 @@ public:
m_zoomSpinBox->setValue(m_value.fontZoom());
m_lineSpacingSpinBox = new QSpinBox;
m_lineSpacingSpinBox->setObjectName(QLatin1String("FontSettingsPage.LineSpacingSpinBox"));
m_lineSpacingSpinBox->setSuffix(Tr::tr("%"));
m_lineSpacingSpinBox->setRange(50, 3000);
m_lineSpacingSpinBox->setValue(m_value.relativeLineSpacing());