forked from qt-creator/qt-creator
TextEditor: Move DisplaySettings closer to new code layout
Change-Id: Ibf095a52f6c689a9f36caf6183e6737bae4e68bf Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -33,58 +33,49 @@
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <QPointer>
|
||||
|
||||
namespace TextEditor {
|
||||
|
||||
struct DisplaySettingsPage::DisplaySettingsPagePrivate
|
||||
class DisplaySettingsPagePrivate
|
||||
{
|
||||
public:
|
||||
DisplaySettingsPagePrivate();
|
||||
|
||||
QPointer<QWidget> m_widget;
|
||||
Internal::Ui::DisplaySettingsPage *m_page = nullptr;
|
||||
DisplaySettings m_displaySettings;
|
||||
MarginSettings m_marginSettings;
|
||||
QString m_settingsPrefix;
|
||||
};
|
||||
|
||||
DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate()
|
||||
DisplaySettingsPagePrivate::DisplaySettingsPagePrivate()
|
||||
{
|
||||
m_settingsPrefix = QLatin1String("text");
|
||||
m_displaySettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
||||
m_marginSettings.fromSettings(m_settingsPrefix, Core::ICore::settings());
|
||||
}
|
||||
|
||||
DisplaySettingsPage::DisplaySettingsPage()
|
||||
: d(new DisplaySettingsPagePrivate)
|
||||
class DisplaySettingsWidget final : public Core::IOptionsPageWidget
|
||||
{
|
||||
setId(Constants::TEXT_EDITOR_DISPLAY_SETTINGS);
|
||||
setDisplayName(tr("Display"));
|
||||
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
||||
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
|
||||
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
||||
}
|
||||
Q_DECLARE_TR_FUNCTIONS(TextEditor::DisplaySettingsPage)
|
||||
|
||||
DisplaySettingsPage::~DisplaySettingsPage()
|
||||
{
|
||||
delete d;
|
||||
}
|
||||
|
||||
QWidget *DisplaySettingsPage::widget()
|
||||
{
|
||||
if (!d->m_widget) {
|
||||
d->m_widget = new QWidget;
|
||||
d->m_page = new Internal::Ui::DisplaySettingsPage;
|
||||
d->m_page->setupUi(d->m_widget);
|
||||
public:
|
||||
DisplaySettingsWidget(DisplaySettingsPagePrivate *data)
|
||||
: m_data(data)
|
||||
{
|
||||
m_ui.setupUi(this);
|
||||
settingsToUI();
|
||||
}
|
||||
return d->m_widget;
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::apply()
|
||||
void apply() final;
|
||||
|
||||
void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
|
||||
void settingsToUI();
|
||||
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
||||
|
||||
DisplaySettingsPagePrivate *m_data = nullptr;
|
||||
Internal::Ui::DisplaySettingsPage m_ui;
|
||||
};
|
||||
|
||||
void DisplaySettingsWidget::apply()
|
||||
{
|
||||
if (!d->m_page) // page was never shown
|
||||
return;
|
||||
DisplaySettings newDisplaySettings;
|
||||
MarginSettings newMarginSettings;
|
||||
|
||||
@@ -92,73 +83,64 @@ void DisplaySettingsPage::apply()
|
||||
setDisplaySettings(newDisplaySettings, newMarginSettings);
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::finish()
|
||||
{
|
||||
delete d->m_widget;
|
||||
if (!d->m_page) // page was never shown
|
||||
return;
|
||||
delete d->m_page;
|
||||
d->m_page = nullptr;
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings,
|
||||
void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings,
|
||||
MarginSettings &marginSettings) const
|
||||
{
|
||||
displaySettings.m_displayLineNumbers = d->m_page->displayLineNumbers->isChecked();
|
||||
displaySettings.m_textWrapping = d->m_page->enableTextWrapping->isChecked();
|
||||
marginSettings.m_showMargin = d->m_page->showWrapColumn->isChecked();
|
||||
marginSettings.m_marginColumn = d->m_page->wrapColumn->value();
|
||||
displaySettings.m_visualizeWhitespace = d->m_page->visualizeWhitespace->isChecked();
|
||||
displaySettings.m_displayFoldingMarkers = d->m_page->displayFoldingMarkers->isChecked();
|
||||
displaySettings.m_highlightCurrentLine = d->m_page->highlightCurrentLine->isChecked();
|
||||
displaySettings.m_highlightBlocks = d->m_page->highlightBlocks->isChecked();
|
||||
displaySettings.m_animateMatchingParentheses = d->m_page->animateMatchingParentheses->isChecked();
|
||||
displaySettings.m_highlightMatchingParentheses = d->m_page->highlightMatchingParentheses->isChecked();
|
||||
displaySettings.m_markTextChanges = d->m_page->markTextChanges->isChecked();
|
||||
displaySettings.m_autoFoldFirstComment = d->m_page->autoFoldFirstComment->isChecked();
|
||||
displaySettings.m_centerCursorOnScroll = d->m_page->centerOnScroll->isChecked();
|
||||
displaySettings.m_openLinksInNextSplit = d->m_page->openLinksInNextSplit->isChecked();
|
||||
displaySettings.m_displayFileEncoding = d->m_page->displayFileEncoding->isChecked();
|
||||
displaySettings.m_scrollBarHighlights = d->m_page->scrollBarHighlights->isChecked();
|
||||
displaySettings.m_animateNavigationWithinFile = d->m_page->animateNavigationWithinFile->isChecked();
|
||||
displaySettings.m_displayAnnotations = d->m_page->displayAnnotations->isChecked();
|
||||
if (d->m_page->leftAligned->isChecked())
|
||||
displaySettings.m_displayLineNumbers = m_ui.displayLineNumbers->isChecked();
|
||||
displaySettings.m_textWrapping = m_ui.enableTextWrapping->isChecked();
|
||||
marginSettings.m_showMargin = m_ui.showWrapColumn->isChecked();
|
||||
marginSettings.m_marginColumn = m_ui.wrapColumn->value();
|
||||
displaySettings.m_visualizeWhitespace = m_ui.visualizeWhitespace->isChecked();
|
||||
displaySettings.m_displayFoldingMarkers = m_ui.displayFoldingMarkers->isChecked();
|
||||
displaySettings.m_highlightCurrentLine = m_ui.highlightCurrentLine->isChecked();
|
||||
displaySettings.m_highlightBlocks = m_ui.highlightBlocks->isChecked();
|
||||
displaySettings.m_animateMatchingParentheses = m_ui.animateMatchingParentheses->isChecked();
|
||||
displaySettings.m_highlightMatchingParentheses = m_ui.highlightMatchingParentheses->isChecked();
|
||||
displaySettings.m_markTextChanges = m_ui.markTextChanges->isChecked();
|
||||
displaySettings.m_autoFoldFirstComment = m_ui.autoFoldFirstComment->isChecked();
|
||||
displaySettings.m_centerCursorOnScroll = m_ui.centerOnScroll->isChecked();
|
||||
displaySettings.m_openLinksInNextSplit = m_ui.openLinksInNextSplit->isChecked();
|
||||
displaySettings.m_displayFileEncoding = m_ui.displayFileEncoding->isChecked();
|
||||
displaySettings.m_scrollBarHighlights = m_ui.scrollBarHighlights->isChecked();
|
||||
displaySettings.m_animateNavigationWithinFile = m_ui.animateNavigationWithinFile->isChecked();
|
||||
displaySettings.m_displayAnnotations = m_ui.displayAnnotations->isChecked();
|
||||
if (m_ui.leftAligned->isChecked())
|
||||
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToContent;
|
||||
else if (d->m_page->atMargin->isChecked())
|
||||
else if (m_ui.atMargin->isChecked())
|
||||
displaySettings.m_annotationAlignment = AnnotationAlignment::NextToMargin;
|
||||
else if (d->m_page->rightAligned->isChecked())
|
||||
else if (m_ui.rightAligned->isChecked())
|
||||
displaySettings.m_annotationAlignment = AnnotationAlignment::RightSide;
|
||||
else if (d->m_page->betweenLines->isChecked())
|
||||
else if (m_ui.betweenLines->isChecked())
|
||||
displaySettings.m_annotationAlignment = AnnotationAlignment::BetweenLines;
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::settingsToUI()
|
||||
void DisplaySettingsWidget::settingsToUI()
|
||||
{
|
||||
const DisplaySettings &displaySettings = d->m_displaySettings;
|
||||
const MarginSettings &marginSettings = d->m_marginSettings;
|
||||
d->m_page->displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||
d->m_page->enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||
d->m_page->showWrapColumn->setChecked(marginSettings.m_showMargin);
|
||||
d->m_page->wrapColumn->setValue(marginSettings.m_marginColumn);
|
||||
d->m_page->visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||
d->m_page->displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||
d->m_page->highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||
d->m_page->highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||
d->m_page->animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||
d->m_page->highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
|
||||
d->m_page->markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||
d->m_page->autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||
d->m_page->centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||
d->m_page->openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
|
||||
d->m_page->displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
|
||||
d->m_page->scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
|
||||
d->m_page->animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
|
||||
d->m_page->displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
|
||||
const DisplaySettings &displaySettings = m_data->m_displaySettings;
|
||||
const MarginSettings &marginSettings = m_data->m_marginSettings;
|
||||
m_ui.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||
m_ui.enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||
m_ui.showWrapColumn->setChecked(marginSettings.m_showMargin);
|
||||
m_ui.wrapColumn->setValue(marginSettings.m_marginColumn);
|
||||
m_ui.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||
m_ui.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||
m_ui.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||
m_ui.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||
m_ui.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||
m_ui.highlightMatchingParentheses->setChecked(displaySettings.m_highlightMatchingParentheses);
|
||||
m_ui.markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||
m_ui.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||
m_ui.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||
m_ui.openLinksInNextSplit->setChecked(displaySettings.m_openLinksInNextSplit);
|
||||
m_ui.displayFileEncoding->setChecked(displaySettings.m_displayFileEncoding);
|
||||
m_ui.scrollBarHighlights->setChecked(displaySettings.m_scrollBarHighlights);
|
||||
m_ui.animateNavigationWithinFile->setChecked(displaySettings.m_animateNavigationWithinFile);
|
||||
m_ui.displayAnnotations->setChecked(displaySettings.m_displayAnnotations);
|
||||
switch (displaySettings.m_annotationAlignment) {
|
||||
case AnnotationAlignment::NextToContent: d->m_page->leftAligned->setChecked(true); break;
|
||||
case AnnotationAlignment::NextToMargin: d->m_page->atMargin->setChecked(true); break;
|
||||
case AnnotationAlignment::RightSide: d->m_page->rightAligned->setChecked(true); break;
|
||||
case AnnotationAlignment::BetweenLines: d->m_page->betweenLines->setChecked(true); break;
|
||||
case AnnotationAlignment::NextToContent: m_ui.leftAligned->setChecked(true); break;
|
||||
case AnnotationAlignment::NextToMargin: m_ui.atMargin->setChecked(true); break;
|
||||
case AnnotationAlignment::RightSide: m_ui.rightAligned->setChecked(true); break;
|
||||
case AnnotationAlignment::BetweenLines: m_ui.betweenLines->setChecked(true); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,22 +154,38 @@ const MarginSettings &DisplaySettingsPage::marginSettings() const
|
||||
return d->m_marginSettings;
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySettings,
|
||||
void DisplaySettingsWidget::setDisplaySettings(const DisplaySettings &newDisplaySettings,
|
||||
const MarginSettings &newMarginSettings)
|
||||
{
|
||||
if (newDisplaySettings != d->m_displaySettings) {
|
||||
d->m_displaySettings = newDisplaySettings;
|
||||
d->m_displaySettings.toSettings(d->m_settingsPrefix, Core::ICore::settings());
|
||||
if (newDisplaySettings != m_data->m_displaySettings) {
|
||||
m_data->m_displaySettings = newDisplaySettings;
|
||||
m_data->m_displaySettings.toSettings(m_data->m_settingsPrefix, Core::ICore::settings());
|
||||
|
||||
emit TextEditorSettings::instance()->displaySettingsChanged(newDisplaySettings);
|
||||
}
|
||||
|
||||
if (newMarginSettings != d->m_marginSettings) {
|
||||
d->m_marginSettings = newMarginSettings;
|
||||
d->m_marginSettings.toSettings(d->m_settingsPrefix, Core::ICore::settings());
|
||||
if (newMarginSettings != m_data->m_marginSettings) {
|
||||
m_data->m_marginSettings = newMarginSettings;
|
||||
m_data->m_marginSettings.toSettings(m_data->m_settingsPrefix, Core::ICore::settings());
|
||||
|
||||
emit TextEditorSettings::instance()->marginSettingsChanged(newMarginSettings);
|
||||
}
|
||||
}
|
||||
|
||||
DisplaySettingsPage::DisplaySettingsPage()
|
||||
: d(new DisplaySettingsPagePrivate)
|
||||
{
|
||||
setId(Constants::TEXT_EDITOR_DISPLAY_SETTINGS);
|
||||
setDisplayName(DisplaySettingsWidget::tr("Display"));
|
||||
setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
|
||||
setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
|
||||
setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
|
||||
setWidgetCreator([this] { return new DisplaySettingsWidget(d); });
|
||||
}
|
||||
|
||||
DisplaySettingsPage::~DisplaySettingsPage()
|
||||
{
|
||||
delete d;
|
||||
}
|
||||
|
||||
} // TextEditor
|
||||
|
@@ -25,37 +25,24 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "texteditor_global.h"
|
||||
|
||||
#include <coreplugin/dialogs/ioptionspage.h>
|
||||
|
||||
namespace TextEditor {
|
||||
|
||||
class DisplaySettings;
|
||||
class MarginSettings;
|
||||
class DisplaySettingsPagePrivate;
|
||||
|
||||
class DisplaySettingsPage : public Core::IOptionsPage
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DisplaySettingsPage();
|
||||
~DisplaySettingsPage() override;
|
||||
|
||||
// IOptionsPage
|
||||
QWidget *widget() override;
|
||||
void apply() override;
|
||||
void finish() override;
|
||||
|
||||
const DisplaySettings &displaySettings() const;
|
||||
const MarginSettings &marginSettings() const;
|
||||
|
||||
private:
|
||||
void settingsFromUI(DisplaySettings &displaySettings, MarginSettings &marginSettings) const;
|
||||
void settingsToUI();
|
||||
void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings);
|
||||
|
||||
struct DisplaySettingsPagePrivate;
|
||||
DisplaySettingsPagePrivate *d;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user