From 7471c3a378cb3115c60ab86c748c00e3101a25ce Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 8 Apr 2021 15:44:45 +0200 Subject: [PATCH] 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 --- src/libs/utils/aspects.cpp | 24 ++++++++++++++++--- src/libs/utils/aspects.h | 2 ++ src/plugins/perfprofiler/perfconfigwidget.cpp | 3 +-- src/plugins/perfprofiler/perfsettings.cpp | 1 + 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index e55af0a397e..751f2693b8c 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -78,6 +78,8 @@ public: bool m_enabled = true; bool m_readOnly = true; bool m_autoApply = true; + int m_spanX = 1; + int m_spanY = 1; BaseAspect::ConfigWidgetCreator m_configWidgetCreator; QList> m_subWidgets; }; @@ -224,9 +226,12 @@ void BaseAspect::addLabeledItem(LayoutBuilder &builder, QWidget *widget) setupLabel(); if (QLabel *l = label()) { 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 { - 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 { return d->m_autoApply; @@ -735,6 +746,7 @@ StringAspect::StringAspect() : d(new Internal::StringAspectPrivate) { setDefaultValue(QString()); + setSpan(2, 1); // Default: Label + something } /*! @@ -1219,6 +1231,7 @@ BoolAspect::BoolAspect(const QString &settingsKey) { setDefaultValue(false); setSettingsKey(settingsKey); + setSpan(2, 1); } /*! @@ -1364,7 +1377,9 @@ void BoolAspect::setHandlesGroup(QGroupBox *box) SelectionAspect::SelectionAspect() : d(new Internal::SelectionAspectPrivate) -{} +{ + setSpan(2, 1); +} /*! \reimp @@ -1547,6 +1562,7 @@ MultiSelectionAspect::MultiSelectionAspect() : d(new Internal::MultiSelectionAspectPrivate(this)) { setDefaultValue(QStringList()); + setSpan(2, 1); } /*! @@ -1653,6 +1669,7 @@ IntegerAspect::IntegerAspect() : d(new Internal::IntegerAspectPrivate) { setDefaultValue(qint64(0)); + setSpan(2, 1); } /*! @@ -1773,6 +1790,7 @@ DoubleAspect::DoubleAspect() : d(new Internal::DoubleAspectPrivate) { setDefaultValue(double(0)); + setSpan(2, 1); } /*! diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index f5acb25f240..e873663a92e 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -98,6 +98,8 @@ public: void setReadOnly(bool enabled); + void setSpan(int x, int y = 1); + QString labelText() const; void setLabelText(const QString &labelText); void setLabelPixmap(const QPixmap &labelPixmap); diff --git a/src/plugins/perfprofiler/perfconfigwidget.cpp b/src/plugins/perfprofiler/perfconfigwidget.cpp index a94183f407e..9381f1e147c 100644 --- a/src/plugins/perfprofiler/perfconfigwidget.cpp +++ b/src/plugins/perfprofiler/perfconfigwidget.cpp @@ -117,10 +117,9 @@ PerfConfigWidget::PerfConfigWidget(PerfSettings *settings, QWidget *parent) Grid { m_settings->callgraphMode, m_settings->stackSize, nl, m_settings->sampleMode, m_settings->period, nl, + m_settings->extraArguments, }, - Row { m_settings->extraArguments }, // FIXME: Align with above. - Stretch() }.attachTo(this); } diff --git a/src/plugins/perfprofiler/perfsettings.cpp b/src/plugins/perfprofiler/perfsettings.cpp index 6f6e91f1d99..dc56ca7fe11 100644 --- a/src/plugins/perfprofiler/perfsettings.cpp +++ b/src/plugins/perfprofiler/perfsettings.cpp @@ -83,6 +83,7 @@ PerfSettings::PerfSettings(ProjectExplorer::Target *target) extraArguments.setSettingsKey("Analyzer.Perf.ExtraArguments"); extraArguments.setDisplayStyle(StringAspect::DisplayStyle::LineEditDisplay); extraArguments.setLabelText(tr("Additional arguments:")); + extraArguments.setSpan(4); connect(&callgraphMode, &SelectionAspect::volatileValueChanged, this, [this](int index) { stackSize.setEnabled(index == 0);