OSDN Git Service

QmlDesigner.rewriter: adding use of ModelManager to NotIndentingTextEditModifier
authorThomas Hartmann <Thomas.Hartmann@nokia.com>
Fri, 15 Jul 2011 14:43:20 +0000 (16:43 +0200)
committerThomas Hartmann <Thomas.Hartmann@nokia.com>
Fri, 15 Jul 2011 14:49:08 +0000 (16:49 +0200)
This fixes bugs in the copy and paste code.
Before we used an invalid snapshot and empty import paths and could
not resolve library imports properly.

Change-Id: I53df67bbba2b5abc73065b5729d0957e908cc874
Reviewed-on: http://codereview.qt.nokia.com/1708
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
src/plugins/qmldesigner/designercore/include/plaintexteditmodifier.h
src/plugins/qmldesigner/designercore/model/plaintexteditmodifier.cpp

index 12f0f8b..178845f 100644 (file)
@@ -114,11 +114,9 @@ public:
     virtual int indentDepth() const
     { return 0; }
 
-    virtual QmlJS::Snapshot getSnapshot() const
-    { return QmlJS::Snapshot(); }
+    virtual QmlJS::Snapshot getSnapshot() const;
 
-    virtual QStringList importPaths() const
-    { return QStringList(); }
+    virtual QStringList importPaths() const;
 };
 
 }
index 8dcfce6..fd237aa 100644 (file)
@@ -33,6 +33,8 @@
 #include "plaintexteditmodifier.h"
 
 #include <utils/changeset.h>
+#include <extensionsystem/pluginmanager.h>
+#include <qmljs/qmljsmodelmanagerinterface.h>
 
 #include <QtGui/QPlainTextEdit>
 #include <QtGui/QUndoStack>
@@ -189,3 +191,30 @@ void PlainTextEditModifier::reactivateChangeSignals()
         emit textChanged();
     }
 }
+
+namespace {
+static inline QmlJS::ModelManagerInterface *getModelManager()
+{
+    ExtensionSystem::PluginManager *pluginManager = ExtensionSystem::PluginManager::instance();
+    return pluginManager->getObject<QmlJS::ModelManagerInterface>();
+}
+}
+
+QmlJS::Snapshot NotIndentingTextEditModifier::getSnapshot() const
+{
+    QmlJS::ModelManagerInterface *modelManager = getModelManager();
+    if (modelManager)
+        return modelManager->snapshot();
+    else
+        return QmlJS::Snapshot();
+}
+
+
+QStringList NotIndentingTextEditModifier::importPaths() const
+{
+    QmlJS::ModelManagerInterface *modelManager = getModelManager();
+    if (modelManager)
+        return modelManager->importPaths();
+    else
+        return QStringList();
+}