5#include "ui_formwindowsettings.h"
7#include <formwindowbase_p.h>
10#include <QtWidgets/qstyle.h>
12#include <QtCore/qcompare.h>
13#include <QtCore/qregularexpression.h>
14#include <QtCore/qdebug.h>
20using namespace Qt::StringLiterals;
57 << d.marginFunction <<
',' << d.spacingFunction <<
" PixFunction="
58 << d.pixFunction <<
" Author=" << d.author <<
" Hints=" << d.includeHints
59 <<
" Grid=" << d
.hasFormGrid << d.grid.deltaX() << d.grid.deltaY()
72 lhs.marginFunction == rhs.marginFunction &&
73 lhs.spacingFunction == rhs.spacingFunction &&
74 lhs.pixFunction == rhs.pixFunction &&
75 lhs.author == rhs.author &&
76 lhs.includeHints == rhs.includeHints &&
78 lhs.grid == rhs.grid &&
85 defaultMargin = defaultSpacing = INT_MIN;
88 auto container = fw->formContainer();
89 QStyle *style = container->style();
90 layoutDefaultEnabled = defaultMargin != INT_MIN || defaultSpacing != INT_MIN;
91 if (defaultMargin == INT_MIN)
92 defaultMargin = style->pixelMetric(QStyle::PM_LayoutLeftMargin,
nullptr, container);
93 if (defaultSpacing == INT_MIN)
94 defaultSpacing = style->pixelMetric(QStyle::PM_LayoutHorizontalSpacing,
nullptr);
97 marginFunction.clear();
98 spacingFunction.clear();
99 fw->layoutFunction(&marginFunction, &spacingFunction);
100 layoutFunctionsEnabled = !marginFunction.isEmpty() || !spacingFunction.isEmpty();
102 pixFunction = fw->pixmapFunction();
104 author = fw->author();
106 includeHints = fw->includeHints();
107 includeHints.removeAll(QString());
110 grid = hasFormGrid ? fw->designerGrid() : FormWindowBase::defaultDesignerGrid();
117 fw->setAuthor(author);
118 fw->setPixmapFunction(pixFunction);
123 fw->setLayoutDefault(INT_MIN, INT_MIN);
127 fw->setLayoutFunction(marginFunction, spacingFunction);
129 fw->setLayoutFunction(QString(), QString());
132 fw->setIncludeHints(includeHints);
134 const bool hadFormGrid = fw->hasFormGrid();
136 if (hasFormGrid || hadFormGrid != hasFormGrid)
137 fw->setDesignerGrid(hasFormGrid ? grid : FormWindowBase::defaultDesignerGrid());
146 m_ui(
new QT_PREPEND_NAMESPACE(Ui)::FormWindowSettings),
147 m_formWindow(qobject_cast<FormWindowBase*>(parent)),
150 Q_ASSERT(m_formWindow);
153 m_ui->gridPanel->setCheckable(
true);
154 m_ui->gridPanel->setResetButtonVisible(
false);
156 QString deviceProfileName = m_formWindow->deviceProfileName();
157 if (deviceProfileName.isEmpty())
158 deviceProfileName = tr(
"None");
159 m_ui->deviceProfileLabel->setText(tr(
"Device Profile: %1").arg(deviceProfileName));
174 rc.author = m_ui->authorLineEdit->text();
176 if (m_ui->pixmapFunctionGroupBox->isChecked()) {
177 rc.pixFunction = m_ui->pixmapFunctionLineEdit->text();
179 rc.pixFunction.clear();
182 rc.layoutDefaultEnabled = m_ui->layoutDefaultGroupBox->isChecked();
183 rc.defaultMargin = m_ui->defaultMarginSpinBox->value();
184 rc.defaultSpacing = m_ui->defaultSpacingSpinBox->value();
186 rc.layoutFunctionsEnabled = m_ui->layoutFunctionGroupBox->isChecked();
187 rc.marginFunction = m_ui->marginFunctionLineEdit->text();
188 rc.spacingFunction = m_ui->spacingFunctionLineEdit->text();
190 const QString hints = m_ui->includeHintsTextEdit->toPlainText();
191 if (!hints.isEmpty()) {
192 rc.includeHints = hints.split(u'\n');
194 const QRegularExpression blankLine(u"^\\s*$"_s);
195 Q_ASSERT(blankLine.isValid());
196 rc.includeHints.erase(
std::remove_if(rc.includeHints.begin(), rc.includeHints.end(),
197 [blankLine](
const QString &hint){
return blankLine.match(hint).hasMatch(); }),
198 rc.includeHints.end());
201 rc.hasFormGrid = m_ui->gridPanel->isChecked();
202 rc.grid = m_ui->gridPanel->grid();
203 rc.idBasedTranslations = m_ui->idBasedTranslationsCheckBox->isChecked();
204 rc.connectSlotsByName = m_ui->connectSlotsByNameCheckBox->isChecked();
210 m_ui->layoutDefaultGroupBox->setChecked(data.layoutDefaultEnabled);
211 m_ui->defaultMarginSpinBox->setValue(data.defaultMargin);
212 m_ui->defaultSpacingSpinBox->setValue(data.defaultSpacing);
214 m_ui->layoutFunctionGroupBox->setChecked(data.layoutFunctionsEnabled);
215 m_ui->marginFunctionLineEdit->setText(data.marginFunction);
216 m_ui->spacingFunctionLineEdit->setText(data.spacingFunction);
218 m_ui->pixmapFunctionLineEdit->setText(data.pixFunction);
219 m_ui->pixmapFunctionGroupBox->setChecked(!data.pixFunction.isEmpty());
221 m_ui->authorLineEdit->setText(data.author);
223 if (data.includeHints.isEmpty()) {
224 m_ui->includeHintsTextEdit->clear();
226 m_ui->includeHintsTextEdit->setText(data.includeHints.join(u'\n'));
229 m_ui->gridPanel->setChecked(data.hasFormGrid);
230 m_ui->gridPanel->setGrid(data.grid);
231 m_ui->idBasedTranslationsCheckBox->setChecked(data.idBasedTranslations);
232 m_ui->connectSlotsByNameCheckBox->setChecked(data.connectSlotsByName);
239 if (newData != *m_oldData) {
241 m_formWindow->setDirty(
true);
Auxiliary methods to store/retrieve settings.
QDebug operator<<(QDebug str, const FormWindowData &d)