aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projectconfiguration.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/projectconfiguration.h')
-rw-r--r--src/plugins/projectexplorer/projectconfiguration.h38
1 files changed, 33 insertions, 5 deletions
diff --git a/src/plugins/projectexplorer/projectconfiguration.h b/src/plugins/projectexplorer/projectconfiguration.h
index bc6d33fce8..76b3080291 100644
--- a/src/plugins/projectexplorer/projectconfiguration.h
+++ b/src/plugins/projectexplorer/projectconfiguration.h
@@ -35,10 +35,7 @@
#include <QPointer>
#include <QString>
#include <QVariantMap>
-
-QT_BEGIN_NAMESPACE
-class QFormLayout;
-QT_END_NAMESPACE
+#include <QWidget>
namespace ProjectExplorer {
@@ -46,6 +43,36 @@ class Project;
class ProjectConfigurationAspects;
class Target;
+class PROJECTEXPLORER_EXPORT LayoutBuilder
+{
+public:
+ explicit LayoutBuilder(QWidget *parent);
+ ~LayoutBuilder();
+
+ class LayoutItem
+ {
+ public:
+ LayoutItem(QLayout *layout) : layout(layout) {}
+ LayoutItem(QWidget *widget) : widget(widget) {}
+ LayoutItem(const QString &text) : text(text) {}
+
+ QLayout *layout = nullptr;
+ QWidget *widget = nullptr;
+ QString text;
+ };
+
+ void addItem(LayoutItem item);
+ void startNewRow();
+
+ QLayout *layout() const;
+
+private:
+ void flushPendingItems();
+
+ QLayout *m_layout = nullptr;
+ QList<LayoutItem> m_pendingItems;
+};
+
class PROJECTEXPLORER_EXPORT ProjectConfigurationAspect : public QObject
{
Q_OBJECT
@@ -71,9 +98,10 @@ public:
virtual void fromMap(const QVariantMap &) {}
virtual void toMap(QVariantMap &) const {}
- virtual void addToConfigurationLayout(QFormLayout *) {}
virtual void acquaintSiblings(const ProjectConfigurationAspects &) {}
+ virtual void addToLayout(LayoutBuilder &builder);
+
signals:
void changed();