forked from qt-creator/qt-creator
QmlDesigner: Avoid use of global object pool
Plus some code cosmetics. Change-Id: I6fde62da5a99e750131d20336d35565280ac7bef Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -134,9 +134,8 @@ QList<QToolButton *> DesignerSideBarItem::createToolBarWidgets()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ---------- DesignModeWidget
|
// ---------- DesignModeWidget
|
||||||
DesignModeWidget::DesignModeWidget(QWidget *parent)
|
DesignModeWidget::DesignModeWidget()
|
||||||
: QWidget(parent)
|
: m_toolBar(new Core::EditorToolBar(this))
|
||||||
, m_toolBar(new Core::EditorToolBar(this))
|
|
||||||
, m_crumbleBar(new CrumbleBar(this))
|
, m_crumbleBar(new CrumbleBar(this))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,16 +52,15 @@ namespace Internal {
|
|||||||
|
|
||||||
class DesignMode;
|
class DesignMode;
|
||||||
class DocumentWidget;
|
class DocumentWidget;
|
||||||
class DesignModeWidget;
|
|
||||||
|
|
||||||
class DesignModeWidget : public QWidget
|
class DesignModeWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DesignModeWidget(QWidget *parent = 0);
|
DesignModeWidget();
|
||||||
|
|
||||||
~DesignModeWidget();
|
~DesignModeWidget();
|
||||||
|
|
||||||
void contextHelpId(const Core::IContext::HelpIdCallback &callback) const;
|
void contextHelpId(const Core::IContext::HelpIdCallback &callback) const;
|
||||||
|
|
||||||
void initialize();
|
void initialize();
|
||||||
|
|||||||
@@ -72,18 +72,20 @@
|
|||||||
|
|
||||||
Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner")
|
Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner")
|
||||||
|
|
||||||
|
using namespace QmlDesigner::Internal;
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class QmlDesignerPluginPrivate {
|
class QmlDesignerPluginPrivate
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
ViewManager viewManager;
|
ViewManager viewManager;
|
||||||
DocumentManager documentManager;
|
DocumentManager documentManager;
|
||||||
ShortCutManager shortCutManager;
|
ShortCutManager shortCutManager;
|
||||||
|
SettingsPage settingsPage;
|
||||||
Internal::DesignModeWidget *mainWidget = nullptr;
|
DesignModeWidget mainWidget;
|
||||||
|
|
||||||
DesignerSettings settings;
|
DesignerSettings settings;
|
||||||
Internal::DesignModeContext *context = nullptr;
|
DesignModeContext *context = nullptr;
|
||||||
bool blockEditorChange = false;
|
bool blockEditorChange = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -158,7 +160,7 @@ QmlDesignerPlugin::QmlDesignerPlugin()
|
|||||||
QmlDesignerPlugin::~QmlDesignerPlugin()
|
QmlDesignerPlugin::~QmlDesignerPlugin()
|
||||||
{
|
{
|
||||||
if (d) {
|
if (d) {
|
||||||
Core::DesignMode::unregisterDesignWidget(d->mainWidget);
|
Core::DesignMode::unregisterDesignWidget(&d->mainWidget);
|
||||||
Core::ICore::removeContextObject(d->context);
|
Core::ICore::removeContextObject(d->context);
|
||||||
d->context = nullptr;
|
d->context = nullptr;
|
||||||
}
|
}
|
||||||
@@ -177,7 +179,6 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *e
|
|||||||
if (!Utils::HostOsInfo::canCreateOpenGLContext(errorMessage))
|
if (!Utils::HostOsInfo::canCreateOpenGLContext(errorMessage))
|
||||||
return false;
|
return false;
|
||||||
d = new QmlDesignerPluginPrivate;
|
d = new QmlDesignerPluginPrivate;
|
||||||
d->mainWidget = new Internal::DesignModeWidget;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +191,6 @@ bool QmlDesignerPlugin::delayedInitialize()
|
|||||||
+ QLatin1String(IDE_LIBRARY_BASENAME) + "/qtcreator/plugins/qmldesigner");
|
+ QLatin1String(IDE_LIBRARY_BASENAME) + "/qtcreator/plugins/qmldesigner");
|
||||||
MetaInfo::setPluginPaths(QStringList(pluginPath));
|
MetaInfo::setPluginPaths(QStringList(pluginPath));
|
||||||
|
|
||||||
addAutoReleasedObject(new Internal::SettingsPage);
|
|
||||||
d->settings.fromSettings(Core::ICore::settings());
|
d->settings.fromSettings(Core::ICore::settings());
|
||||||
|
|
||||||
d->viewManager.registerViewTakingOwnership(new QmlDesigner::Internal::ConnectionView());
|
d->viewManager.registerViewTakingOwnership(new QmlDesigner::Internal::ConnectionView());
|
||||||
@@ -207,7 +207,7 @@ bool QmlDesignerPlugin::delayedInitialize()
|
|||||||
|
|
||||||
void QmlDesignerPlugin::extensionsInitialized()
|
void QmlDesignerPlugin::extensionsInitialized()
|
||||||
{
|
{
|
||||||
integrateIntoQtCreator(d->mainWidget);
|
integrateIntoQtCreator(&d->mainWidget);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList allUiQmlFilesforCurrentProject(const Utils::FileName &fileName)
|
static QStringList allUiQmlFilesforCurrentProject(const Utils::FileName &fileName)
|
||||||
@@ -292,12 +292,12 @@ void QmlDesignerPlugin::showDesigner()
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(!d->documentManager.hasCurrentDesignDocument(), return);
|
QTC_ASSERT(!d->documentManager.hasCurrentDesignDocument(), return);
|
||||||
|
|
||||||
d->mainWidget->initialize();
|
d->mainWidget.initialize();
|
||||||
|
|
||||||
const Utils::FileName fileName = Core::EditorManager::currentEditor()->document()->filePath();
|
const Utils::FileName fileName = Core::EditorManager::currentEditor()->document()->filePath();
|
||||||
const QStringList allUiQmlFiles = allUiQmlFilesforCurrentProject(fileName);
|
const QStringList allUiQmlFiles = allUiQmlFilesforCurrentProject(fileName);
|
||||||
if (warningsForQmlFilesInsteadOfUiQmlEnabled() && !fileName.endsWith(".ui.qml") && !allUiQmlFiles.isEmpty()) {
|
if (warningsForQmlFilesInsteadOfUiQmlEnabled() && !fileName.endsWith(".ui.qml") && !allUiQmlFiles.isEmpty()) {
|
||||||
OpenUiQmlFileDialog dialog(d->mainWidget);
|
OpenUiQmlFileDialog dialog(&d->mainWidget);
|
||||||
dialog.setUiQmlFiles(projectPath(fileName), allUiQmlFiles);
|
dialog.setUiQmlFiles(projectPath(fileName), allUiQmlFiles);
|
||||||
dialog.exec();
|
dialog.exec();
|
||||||
if (dialog.uiFileOpened()) {
|
if (dialog.uiFileOpened()) {
|
||||||
@@ -324,7 +324,7 @@ void QmlDesignerPlugin::hideDesigner()
|
|||||||
{
|
{
|
||||||
if (d->documentManager.hasCurrentDesignDocument()) {
|
if (d->documentManager.hasCurrentDesignDocument()) {
|
||||||
deactivateAutoSynchronization();
|
deactivateAutoSynchronization();
|
||||||
d->mainWidget->saveSettings();
|
d->mainWidget.saveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
d->shortCutManager.disconnectUndoActions(currentDesignDocument());
|
d->shortCutManager.disconnectUndoActions(currentDesignDocument());
|
||||||
@@ -339,12 +339,12 @@ void QmlDesignerPlugin::changeEditor()
|
|||||||
|
|
||||||
if (d->documentManager.hasCurrentDesignDocument()) {
|
if (d->documentManager.hasCurrentDesignDocument()) {
|
||||||
deactivateAutoSynchronization();
|
deactivateAutoSynchronization();
|
||||||
d->mainWidget->saveSettings();
|
d->mainWidget.saveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
d->shortCutManager.disconnectUndoActions(currentDesignDocument());
|
d->shortCutManager.disconnectUndoActions(currentDesignDocument());
|
||||||
d->documentManager.setCurrentDesignDocument(Core::EditorManager::currentEditor());
|
d->documentManager.setCurrentDesignDocument(Core::EditorManager::currentEditor());
|
||||||
d->mainWidget->initialize();
|
d->mainWidget.initialize();
|
||||||
d->shortCutManager.connectUndoActions(currentDesignDocument());
|
d->shortCutManager.connectUndoActions(currentDesignDocument());
|
||||||
|
|
||||||
if (d->documentManager.hasCurrentDesignDocument()) {
|
if (d->documentManager.hasCurrentDesignDocument()) {
|
||||||
@@ -393,7 +393,7 @@ void QmlDesignerPlugin::activateAutoSynchronization()
|
|||||||
|
|
||||||
currentDesignDocument()->updateActiveQtVersion();
|
currentDesignDocument()->updateActiveQtVersion();
|
||||||
currentDesignDocument()->updateCurrentProject();
|
currentDesignDocument()->updateCurrentProject();
|
||||||
d->mainWidget->enableWidgets();
|
d->mainWidget.enableWidgets();
|
||||||
currentDesignDocument()->attachRewriterToModel();
|
currentDesignDocument()->attachRewriterToModel();
|
||||||
|
|
||||||
resetModelSelection();
|
resetModelSelection();
|
||||||
@@ -403,7 +403,7 @@ void QmlDesignerPlugin::activateAutoSynchronization()
|
|||||||
|
|
||||||
selectModelNodeUnderTextCursor();
|
selectModelNodeUnderTextCursor();
|
||||||
|
|
||||||
d->mainWidget->setupNavigatorHistory(currentDesignDocument()->textEditor());
|
d->mainWidget.setupNavigatorHistory(currentDesignDocument()->textEditor());
|
||||||
|
|
||||||
currentDesignDocument()->updateSubcomponentManager();
|
currentDesignDocument()->updateSubcomponentManager();
|
||||||
}
|
}
|
||||||
@@ -450,7 +450,7 @@ DesignDocument *QmlDesignerPlugin::currentDesignDocument() const
|
|||||||
Internal::DesignModeWidget *QmlDesignerPlugin::mainWidget() const
|
Internal::DesignModeWidget *QmlDesignerPlugin::mainWidget() const
|
||||||
{
|
{
|
||||||
if (d)
|
if (d)
|
||||||
return d->mainWidget;
|
return &d->mainWidget;
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,6 @@
|
|||||||
#include "shortcutmanager.h"
|
#include "shortcutmanager.h"
|
||||||
#include <designeractionmanager.h>
|
#include <designeractionmanager.h>
|
||||||
|
|
||||||
#include <QStringList>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
class QAction;
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
class IEditor;
|
class IEditor;
|
||||||
}
|
}
|
||||||
@@ -58,12 +52,11 @@ class QMLDESIGNERCORE_EXPORT QmlDesignerPlugin : public ExtensionSystem::IPlugin
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
QmlDesignerPlugin();
|
QmlDesignerPlugin();
|
||||||
virtual ~QmlDesignerPlugin();
|
~QmlDesignerPlugin() final;
|
||||||
|
|
||||||
//Plugin
|
bool initialize(const QStringList &arguments, QString *errorMessage) final;
|
||||||
bool initialize(const QStringList &arguments, QString *errorMessage = 0) override;
|
bool delayedInitialize() final;
|
||||||
bool delayedInitialize() override;
|
void extensionsInitialized() final;
|
||||||
void extensionsInitialized() override;
|
|
||||||
|
|
||||||
static QmlDesignerPlugin *instance();
|
static QmlDesignerPlugin *instance();
|
||||||
|
|
||||||
@@ -105,7 +98,6 @@ private: // functions
|
|||||||
private: // variables
|
private: // variables
|
||||||
QmlDesignerPluginPrivate *d = nullptr;
|
QmlDesignerPluginPrivate *d = nullptr;
|
||||||
static QmlDesignerPlugin *m_instance;
|
static QmlDesignerPlugin *m_instance;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|||||||
Reference in New Issue
Block a user