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());