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;
58 << d.marginFunction <<
',' << d.spacingFunction <<
" PixFunction="
59 << d.pixFunction <<
" Author=" << d.author <<
" Hints=" << d.includeHints
60 <<
" Grid=" << d
.hasFormGrid << d.grid.deltaX() << d.grid.deltaY()
62 <<
" ID-based translation label" << d.idBasedTranslationLabel
74 lhs.marginFunction == rhs.marginFunction &&
75 lhs.spacingFunction == rhs.spacingFunction &&
76 lhs.pixFunction == rhs.pixFunction &&
77 lhs.author == rhs.author &&
78 lhs.includeHints == rhs.includeHints &&
80 lhs.grid == rhs.grid &&
82 lhs.idBasedTranslationLabel== rhs.idBasedTranslationLabel &&
88 defaultMargin = defaultSpacing = INT_MIN;
91 auto container = fw->formContainer();
92 QStyle *style = container->style();
93 layoutDefaultEnabled = defaultMargin != INT_MIN || defaultSpacing != INT_MIN;
94 if (defaultMargin == INT_MIN)
95 defaultMargin = style->pixelMetric(QStyle::PM_LayoutLeftMargin,
nullptr, container);
96 if (defaultSpacing == INT_MIN)
97 defaultSpacing = style->pixelMetric(QStyle::PM_LayoutHorizontalSpacing,
nullptr);
100 marginFunction.clear();
101 spacingFunction.clear();
102 fw->layoutFunction(&marginFunction, &spacingFunction);
103 layoutFunctionsEnabled = !marginFunction.isEmpty() || !spacingFunction.isEmpty();
105 pixFunction = fw->pixmapFunction();
107 author = fw->author();
109 includeHints = fw->includeHints();
110 includeHints.removeAll(QString());
113 grid = hasFormGrid ? fw->designerGrid() : FormWindowBase::defaultDesignerGrid();
115 idBasedTranslationLabel = fw->idBasedTranslationLabel();
121 fw->setAuthor(author);
122 fw->setPixmapFunction(pixFunction);
127 fw->setLayoutDefault(INT_MIN, INT_MIN);
131 fw->setLayoutFunction(marginFunction, spacingFunction);
133 fw->setLayoutFunction(QString(), QString());
136 fw->setIncludeHints(includeHints);
138 const bool hadFormGrid = fw->hasFormGrid();
140 if (hasFormGrid || hadFormGrid != hasFormGrid)
141 fw->setDesignerGrid(hasFormGrid ? grid : FormWindowBase::defaultDesignerGrid());
143 fw->setIdBasedTranslationLabel(idBasedTranslationLabel);
151 m_ui(
new QT_PREPEND_NAMESPACE(Ui)::FormWindowSettings),
152 m_formWindow(qobject_cast<FormWindowBase*>(parent)),
155 Q_ASSERT(m_formWindow);
158 m_ui->gridPanel->setCheckable(
true);
159 m_ui->gridPanel->setResetButtonVisible(
false);
161 QString deviceProfileName = m_formWindow->deviceProfileName();
162 if (deviceProfileName.isEmpty())
163 deviceProfileName = tr(
"None");
164 m_ui->deviceProfileLabel->setText(tr(
"Device Profile: %1").arg(deviceProfileName));
179 rc.author = m_ui->authorLineEdit->text();
181 if (m_ui->pixmapFunctionGroupBox->isChecked()) {
182 rc.pixFunction = m_ui->pixmapFunctionLineEdit->text();
184 rc.pixFunction.clear();
187 rc.layoutDefaultEnabled = m_ui->layoutDefaultGroupBox->isChecked();
188 rc.defaultMargin = m_ui->defaultMarginSpinBox->value();
189 rc.defaultSpacing = m_ui->defaultSpacingSpinBox->value();
191 rc.layoutFunctionsEnabled = m_ui->layoutFunctionGroupBox->isChecked();
192 rc.marginFunction = m_ui->marginFunctionLineEdit->text();
193 rc.spacingFunction = m_ui->spacingFunctionLineEdit->text();
195 const QString hints = m_ui->includeHintsTextEdit->toPlainText();
196 if (!hints.isEmpty()) {
197 rc.includeHints = hints.split(u'\n');
199 const QRegularExpression blankLine(u"^\\s*$"_s);
200 Q_ASSERT(blankLine.isValid());
201 rc.includeHints.erase(
std::remove_if(rc.includeHints.begin(), rc.includeHints.end(),
202 [blankLine](
const QString &hint){
return blankLine.match(hint).hasMatch(); }),
203 rc.includeHints.end());
206 rc.hasFormGrid = m_ui->gridPanel->isChecked();
207 rc.grid = m_ui->gridPanel->grid();
208 rc.idBasedTranslations = m_ui->idBasedTranslationsCheckBox->isChecked();
209 rc.idBasedTranslationLabel = m_ui->idBasedTranslationLabelLineEdit->text();
210 rc.connectSlotsByName = m_ui->connectSlotsByNameCheckBox->isChecked();
216 m_ui->layoutDefaultGroupBox->setChecked(data.layoutDefaultEnabled);
217 m_ui->defaultMarginSpinBox->setValue(data.defaultMargin);
218 m_ui->defaultSpacingSpinBox->setValue(data.defaultSpacing);
220 m_ui->layoutFunctionGroupBox->setChecked(data.layoutFunctionsEnabled);
221 m_ui->marginFunctionLineEdit->setText(data.marginFunction);
222 m_ui->spacingFunctionLineEdit->setText(data.spacingFunction);
224 m_ui->pixmapFunctionLineEdit->setText(data.pixFunction);
225 m_ui->pixmapFunctionGroupBox->setChecked(!data.pixFunction.isEmpty());
227 m_ui->authorLineEdit->setText(data.author);
229 if (data.includeHints.isEmpty()) {
230 m_ui->includeHintsTextEdit->clear();
232 m_ui->includeHintsTextEdit->setText(data.includeHints.join(u'\n'));
235 m_ui->gridPanel->setChecked(data.hasFormGrid);
236 m_ui->gridPanel->setGrid(data.grid);
237 m_ui->idBasedTranslationsCheckBox->setChecked(data.idBasedTranslations);
238 m_ui->idBasedTranslationLabelLineEdit->setText(data.idBasedTranslationLabel);
239 m_ui->connectSlotsByNameCheckBox->setChecked(data.connectSlotsByName);
246 if (newData != *m_oldData) {
248 m_formWindow->setDirty(
true);
Auxiliary methods to store/retrieve settings.
QDebug operator<<(QDebug str, const FormWindowData &d)