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(QWidget *parent)
: QWidget(parent)
, m_toolBar(new Core::EditorToolBar(this))
DesignModeWidget::DesignModeWidget()
: m_toolBar(new Core::EditorToolBar(this))
, m_crumbleBar(new CrumbleBar(this))
{
}

View File

@@ -52,16 +52,15 @@ namespace Internal {
class DesignMode;
class DocumentWidget;
class DesignModeWidget;
class DesignModeWidget : public QWidget
{
Q_OBJECT
public:
explicit DesignModeWidget(QWidget *parent = 0);
DesignModeWidget();
~DesignModeWidget();
void contextHelpId(const Core::IContext::HelpIdCallback &callback) const;
void initialize();

View File

@@ -72,18 +72,20 @@
Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner")
using namespace QmlDesigner::Internal;
namespace QmlDesigner {
class QmlDesignerPluginPrivate {
class QmlDesignerPluginPrivate
{
public:
ViewManager viewManager;
DocumentManager documentManager;
ShortCutManager shortCutManager;
Internal::DesignModeWidget *mainWidget = nullptr;
SettingsPage settingsPage;
DesignModeWidget mainWidget;
DesignerSettings settings;
Internal::DesignModeContext *context = nullptr;
DesignModeContext *context = nullptr;
bool blockEditorChange = false;
};
@@ -158,7 +160,7 @@ QmlDesignerPlugin::QmlDesignerPlugin()
QmlDesignerPlugin::~QmlDesignerPlugin()
{
if (d) {
Core::DesignMode::unregisterDesignWidget(d->mainWidget);
Core::DesignMode::unregisterDesignWidget(&d->mainWidget);
Core::ICore::removeContextObject(d->context);
d->context = nullptr;
}
@@ -177,7 +179,6 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *e
if (!Utils::HostOsInfo::canCreateOpenGLContext(errorMessage))
return false;
d = new QmlDesignerPluginPrivate;
d->mainWidget = new Internal::DesignModeWidget;
return true;
}
@@ -190,7 +191,6 @@ bool QmlDesignerPlugin::delayedInitialize()
+ QLatin1String(IDE_LIBRARY_BASENAME) + "/qtcreator/plugins/qmldesigner");
MetaInfo::setPluginPaths(QStringList(pluginPath));
addAutoReleasedObject(new Internal::SettingsPage);
d->settings.fromSettings(Core::ICore::settings());
d->viewManager.registerViewTakingOwnership(new QmlDesigner::Internal::ConnectionView());
@@ -207,7 +207,7 @@ bool QmlDesignerPlugin::delayedInitialize()
void QmlDesignerPlugin::extensionsInitialized()
{
integrateIntoQtCreator(d->mainWidget);
integrateIntoQtCreator(&d->mainWidget);
}
static QStringList allUiQmlFilesforCurrentProject(const Utils::FileName &fileName)
@@ -292,12 +292,12 @@ void QmlDesignerPlugin::showDesigner()
{
QTC_ASSERT(!d->documentManager.hasCurrentDesignDocument(), return);
d->mainWidget->initialize();
d->mainWidget.initialize();
const Utils::FileName fileName = Core::EditorManager::currentEditor()->document()->filePath();
const QStringList allUiQmlFiles = allUiQmlFilesforCurrentProject(fileName);
if (warningsForQmlFilesInsteadOfUiQmlEnabled() && !fileName.endsWith(".ui.qml") && !allUiQmlFiles.isEmpty()) {
OpenUiQmlFileDialog dialog(d->mainWidget);
OpenUiQmlFileDialog dialog(&d->mainWidget);
dialog.setUiQmlFiles(projectPath(fileName), allUiQmlFiles);
dialog.exec();
if (dialog.uiFileOpened()) {
@@ -324,7 +324,7 @@ void QmlDesignerPlugin::hideDesigner()
{
if (d->documentManager.hasCurrentDesignDocument()) {
deactivateAutoSynchronization();
d->mainWidget->saveSettings();
d->mainWidget.saveSettings();
}
d->shortCutManager.disconnectUndoActions(currentDesignDocument());
@@ -339,12 +339,12 @@ void QmlDesignerPlugin::changeEditor()
if (d->documentManager.hasCurrentDesignDocument()) {
deactivateAutoSynchronization();
d->mainWidget->saveSettings();
d->mainWidget.saveSettings();
}
d->shortCutManager.disconnectUndoActions(currentDesignDocument());
d->documentManager.setCurrentDesignDocument(Core::EditorManager::currentEditor());
d->mainWidget->initialize();
d->mainWidget.initialize();
d->shortCutManager.connectUndoActions(currentDesignDocument());
if (d->documentManager.hasCurrentDesignDocument()) {
@@ -393,7 +393,7 @@ void QmlDesignerPlugin::activateAutoSynchronization()
currentDesignDocument()->updateActiveQtVersion();
currentDesignDocument()->updateCurrentProject();
d->mainWidget->enableWidgets();
d->mainWidget.enableWidgets();
currentDesignDocument()->attachRewriterToModel();
resetModelSelection();
@@ -403,7 +403,7 @@ void QmlDesignerPlugin::activateAutoSynchronization()
selectModelNodeUnderTextCursor();
d->mainWidget->setupNavigatorHistory(currentDesignDocument()->textEditor());
d->mainWidget.setupNavigatorHistory(currentDesignDocument()->textEditor());
currentDesignDocument()->updateSubcomponentManager();
}
@@ -450,7 +450,7 @@ DesignDocument *QmlDesignerPlugin::currentDesignDocument() const
Internal::DesignModeWidget *QmlDesignerPlugin::mainWidget() const
{
if (d)
return d->mainWidget;
return &d->mainWidget;
return nullptr;
}

View File

@@ -35,12 +35,6 @@
#include "shortcutmanager.h"
#include <designeractionmanager.h>
#include <QStringList>
QT_BEGIN_NAMESPACE
class QAction;
QT_END_NAMESPACE
namespace Core {
class IEditor;
}
@@ -58,12 +52,11 @@ class QMLDESIGNERCORE_EXPORT QmlDesignerPlugin : public ExtensionSystem::IPlugin
public:
QmlDesignerPlugin();
virtual ~QmlDesignerPlugin();
~QmlDesignerPlugin() final;
//Plugin
bool initialize(const QStringList &arguments, QString *errorMessage = 0) override;
bool delayedInitialize() override;
void extensionsInitialized() override;
bool initialize(const QStringList &arguments, QString *errorMessage) final;
bool delayedInitialize() final;
void extensionsInitialized() final;
static QmlDesignerPlugin *instance();
@@ -105,7 +98,6 @@ private: // functions
private: // variables
QmlDesignerPluginPrivate *d = nullptr;
static QmlDesignerPlugin *m_instance;
};
} // namespace QmlDesigner