From 062fa8e7836730c93f8bf218306434e05cc3e2a8 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Fri, 15 Jan 2010 17:41:12 +0100
Subject: [PATCH] Added mime-type for JS files to the QMLJS text editor.

---
 src/plugins/qmljseditor/qmlfilewizard.cpp      |  2 +-
 src/plugins/qmljseditor/qmljseditor.cpp        | 12 ++++++++++--
 src/plugins/qmljseditor/qmljseditor.h          |  1 +
 src/plugins/qmljseditor/qmljseditorconstants.h |  3 ++-
 src/plugins/qmljseditor/qmljseditorfactory.cpp |  7 +++++--
 src/plugins/qmljseditor/qmljseditorfactory.h   |  2 +-
 6 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/plugins/qmljseditor/qmlfilewizard.cpp b/src/plugins/qmljseditor/qmlfilewizard.cpp
index a35236ab529..4bf4cc3321b 100644
--- a/src/plugins/qmljseditor/qmlfilewizard.cpp
+++ b/src/plugins/qmljseditor/qmlfilewizard.cpp
@@ -46,7 +46,7 @@ Core::GeneratedFiles QmlFileWizard::generateFilesFromPath(const QString &path,
                                                           QString * /*errorMessage*/) const
 
 {
-    const QString mimeType = QLatin1String(Constants::QMLJSEDITOR_MIMETYPE);
+    const QString mimeType = QLatin1String(Constants::QML_MIMETYPE);
     const QString fileName = Core::BaseFileWizard::buildFileName(path, name, preferredSuffix(mimeType));
 
     Core::GeneratedFile file(fileName);
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 37736abf70a..7af2fffbc8d 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -46,8 +46,9 @@
 #include <qmljs/qmldocument.h>
 #include <qmljs/qmlidcollector.h>
 
-#include <coreplugin/icore.h>
 #include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/mimedatabase.h>
 #include <coreplugin/uniqueidmanager.h>
 #include <extensionsystem/pluginmanager.h>
 #include <texteditor/basetextdocument.h>
@@ -59,6 +60,7 @@
 #include <utils/changeset.h>
 #include <utils/uncommentselection.h>
 
+#include <QtCore/QFileInfo>
 #include <QtCore/QTimer>
 
 #include <QtGui/QMenu>
@@ -317,7 +319,6 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) :
     setMarksVisible(true);
     setCodeFoldingSupported(true);
     setCodeFoldingVisible(true);
-    setMimeType(QmlJSEditor::Constants::QMLJSEDITOR_MIMETYPE);
 
     m_updateDocumentTimer = new QTimer(this);
     m_updateDocumentTimer->setInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL);
@@ -363,6 +364,13 @@ QString QmlJSEditorEditable::id() const
     return QLatin1String(QmlJSEditor::Constants::C_QMLJSEDITOR_ID);
 }
 
+bool QmlJSEditorEditable::open(const QString &fileName)
+{
+    bool b = TextEditor::BaseTextEditorEditable::open(fileName);
+    editor()->setMimeType(Core::ICore::instance()->mimeDatabase()->findByFile(QFileInfo(fileName)).type());
+    return b;
+}
+
 QmlJSTextEditor::Context QmlJSEditorEditable::context() const
 {
     return m_context;
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index c3541a975f3..a99826834ce 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -68,6 +68,7 @@ public:
     Core::IEditor *duplicate(QWidget *parent);
     QString id() const;
     bool isTemporary() const { return false; }
+    virtual bool open(const QString & fileName);
 
 private:
     QList<int> m_context;
diff --git a/src/plugins/qmljseditor/qmljseditorconstants.h b/src/plugins/qmljseditor/qmljseditorconstants.h
index df82492d165..7996a6c9f96 100644
--- a/src/plugins/qmljseditor/qmljseditorconstants.h
+++ b/src/plugins/qmljseditor/qmljseditorconstants.h
@@ -41,7 +41,8 @@ const char * const C_QMLJSEDITOR_ID = "QMLProjectManager.QMLJSEditor";
 const char * const C_QMLJSEDITOR_DISPLAY_NAME = QT_TRANSLATE_NOOP("OpenWith::Editors", "QMLJS Editor");
 const char * const TASK_INDEX = "QmlJSEditor.TaskIndex";
 
-const char * const QMLJSEDITOR_MIMETYPE = "application/x-qml";
+const char * const QML_MIMETYPE = "application/x-qml";
+const char * const JS_MIMETYPE = "application/javascript";
 
 } // namespace Constants
 } // namespace QmlJSEditor
diff --git a/src/plugins/qmljseditor/qmljseditorfactory.cpp b/src/plugins/qmljseditor/qmljseditorfactory.cpp
index 56654e5d241..bcb27f87273 100644
--- a/src/plugins/qmljseditor/qmljseditorfactory.cpp
+++ b/src/plugins/qmljseditor/qmljseditorfactory.cpp
@@ -42,9 +42,12 @@ using namespace QmlJSEditor::Internal;
 using namespace QmlJSEditor::Constants;
 
 QmlJSEditorFactory::QmlJSEditorFactory(QObject *parent)
-  : Core::IEditorFactory(parent),
-    m_mimeTypes(QLatin1String(QmlJSEditor::Constants::QMLJSEDITOR_MIMETYPE))
+  : Core::IEditorFactory(parent)
 {
+    m_mimeTypes
+            << QLatin1String(QmlJSEditor::Constants::QML_MIMETYPE)
+            << QLatin1String(QmlJSEditor::Constants::JS_MIMETYPE)
+            ;
 }
 
 QmlJSEditorFactory::~QmlJSEditorFactory()
diff --git a/src/plugins/qmljseditor/qmljseditorfactory.h b/src/plugins/qmljseditor/qmljseditorfactory.h
index 4c3158bd073..3af7fe1e226 100644
--- a/src/plugins/qmljseditor/qmljseditorfactory.h
+++ b/src/plugins/qmljseditor/qmljseditorfactory.h
@@ -59,7 +59,7 @@ public:
     Core::IEditor *createEditor(QWidget *parent);
 
 private:
-    const QStringList m_mimeTypes;
+    QStringList m_mimeTypes;
 };
 
 } // namespace Internal
-- 
GitLab