From 9e3b5bd0a023483adeae9e9ce2cd1bb7ae46cfbf Mon Sep 17 00:00:00 2001
From: Leandro Melo <leandro.melo@nokia.com>
Date: Thu, 20 Jan 2011 10:42:19 +0100
Subject: [PATCH] Temporary "feature" to allow user specific MIME types

We need a feature which allows a more flexible binding
of MIME types and editors. This is definetely not the
way to handle it, but a temporary workaround.

Reviewed-by: con
---
 src/plugins/coreplugin/mainwindow.cpp | 15 +++++++++++++++
 src/plugins/coreplugin/mainwindow.h   |  2 ++
 2 files changed, 17 insertions(+)

diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 1fc514e6300..44fda415127 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -87,6 +87,7 @@
 #include <QtCore/QtPlugin>
 #include <QtCore/QUrl>
 #include <QtCore/QDir>
+#include <QtCore/QFile>
 
 #include <QtGui/QApplication>
 #include <QtGui/QCloseEvent>
@@ -339,6 +340,8 @@ void MainWindow::extensionsInitialized()
     readSettings();
     updateContext();
 
+    registerUserMimeTypes();
+
     emit m_coreImpl->coreAboutToOpen();
     show();
     emit m_coreImpl->coreOpened();
@@ -1383,3 +1386,15 @@ bool MainWindow::showWarningWithOptions(const QString &title,
     }
     return false;
 }
+
+void MainWindow::registerUserMimeTypes() const
+{
+    // This is to temporarily allow user specific MIME types (without recompilation).
+    // Be careful with the file contents. Otherwise unpredictable behavior might arise.
+    const QString &fileName = m_coreImpl->userResourcePath() + QLatin1String("/mimetypes.xml");
+    if (QFile::exists(fileName)) {
+        QString error;
+        if (!m_coreImpl->mimeDatabase()->addMimeTypes(fileName, &error))
+            qWarning() << error;
+    }
+}
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index dc88545e9ad..22506fd78c3 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -177,6 +177,8 @@ private:
     void readSettings();
     void writeSettings();
 
+    void registerUserMimeTypes() const;
+
     CoreImpl *m_coreImpl;
     UniqueIDManager *m_uniqueIDManager;
     Context m_additionalContexts;
-- 
GitLab