Utils: Provide a method to set total cell span for aspects

Only row span used currently in some base aspects, can be
extended once needed.

Used in the Perf config widget to correct recent change.

Change-Id: I37fae178cbfb8d493e0232e53e877d0e317ec9f2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2021-04-08 15:44:45 +02:00
parent 756a8f6175
commit 7471c3a378
4 changed files with 25 additions and 5 deletions

View File

@@ -78,6 +78,8 @@ public:
bool m_enabled = true; bool m_enabled = true;
bool m_readOnly = true; bool m_readOnly = true;
bool m_autoApply = true; bool m_autoApply = true;
int m_spanX = 1;
int m_spanY = 1;
BaseAspect::ConfigWidgetCreator m_configWidgetCreator; BaseAspect::ConfigWidgetCreator m_configWidgetCreator;
QList<QPointer<QWidget>> m_subWidgets; QList<QPointer<QWidget>> m_subWidgets;
}; };
@@ -224,9 +226,12 @@ void BaseAspect::addLabeledItem(LayoutBuilder &builder, QWidget *widget)
setupLabel(); setupLabel();
if (QLabel *l = label()) { if (QLabel *l = label()) {
l->setBuddy(widget); l->setBuddy(widget);
builder.addItems({l, widget}); builder.addItem(l);
LayoutBuilder::LayoutItem item(widget);
item.span = std::max(d->m_spanX - 1, 1);
builder.addItem(item);
} else { } else {
builder.addItems({LayoutBuilder::LayoutItem(widget)}); builder.addItem(LayoutBuilder::LayoutItem(widget));
} }
} }
@@ -316,6 +321,12 @@ void BaseAspect::setReadOnly(bool readOnly)
} }
} }
void BaseAspect::setSpan(int x, int y)
{
d->m_spanX = x;
d->m_spanY = y;
}
bool BaseAspect::isAutoApply() const bool BaseAspect::isAutoApply() const
{ {
return d->m_autoApply; return d->m_autoApply;
@@ -735,6 +746,7 @@ StringAspect::StringAspect()
: d(new Internal::StringAspectPrivate) : d(new Internal::StringAspectPrivate)
{ {
setDefaultValue(QString()); setDefaultValue(QString());
setSpan(2, 1); // Default: Label + something
} }
/*! /*!
@@ -1219,6 +1231,7 @@ BoolAspect::BoolAspect(const QString &settingsKey)
{ {
setDefaultValue(false); setDefaultValue(false);
setSettingsKey(settingsKey); setSettingsKey(settingsKey);
setSpan(2, 1);
} }
/*! /*!
@@ -1364,7 +1377,9 @@ void BoolAspect::setHandlesGroup(QGroupBox *box)
SelectionAspect::SelectionAspect() SelectionAspect::SelectionAspect()
: d(new Internal::SelectionAspectPrivate) : d(new Internal::SelectionAspectPrivate)
{} {
setSpan(2, 1);
}
/*! /*!
\reimp \reimp
@@ -1547,6 +1562,7 @@ MultiSelectionAspect::MultiSelectionAspect()
: d(new Internal::MultiSelectionAspectPrivate(this)) : d(new Internal::MultiSelectionAspectPrivate(this))
{ {
setDefaultValue(QStringList()); setDefaultValue(QStringList());
setSpan(2, 1);
} }
/*! /*!
@@ -1653,6 +1669,7 @@ IntegerAspect::IntegerAspect()
: d(new Internal::IntegerAspectPrivate) : d(new Internal::IntegerAspectPrivate)
{ {
setDefaultValue(qint64(0)); setDefaultValue(qint64(0));
setSpan(2, 1);
} }
/*! /*!
@@ -1773,6 +1790,7 @@ DoubleAspect::DoubleAspect()
: d(new Internal::DoubleAspectPrivate) : d(new Internal::DoubleAspectPrivate)
{ {
setDefaultValue(double(0)); setDefaultValue(double(0));
setSpan(2, 1);
} }
/*! /*!

View File

@@ -98,6 +98,8 @@ public:
void setReadOnly(bool enabled); void setReadOnly(bool enabled);
void setSpan(int x, int y = 1);
QString labelText() const; QString labelText() const;
void setLabelText(const QString &labelText); void setLabelText(const QString &labelText);
void setLabelPixmap(const QPixmap &labelPixmap); void setLabelPixmap(const QPixmap &labelPixmap);

View File

@@ -117,10 +117,9 @@ PerfConfigWidget::PerfConfigWidget(PerfSettings *settings, QWidget *parent)
Grid { Grid {
m_settings->callgraphMode, m_settings->stackSize, nl, m_settings->callgraphMode, m_settings->stackSize, nl,
m_settings->sampleMode, m_settings->period, nl, m_settings->sampleMode, m_settings->period, nl,
m_settings->extraArguments,
}, },
Row { m_settings->extraArguments }, // FIXME: Align with above.
Stretch() Stretch()
}.attachTo(this); }.attachTo(this);
} }

View File

@@ -83,6 +83,7 @@ PerfSettings::PerfSettings(ProjectExplorer::Target *target)
extraArguments.setSettingsKey("Analyzer.Perf.ExtraArguments"); extraArguments.setSettingsKey("Analyzer.Perf.ExtraArguments");
extraArguments.setDisplayStyle(StringAspect::DisplayStyle::LineEditDisplay); extraArguments.setDisplayStyle(StringAspect::DisplayStyle::LineEditDisplay);
extraArguments.setLabelText(tr("Additional arguments:")); extraArguments.setLabelText(tr("Additional arguments:"));
extraArguments.setSpan(4);
connect(&callgraphMode, &SelectionAspect::volatileValueChanged, this, [this](int index) { connect(&callgraphMode, &SelectionAspect::volatileValueChanged, this, [this](int index) {
stackSize.setEnabled(index == 0); stackSize.setEnabled(index == 0);