aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projectconfiguration.h
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-10-15 17:20:51 +0200
committerhjk <hjk@qt.io>2019-10-18 12:24:39 +0000
commit6eaf239777a3166f2504b0dff90bb4afcacba89f (patch)
tree32a2ffa2028e3ba487d62b380e40aab866c1e39f /src/plugins/projectexplorer/projectconfiguration.h
parent02350520c211bf5aa4f2804c1d19d28d710daa20 (diff)
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>
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();