6#include "ui_formwindowsettings.h"
8#include <formwindowbase_p.h>
11#include <QtWidgets/qstyle.h>
13#include <QtCore/qcompare.h>
14#include <QtCore/qregularexpression.h>
15#include <QtCore/qdebug.h>
21using namespace Qt::StringLiterals;
59 << d.marginFunction <<
',' << d.spacingFunction <<
" PixFunction="
60 << d.pixFunction <<
" Author=" << d.author <<
" Hints=" << d.includeHints
61 <<
" Grid=" << d
.hasFormGrid << d.grid.deltaX() << d.grid.deltaY()
63 <<
" ID-based translation label" << d.idBasedTranslationLabel
75 lhs.marginFunction == rhs.marginFunction &&
76 lhs.spacingFunction == rhs.spacingFunction &&
77 lhs.pixFunction == rhs.pixFunction &&
78 lhs.author == rhs.author &&
79 lhs.includeHints == rhs.includeHints &&
81 lhs.grid == rhs.grid &&
83 lhs.idBasedTranslationLabel== rhs.idBasedTranslationLabel &&
89 defaultMargin = defaultSpacing = INT_MIN;
92 auto container = fw->formContainer();
93 QStyle *style = container->style();
94 layoutDefaultEnabled = defaultMargin != INT_MIN || defaultSpacing != INT_MIN;
95 if (defaultMargin == INT_MIN)
96 defaultMargin = style->pixelMetric(QStyle::PM_LayoutLeftMargin,
nullptr, container);
97 if (defaultSpacing == INT_MIN)
98 defaultSpacing = style->pixelMetric(QStyle::PM_LayoutHorizontalSpacing,
nullptr);
101 marginFunction.clear();
102 spacingFunction.clear();
103 fw->layoutFunction(&marginFunction, &spacingFunction);
104 layoutFunctionsEnabled = !marginFunction.isEmpty() || !spacingFunction.isEmpty();
106 pixFunction = fw->pixmapFunction();
108 author = fw->author();
110 includeHints = fw->includeHints();
111 includeHints.removeAll(QString());
114 grid = hasFormGrid ? fw->designerGrid() : FormWindowBase::defaultDesignerGrid();
116 idBasedTranslationLabel = fw->idBasedTranslationLabel();
122 fw->setAuthor(author);
123 fw->setPixmapFunction(pixFunction);
128 fw->setLayoutDefault(INT_MIN, INT_MIN);
132 fw->setLayoutFunction(marginFunction, spacingFunction);
134 fw->setLayoutFunction(QString(), QString());
137 fw->setIncludeHints(includeHints);
139 const bool hadFormGrid = fw->hasFormGrid();
142 fw->setDesignerGrid(hasFormGrid ? grid : FormWindowBase::defaultDesignerGrid());
144 fw->setIdBasedTranslationLabel(idBasedTranslationLabel);
152 m_ui(
new QT_PREPEND_NAMESPACE(Ui)::FormWindowSettings),
153 m_formWindow(qobject_cast<FormWindowBase*>(parent)),
156 Q_ASSERT(m_formWindow);
159 m_ui->gridPanel->setCheckable(
true);
160 m_ui->gridPanel->setResetButtonVisible(
false);
162 QString deviceProfileName = m_formWindow->deviceProfileName();
163 if (deviceProfileName.isEmpty())
164 deviceProfileName = tr(
"None");
165 m_ui->deviceProfileLabel->setText(tr(
"Device Profile: %1").arg(deviceProfileName));
180 rc.author = m_ui->authorLineEdit->text();
182 if (m_ui->pixmapFunctionGroupBox->isChecked()) {
183 rc.pixFunction = m_ui->pixmapFunctionLineEdit->text();
185 rc.pixFunction.clear();
188 rc.layoutDefaultEnabled = m_ui->layoutDefaultGroupBox->isChecked();
189 rc.defaultMargin = m_ui->defaultMarginSpinBox->value();
190 rc.defaultSpacing = m_ui->defaultSpacingSpinBox->value();
192 rc.layoutFunctionsEnabled = m_ui->layoutFunctionGroupBox->isChecked();
193 rc.marginFunction = m_ui->marginFunctionLineEdit->text();
194 rc.spacingFunction = m_ui->spacingFunctionLineEdit->text();
196 const QString hints = m_ui->includeHintsTextEdit->toPlainText();
197 if (!hints.isEmpty()) {
198 rc.includeHints = hints.split(u'\n');
200 const QRegularExpression blankLine(u"^\\s*$"_s);
201 Q_ASSERT(blankLine.isValid());
202 rc.includeHints.erase(
std::remove_if(rc.includeHints.begin(), rc.includeHints.end(),
203 [blankLine](
const QString &hint){
return blankLine.match(hint).hasMatch(); }),
204 rc.includeHints.end());
207 rc.hasFormGrid = m_ui->gridPanel->isChecked();
208 rc.grid = m_ui->gridPanel->grid();
209 rc.idBasedTranslations = m_ui->idBasedTranslationsCheckBox->isChecked();
210 rc.idBasedTranslationLabel = m_ui->idBasedTranslationLabelLineEdit->text();
211 rc.connectSlotsByName = m_ui->connectSlotsByNameCheckBox->isChecked();
217 m_ui->layoutDefaultGroupBox->setChecked(data.layoutDefaultEnabled);
218 m_ui->defaultMarginSpinBox->setValue(data.defaultMargin);
219 m_ui->defaultSpacingSpinBox->setValue(data.defaultSpacing);
221 m_ui->layoutFunctionGroupBox->setChecked(data.layoutFunctionsEnabled);
222 m_ui->marginFunctionLineEdit->setText(data.marginFunction);
223 m_ui->spacingFunctionLineEdit->setText(data.spacingFunction);
225 m_ui->pixmapFunctionLineEdit->setText(data.pixFunction);
226 m_ui->pixmapFunctionGroupBox->setChecked(!data.pixFunction.isEmpty());
228 m_ui->authorLineEdit->setText(data.author);
230 if (data.includeHints.isEmpty()) {
231 m_ui->includeHintsTextEdit->clear();
233 m_ui->includeHintsTextEdit->setText(data.includeHints.join(u'\n'));
236 m_ui->gridPanel->setChecked(data.hasFormGrid);
237 m_ui->gridPanel->setGrid(data.grid);
238 m_ui->idBasedTranslationsCheckBox->setChecked(data.idBasedTranslations);
239 m_ui->idBasedTranslationLabelLineEdit->setText(data.idBasedTranslationLabel);
240 m_ui->connectSlotsByNameCheckBox->setChecked(data.connectSlotsByName);
247 if (newData != *m_oldData) {
249 m_formWindow->setDirty(
true);
Auxiliary methods to store/retrieve settings.
QDebug operator<<(QDebug str, const FormWindowData &d)