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

View File

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