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:
hjk
2018-02-06 16:51:28 +01:00
parent 487aad1ed5
commit e30c872e61
4 changed files with 25 additions and 35 deletions

View File

@@ -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))
{ {
} }

View File

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

View File

@@ -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;
} }

View File

@@ -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