From 47afcf99ca91bde04a03e2321184339b33036c3b Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Thu, 21 Jan 2010 16:54:05 +0100
Subject: [PATCH] Split the tool box of form editor in a upper and lower one

---
 .../formeditor/formeditorwidget.cpp           | 85 ++++++++++---------
 .../components/formeditor/formeditorwidget.h  |  4 +-
 .../integration/designdocumentcontroller.cpp  |  2 +-
 3 files changed, 49 insertions(+), 42 deletions(-)

diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index 01012608328..ad75ae32e45 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -60,6 +60,8 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
     fillLayout->setSpacing(0);
     setLayout(fillLayout);
 
+    QList<QAction*> upperActions;
+
     m_toolActionGroup = new QActionGroup(this);
 
     m_transformToolAction = m_toolActionGroup->addAction("Transform Tool (Press Key Q)");
@@ -78,10 +80,12 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
     connect(m_anchorToolAction.data(), SIGNAL(triggered(bool)), SLOT(changeAnchorTool(bool)));
 
     addActions(m_toolActionGroup->actions());
+    upperActions.append(m_toolActionGroup->actions());
 
     QAction *separatorAction = new QAction(this);
     separatorAction->setSeparator(true);
     addAction(separatorAction);
+    upperActions.append(separatorAction);
 
     QActionGroup *layoutActionGroup = new QActionGroup(this);
     layoutActionGroup->setExclusive(true);
@@ -108,41 +112,12 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
     m_noSnappingAction->setIcon(QPixmap(":/icon/layout/no_snapping.png"));
 
     addActions(layoutActionGroup->actions());
+    upperActions.append(layoutActionGroup->actions());
 
     separatorAction = new QAction(this);
     separatorAction->setSeparator(true);
     addAction(separatorAction);
-
-    QActionGroup *layoutMarginActionGroup = new QActionGroup(this);
-
-    m_snappingMarginAction = new NumberSeriesAction(layoutMarginActionGroup);
-    m_snappingMarginAction->addEntry("no margins (0)", 0);
-    m_snappingMarginAction->addEntry("small margin (2)", 2);
-    m_snappingMarginAction->addEntry("medium margin (6)", 6);
-    m_snappingMarginAction->addEntry("all in margin (10)", 10);
-    m_snappingMarginAction->setCurrentEntryIndex(3);
-    layoutMarginActionGroup->addAction(m_snappingMarginAction.data());
-
-
-    m_snappingSpacingAction = new NumberSeriesAction(layoutMarginActionGroup);
-    m_snappingSpacingAction->addEntry("no spacing (0)", 0);
-    m_snappingSpacingAction->addEntry("small spacing (2)", 2);
-    m_snappingSpacingAction->addEntry("medium spacing (4)", 4);
-    m_snappingSpacingAction->addEntry("all in spacing (6)", 6);
-    m_snappingSpacingAction->setCurrentEntryIndex(1);
-    layoutMarginActionGroup->addAction(m_snappingSpacingAction.data());
-
-    addActions(layoutMarginActionGroup->actions());
-
-
-    m_zoomAction = new ZoomAction(toolActionGroup());
-    connect(m_zoomAction.data(), SIGNAL(zoomLevelChanged(double)), SLOT(setZoomLevel(double)));
-    addAction(m_zoomAction.data());
-
-    separatorAction = new QAction(this);
-    separatorAction->setSeparator(true);
-    addAction(separatorAction);
-
+    upperActions.append(separatorAction);
 
     m_showBoundingRectAction = new QAction("Toogle Bounding Rectangles (Press Key A)", this);
     m_showBoundingRectAction->setShortcut(Qt::Key_A);
@@ -152,6 +127,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
     m_showBoundingRectAction->setIcon(QPixmap(":/icon/layout/boundingrect.png"));
 
     addAction(m_showBoundingRectAction.data());
+    upperActions.append(m_showBoundingRectAction.data());
 
     m_selectOnlyContentItemsAction = new QAction("Select Only Items with Content (Press Key S)", this);
     m_selectOnlyContentItemsAction->setShortcut(Qt::Key_S);
@@ -161,17 +137,48 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
     m_selectOnlyContentItemsAction->setIcon(QPixmap(":/icon/selection/selectonlycontentitems.png"));
 
     addAction(m_selectOnlyContentItemsAction.data());
+    upperActions.append(m_selectOnlyContentItemsAction.data());
 
-    separatorAction = new QAction(this);
-    separatorAction->setSeparator(true);
-    addAction(separatorAction);
 
-    m_toolBox = new ToolBox(this);
-    toolBox()->setActions(actions());
-    fillLayout->addWidget(toolBox());
+    ToolBox *upperToolBox = new ToolBox(this);
+    upperToolBox->setActions(upperActions);
+    fillLayout->addWidget(upperToolBox);
 
     m_graphicsView = new FormEditorGraphicsView(this);
     fillLayout->addWidget(m_graphicsView.data());
+
+    QList<QAction*> lowerActions;
+
+    m_zoomAction = new ZoomAction(toolActionGroup());
+    connect(m_zoomAction.data(), SIGNAL(zoomLevelChanged(double)), SLOT(setZoomLevel(double)));
+    addAction(m_zoomAction.data());
+    lowerActions.append(m_zoomAction.data());
+
+    QActionGroup *layoutMarginActionGroup = new QActionGroup(this);
+
+    m_snappingMarginAction = new NumberSeriesAction(layoutMarginActionGroup);
+    m_snappingMarginAction->addEntry("no margins (0)", 0);
+    m_snappingMarginAction->addEntry("small margin (2)", 2);
+    m_snappingMarginAction->addEntry("medium margin (6)", 6);
+    m_snappingMarginAction->addEntry("large margin (10)", 10);
+    m_snappingMarginAction->setCurrentEntryIndex(2);
+    layoutMarginActionGroup->addAction(m_snappingMarginAction.data());
+
+
+    m_snappingSpacingAction = new NumberSeriesAction(layoutMarginActionGroup);
+    m_snappingSpacingAction->addEntry("no spacing (0)", 0);
+    m_snappingSpacingAction->addEntry("small spacing (2)", 2);
+    m_snappingSpacingAction->addEntry("medium spacing (4)", 4);
+    m_snappingSpacingAction->addEntry("large spacing (6)", 6);
+    m_snappingSpacingAction->setCurrentEntryIndex(1);
+    layoutMarginActionGroup->addAction(m_snappingSpacingAction.data());
+
+    addActions(layoutMarginActionGroup->actions());
+    lowerActions.append(layoutMarginActionGroup->actions());
+
+    m_lowerToolBox = new ToolBox(this);
+    lowerToolBox()->setActions(lowerActions);
+    fillLayout->addWidget(lowerToolBox());
 }
 
 void FormEditorWidget::enterEvent(QEvent *event)
@@ -260,9 +267,9 @@ QActionGroup *FormEditorWidget::toolActionGroup() const
     return m_toolActionGroup.data();
 }
 
-ToolBox *FormEditorWidget::toolBox() const
+ToolBox *FormEditorWidget::lowerToolBox() const
 {
-     return m_toolBox.data();
+     return m_lowerToolBox.data();
 }
 
 double FormEditorWidget::spacing() const
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
index 647566e134b..20cda56723a 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
@@ -58,7 +58,7 @@ public:
     QAction *snappingAndAnchoringAction() const;
 
     void setScene(FormEditorScene *scene);
-    ToolBox *toolBox() const;
+    ToolBox *lowerToolBox() const;
 
     double spacing() const;
     double margins() const;
@@ -81,7 +81,7 @@ private:
     QWeakPointer<QAction> m_anchorToolAction;
     QWeakPointer<QAction> m_transformToolAction;
     QWeakPointer<QActionGroup> m_toolActionGroup;
-    QWeakPointer<ToolBox> m_toolBox;
+    QWeakPointer<ToolBox> m_lowerToolBox;
     QWeakPointer<QAction> m_snappingAction;
     QWeakPointer<QAction> m_snappingAndAnchoringAction;
     QWeakPointer<QAction> m_noSnappingAction;
diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
index 00ea9072db1..0060b2cfba5 100644
--- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
@@ -421,7 +421,7 @@ void DesignDocumentController::loadCurrentModel()
         m_d->stackedWidget->addWidget(m_d->formEditorView->widget());
         ComponentAction *componentAction = new ComponentAction(m_d->formEditorView->widget());
         componentAction->setModel(m_d->model.data());
-        m_d->formEditorView->widget()->toolBox()->addAction(componentAction);
+        m_d->formEditorView->widget()->lowerToolBox()->addAction(componentAction);
         connect(componentAction, SIGNAL(currentComponentChanged(ModelNode)), SLOT(changeCurrentModelTo(ModelNode))); //TODO component action
         connect(m_d->itemLibrary.data(), SIGNAL(itemActivated(const QString&)), m_d->formEditorView.data(), SLOT(activateItemCreator(const QString&)));
     }
-- 
GitLab