ProjectExplorer: Prepare more flexibility to aspect layouting

This hides the explicit use of a QFormLayout from the aspect
interface in a new LayoutBuilder class. That currently works
only on a QFormLayout in the back, but opens the possibility
to use e.g. a QGridLayout as use on the Kits and some option
pages.

The aspects now only announce sub-widgets they like to add,
actuall positioning is does by a new LayoutBuilder class,
also cramming several widgets in an hbox in the right column
of the QFormLayout is done there.

Change-Id: I2b788192c465f2ab82261849d34e514697c5a491
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-10-15 17:20:51 +02:00
parent 02350520c2
commit 6eaf239777
20 changed files with 251 additions and 140 deletions

View File

@@ -71,9 +71,8 @@ private:
friend class AdbCommandsWidget;
};
AdbCommandsWidget::AdbCommandsWidget(QWidget *parent) :
QGroupBox(parent),
d(new AdbCommandsWidgetPrivate(this))
AdbCommandsWidget::AdbCommandsWidget()
: d(new AdbCommandsWidgetPrivate(this))
{
}

View File

@@ -39,7 +39,7 @@ class AdbCommandsWidget : public QGroupBox
{
Q_OBJECT
public:
explicit AdbCommandsWidget(QWidget *parent);
AdbCommandsWidget();
~AdbCommandsWidget() override;
QStringList commandsList() const;

View File

@@ -62,13 +62,13 @@ BaseStringListAspect::BaseStringListAspect(const QString &settingsKey, Core::Id
BaseStringListAspect::~BaseStringListAspect() = default;
void BaseStringListAspect::addToConfigurationLayout(QFormLayout *layout)
void BaseStringListAspect::addToLayout(LayoutBuilder &builder)
{
QTC_CHECK(!m_widget);
m_widget = new AdbCommandsWidget(layout->parentWidget());
m_widget = new AdbCommandsWidget;
m_widget->setCommandList(m_value);
m_widget->setTitleText(m_label);
layout->addRow(m_widget);
builder.addItem(m_widget.data());
connect(m_widget.data(), &AdbCommandsWidget::commandsChanged, this, [this] {
m_value = m_widget->commandsList();
emit changed();

View File

@@ -43,7 +43,7 @@ public:
Core::Id id = Core::Id());
~BaseStringListAspect() override;
void addToConfigurationLayout(QFormLayout *layout) override;
void addToLayout(ProjectExplorer::LayoutBuilder &builder) override;
QStringList value() const;
void setValue(const QStringList &val);