From 361821c8ec1e039bef845906524680286e751c5a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 5 Aug 2013 12:39:26 +0200 Subject: [PATCH] QmlDesigner: moving CrumbleBar and ComponentAction Moving the CrumbleBar and the ComponentAction out of the FormEditor into the DesignModeWidget. These widgets are about document navigation and do not belong to the FormEditor. Change-Id: I5cd177d70f7c8f9cc2913c8c3c640d62fefd718d Reviewed-by: Marco Bubke --- .../componentcore/componentcore.pri | 2 + .../crumblebar.cpp} | 14 +++---- .../crumblebar.h} | 4 +- .../components/formeditor/formeditor.pri | 2 - .../formeditor/formeditorwidget.cpp | 5 --- .../components/formeditor/formeditorwidget.h | 4 -- .../components/formeditor/toolbox.cpp | 37 +++---------------- .../components/formeditor/toolbox.h | 4 -- .../designercore/include/viewmanager.h | 6 ++- .../designercore/model/viewmanager.cpp | 25 ++++++++----- src/plugins/qmldesigner/designmodewidget.cpp | 33 ++++++++++++++++- src/plugins/qmldesigner/designmodewidget.h | 5 +++ src/plugins/qmldesigner/qmldesignerplugin.cpp | 4 +- 13 files changed, 76 insertions(+), 69 deletions(-) rename src/plugins/qmldesigner/components/{formeditor/formeditorcrumblebar.cpp => componentcore/crumblebar.cpp} (91%) rename src/plugins/qmldesigner/components/{formeditor/formeditorcrumblebar.h => componentcore/crumblebar.h} (95%) diff --git a/src/plugins/qmldesigner/components/componentcore/componentcore.pri b/src/plugins/qmldesigner/components/componentcore/componentcore.pri index 2ef8b0911c9..34577914757 100644 --- a/src/plugins/qmldesigner/components/componentcore/componentcore.pri +++ b/src/plugins/qmldesigner/components/componentcore/componentcore.pri @@ -6,6 +6,7 @@ SOURCES += modelnodecontextmenu_helper.cpp SOURCES += selectioncontext.cpp SOURCES += designeractionmanager.cpp SOURCES += modelnodeoperations.cpp +SOURCES += crumblebar.cpp HEADERS += modelnodecontextmenu.h HEADERS += defaultdesigneraction.h @@ -15,3 +16,4 @@ HEADERS += componentcore_constants.h HEADERS += designeractionmanager.h HEADERS += modelnodeoperations.h HEADERS += abstractdesigneraction.h +HEADERS += crumblebar.h diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorcrumblebar.cpp b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp similarity index 91% rename from src/plugins/qmldesigner/components/formeditor/formeditorcrumblebar.cpp rename to src/plugins/qmldesigner/components/componentcore/crumblebar.cpp index 94f36d04697..5bf7e6c56a3 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorcrumblebar.cpp +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.cpp @@ -27,7 +27,7 @@ ** ****************************************************************************/ -#include "formeditorcrumblebar.h" +#include "crumblebar.h" #include "qmldesignerplugin.h" @@ -36,7 +36,7 @@ namespace QmlDesigner { -FormEditorCrumbleBar::FormEditorCrumbleBar(QObject *parent) : +CrumbleBar::CrumbleBar(QObject *parent) : QObject(parent), m_isInternalCalled(false), m_crumblePath(new Utils::CrumblePath) @@ -47,7 +47,7 @@ FormEditorCrumbleBar::FormEditorCrumbleBar(QObject *parent) : SLOT(onCrumblePathElementClicked(QVariant))); } -void FormEditorCrumbleBar::pushFile(const QString &fileName) +void CrumbleBar::pushFile(const QString &fileName) { if (m_isInternalCalled == false) { crumblePath()->clear(); @@ -72,7 +72,7 @@ static DesignDocument *currentDesignDocument() return QmlDesignerPlugin::instance()->documentManager().currentDesignDocument(); } -void FormEditorCrumbleBar::pushInFileComponent(const QString &componentId) +void CrumbleBar::pushInFileComponent(const QString &componentId) { CrumbleBarInfo crumbleBarInfo; crumbleBarInfo.componentId = componentId; @@ -88,17 +88,17 @@ void FormEditorCrumbleBar::pushInFileComponent(const QString &componentId) m_isInternalCalled = false; } -void FormEditorCrumbleBar::nextFileIsCalledInternally() +void CrumbleBar::nextFileIsCalledInternally() { m_isInternalCalled = true; } -Utils::CrumblePath *FormEditorCrumbleBar::crumblePath() +Utils::CrumblePath *CrumbleBar::crumblePath() { return m_crumblePath; } -void FormEditorCrumbleBar::onCrumblePathElementClicked(const QVariant &data) +void CrumbleBar::onCrumblePathElementClicked(const QVariant &data) { CrumbleBarInfo clickedCrumbleBarInfo = data.value(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorcrumblebar.h b/src/plugins/qmldesigner/components/componentcore/crumblebar.h similarity index 95% rename from src/plugins/qmldesigner/components/formeditor/formeditorcrumblebar.h rename to src/plugins/qmldesigner/components/componentcore/crumblebar.h index 60500a41039..c019d752f04 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorcrumblebar.h +++ b/src/plugins/qmldesigner/components/componentcore/crumblebar.h @@ -35,11 +35,11 @@ namespace QmlDesigner { -class FormEditorCrumbleBar : public QObject +class CrumbleBar : public QObject { Q_OBJECT public: - explicit FormEditorCrumbleBar(QObject *parent = 0); + explicit CrumbleBar(QObject *parent = 0); void pushFile(const QString &fileName); void pushInFileComponent(const QString &componentId); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditor.pri b/src/plugins/qmldesigner/components/formeditor/formeditor.pri index 0b9d1463fd9..76f18b6a9c1 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditor.pri +++ b/src/plugins/qmldesigner/components/formeditor/formeditor.pri @@ -30,7 +30,6 @@ SOURCES += formeditoritem.cpp \ formeditorgraphicsview.cpp \ numberseriesaction.cpp \ lineeditaction.cpp \ - formeditorcrumblebar.cpp \ abstractcustomtool.cpp HEADERS += formeditorscene.h \ formeditorwidget.h \ @@ -63,6 +62,5 @@ HEADERS += formeditorscene.h \ formeditorgraphicsview.h \ numberseriesaction.h \ lineeditaction.h \ - formeditorcrumblebar.h \ abstractcustomtool.h RESOURCES += formeditor.qrc diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index 6c091108346..1c81a28b2a5 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -230,11 +230,6 @@ void FormEditorWidget::setFocus() m_graphicsView->setFocus(Qt::OtherFocusReason); } -FormEditorCrumbleBar *FormEditorWidget::formEditorCrumbleBar() const -{ - return toolBox()->formEditorCrumbleBar(); -} - ZoomAction *FormEditorWidget::zoomAction() const { return m_zoomAction.data(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h index 7cf54c5c24c..53efd906e18 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h @@ -32,8 +32,6 @@ #include -#include "formeditorcrumblebar.h" - QT_BEGIN_NAMESPACE class QActionGroup; QT_END_NAMESPACE @@ -79,8 +77,6 @@ public: void setFocus(); - FormEditorCrumbleBar *formEditorCrumbleBar() const; - protected: void wheelEvent(QWheelEvent *event); QActionGroup *toolActionGroup() const; diff --git a/src/plugins/qmldesigner/components/formeditor/toolbox.cpp b/src/plugins/qmldesigner/components/formeditor/toolbox.cpp index 9d010324d18..0afb3aa7500 100644 --- a/src/plugins/qmldesigner/components/formeditor/toolbox.cpp +++ b/src/plugins/qmldesigner/components/formeditor/toolbox.cpp @@ -39,39 +39,19 @@ namespace QmlDesigner { ToolBox::ToolBox(QWidget *parentWidget) : Utils::StyledBar(parentWidget), m_leftToolBar(new QToolBar("LeftSidebar", this)), - m_rightToolBar(new QToolBar("RightSidebar", this)), - m_formEditorCrumbleBar(new FormEditorCrumbleBar(this)) + m_rightToolBar(new QToolBar("RightSidebar", this)) { - setMaximumHeight(44); - setSingleRow(false); - QFrame *frame = new QFrame(this); - frame->setStyleSheet("background-color: #4e4e4e;"); - frame->setFrameShape(QFrame::NoFrame); - QHBoxLayout *layout = new QHBoxLayout(frame); - layout->setMargin(0); - layout->setSpacing(0); - frame->setLayout(layout); - layout->addWidget(m_formEditorCrumbleBar->crumblePath()); - frame->setProperty("panelwidget", true); - frame->setProperty("panelwidget_singlerow", false); - QVBoxLayout *verticalLayout = new QVBoxLayout(this); - verticalLayout->setMargin(0); - verticalLayout->setSpacing(0); - - QHBoxLayout *horizontalLayout = new QHBoxLayout(); - verticalLayout->addLayout(horizontalLayout); - verticalLayout->addWidget(frame); - horizontalLayout->setMargin(0); - horizontalLayout->setSpacing(0); - + setMaximumHeight(22); m_leftToolBar->setFloatable(true); m_leftToolBar->setMovable(true); m_leftToolBar->setOrientation(Qt::Horizontal); m_leftToolBar->setIconSize(QSize(24, 24)); - QToolBar *stretchToolbar = new QToolBar(this); + QHBoxLayout *horizontalLayout = new QHBoxLayout(this); + horizontalLayout->setMargin(0); + horizontalLayout->setSpacing(0); - setSingleRow(false); + QToolBar *stretchToolbar = new QToolBar(this); m_leftToolBar->setProperty("panelwidget", true); m_leftToolBar->setProperty("panelwidget_singlerow", false); @@ -121,9 +101,4 @@ QList ToolBox::actions() const return QList() << m_leftToolBar->actions() << m_rightToolBar->actions(); } -FormEditorCrumbleBar *ToolBox::formEditorCrumbleBar() const -{ - return m_formEditorCrumbleBar; -} - } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/formeditor/toolbox.h b/src/plugins/qmldesigner/components/formeditor/toolbox.h index 8974ae6b71b..129f0acf50e 100644 --- a/src/plugins/qmldesigner/components/formeditor/toolbox.h +++ b/src/plugins/qmldesigner/components/formeditor/toolbox.h @@ -32,8 +32,6 @@ #include "utils/styledbar.h" -#include "formeditorcrumblebar.h" - QT_BEGIN_NAMESPACE class QToolBar; QT_END_NAMESPACE @@ -53,12 +51,10 @@ public: void addLeftSideAction(QAction *action); void addRightSideAction(QAction *action); QList actions() const; - FormEditorCrumbleBar *formEditorCrumbleBar() const; private: QToolBar *m_leftToolBar; QToolBar *m_rightToolBar; - FormEditorCrumbleBar *m_formEditorCrumbleBar; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h index b155f6c6dee..9f9669d1563 100644 --- a/src/plugins/qmldesigner/designercore/include/viewmanager.h +++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h @@ -41,6 +41,7 @@ #include #include #include +#include namespace QmlDesigner { @@ -79,12 +80,15 @@ public: void disableWidgets(); void enableWidgets(); - void pushFileOnCrambleBar(const QString &fileName); + void pushFileOnCrumbleBar(const QString &fileName); void pushInFileComponentOnCrambleBar(const QString &componentId); + void nextFileIsCalledInternally(); NodeInstanceView *nodeInstanceView(); + QWidgetAction *componentViewAction(); + private: // functions Q_DISABLE_COPY(ViewManager) diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp index a17a0e46023..6de517fb0f2 100644 --- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp @@ -1,9 +1,9 @@ #include "viewmanager.h" #include "componentaction.h" -#include "formeditorwidget.h" -#include "toolbox.h" #include "designeractionmanager.h" +#include "designmodewidget.h" +#include "crumblebar.h" #include @@ -12,11 +12,13 @@ namespace QmlDesigner { + +static CrumbleBar *crumbleBar() { + return QmlDesignerPlugin::instance()->mainWidget()->crumbleBar(); +} + ViewManager::ViewManager() { - //QObject::connect(&m_nodeInstanceView, SIGNAL(qmlPuppetCrashed()), designModeWidget, SLOT(qmlPuppetCrashed())); - //QObject::connect(m_formEditorView.crumblePath(), SIGNAL(elementClicked(QVariant)), designModeWidget, SLOT(onCrumblePathElementClicked(QVariant))); - m_formEditorView.formEditorWidget()->toolBox()->addLeftSideAction(m_componentView.action()); // ugly hack } ViewManager::~ViewManager() @@ -206,20 +208,20 @@ void ViewManager::enableWidgets() widgetInfo.widget->setEnabled(true); } -void ViewManager::pushFileOnCrambleBar(const QString &fileName) +void ViewManager::pushFileOnCrumbleBar(const QString &fileName) { - m_formEditorView.formEditorWidget()->formEditorCrumbleBar()->pushFile(fileName); + crumbleBar()->pushFile(fileName); } void ViewManager::pushInFileComponentOnCrambleBar(const QString &componentId) { - m_formEditorView.formEditorWidget()->formEditorCrumbleBar()->pushInFileComponent(componentId); + crumbleBar()->pushInFileComponent(componentId); } void ViewManager::nextFileIsCalledInternally() { - m_formEditorView.formEditorWidget()->formEditorCrumbleBar()->nextFileIsCalledInternally(); + crumbleBar()->nextFileIsCalledInternally(); } NodeInstanceView *ViewManager::nodeInstanceView() @@ -227,6 +229,11 @@ NodeInstanceView *ViewManager::nodeInstanceView() return &m_nodeInstanceView; } +QWidgetAction *ViewManager::componentViewAction() +{ + return m_componentView.action(); +} + Model *ViewManager::currentModel() const { return currentDesignDocument()->currentModel(); diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 822fcf08fc5..50965f1cd93 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -30,6 +30,7 @@ #include "designmodewidget.h" #include "styledoutputpaneplaceholder.h" #include "qmldesignerplugin.h" +#include "crumblebar.h" #include #include @@ -51,6 +52,7 @@ #include #include #include +#include using Core::MiniSplitter; using Core::IEditor; @@ -170,6 +172,8 @@ void DocumentWarningWidget::goToError() DesignModeWidget::DesignModeWidget(QWidget *parent) : QWidget(parent), m_mainSplitter(0), + m_toolBar(Core::EditorManager::createToolBar(this)), + m_crumbleBar(new CrumbleBar(this)), m_isDisabled(false), m_showSidebars(true), m_initStatus(NotInitialized), @@ -332,7 +336,10 @@ void DesignModeWidget::setup() } - m_toolBar = Core::EditorManager::createToolBar(this); + QToolBar *toolBar = new QToolBar(m_toolBar); + + toolBar->addAction(viewManager().componentViewAction()); + m_toolBar->addCenterToolBar(toolBar); m_mainSplitter = new MiniSplitter(this); m_mainSplitter->setObjectName("mainSplitter"); @@ -524,8 +531,9 @@ QWidget *DesignModeWidget::createCenterWidget() QVBoxLayout *rightLayout = new QVBoxLayout(centerWidget); rightLayout->setMargin(0); rightLayout->setSpacing(0); - rightLayout->addWidget(m_toolBar); + rightLayout->addWidget(m_toolBar); + rightLayout->addWidget(createCrumbleBarFrame()); //### we now own these here QList topWidgetInfos; @@ -561,6 +569,22 @@ QWidget *DesignModeWidget::createCenterWidget() return centerWidget; } +QWidget *DesignModeWidget::createCrumbleBarFrame() +{ + QFrame *frame = new QFrame(this); + frame->setStyleSheet("background-color: #4e4e4e;"); + frame->setFrameShape(QFrame::NoFrame); + QHBoxLayout *layout = new QHBoxLayout(frame); + layout->setMargin(0); + layout->setSpacing(0); + frame->setLayout(layout); + layout->addWidget(m_crumbleBar->crumblePath()); + frame->setProperty("panelwidget", true); + frame->setProperty("panelwidget_singlerow", false); + + return frame; +} + void DesignModeWidget::showErrorMessage(const QList &errors) { Q_ASSERT(!errors.isEmpty()); @@ -569,6 +593,11 @@ void DesignModeWidget::showErrorMessage(const QList &errors m_warningWidget->move(width() / 2, height() / 2); } +CrumbleBar *DesignModeWidget::crumbleBar() const +{ + return m_crumbleBar; +} + QString DesignModeWidget::contextHelpId() const { if (currentDesignDocument()) diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h index b4bfac4706f..6545e475a4a 100644 --- a/src/plugins/qmldesigner/designmodewidget.h +++ b/src/plugins/qmldesigner/designmodewidget.h @@ -58,6 +58,7 @@ namespace Core { namespace QmlDesigner { class ItemLibraryWidget; +class CrumbleBar; namespace Internal { @@ -110,6 +111,8 @@ public: void disableWidgets(); void showErrorMessage(const QList &errors); + CrumbleBar* crumbleBar() const; + public slots: void updateErrorStatus(const QList &errors); void restoreDefaultView(); @@ -139,12 +142,14 @@ private: // functions QmlDesigner::ModelNode nodeForPosition(int cursorPos) const; void addNavigatorHistoryEntry(const QString &fileName); QWidget *createCenterWidget(); + QWidget *createCrumbleBarFrame(); private: // variables QSplitter *m_mainSplitter; QScopedPointer m_leftSideBar; QScopedPointer m_rightSideBar; Core::EditorToolBar *m_toolBar; + CrumbleBar *m_crumbleBar; Core::OutputPanePlaceHolder *m_outputPanePlaceholder; Core::MiniSplitter *m_outputPlaceholderSplitter; bool m_isDisabled; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index de69e63c731..b3dadc90e48 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -189,7 +189,7 @@ void QmlDesignerPlugin::showDesigner() if (m_documentManager.hasCurrentDesignDocument()) { activateAutoSynchronization(); m_shortCutManager.updateActions(currentDesignDocument()->textEditor()); - m_viewManager.pushFileOnCrambleBar(m_documentManager.currentDesignDocument()->fileName()); + m_viewManager.pushFileOnCrumbleBar(m_documentManager.currentDesignDocument()->fileName()); } m_shortCutManager.updateUndoActions(currentDesignDocument()); @@ -231,7 +231,7 @@ void QmlDesignerPlugin::changeEditor() if (m_documentManager.hasCurrentDesignDocument()) { activateAutoSynchronization(); - m_viewManager.pushFileOnCrambleBar(m_documentManager.currentDesignDocument()->fileName()); + m_viewManager.pushFileOnCrumbleBar(m_documentManager.currentDesignDocument()->fileName()); } m_shortCutManager.updateUndoActions(currentDesignDocument());