From 07563f2b6d2d4b1e3b53257396686cc97696f5b8 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 17 Jul 2014 13:36:33 +0200 Subject: [PATCH] EditorManager: Don't derive IEditorFactory from IDocumentFactory Change-Id: Ie7e42dadbdbc38ecd357a2c6bca5319f024feaac Reviewed-by: hjk Reviewed-by: Eike Ziller --- .../coreplugin/editormanager/editormanager.cpp | 1 + .../coreplugin/editormanager/ieditorfactory.cpp | 9 ++------- .../coreplugin/editormanager/ieditorfactory.h | 16 +++++++++++++++- src/plugins/coreplugin/idocumentfactory.h | 4 ---- src/plugins/coreplugin/mainwindow.cpp | 12 ++---------- src/plugins/projectexplorer/projectexplorer.cpp | 3 --- src/plugins/tasklist/tasklistplugin.cpp | 2 -- 7 files changed, 20 insertions(+), 27 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index b9a13dd56dc..58fbc3751f1 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -60,6 +60,7 @@ #include +#include #include #include diff --git a/src/plugins/coreplugin/editormanager/ieditorfactory.cpp b/src/plugins/coreplugin/editormanager/ieditorfactory.cpp index 1e1da4a7586..0d326b19340 100644 --- a/src/plugins/coreplugin/editormanager/ieditorfactory.cpp +++ b/src/plugins/coreplugin/editormanager/ieditorfactory.cpp @@ -32,13 +32,8 @@ #include Core::IEditorFactory::IEditorFactory(QObject *parent) - : IDocumentFactory(parent) + : QObject(parent) { - setOpener([](const QString &) -> Core::IDocument * { - qWarning("This should never be called, use IEditorFactor::createEditor, " - "or EditorManager::openEditor instead!"); - QTC_CHECK(false); - return 0; - }); + } diff --git a/src/plugins/coreplugin/editormanager/ieditorfactory.h b/src/plugins/coreplugin/editormanager/ieditorfactory.h index 9f2236cc52d..8021372c763 100644 --- a/src/plugins/coreplugin/editormanager/ieditorfactory.h +++ b/src/plugins/coreplugin/editormanager/ieditorfactory.h @@ -36,14 +36,28 @@ namespace Core { class IEditor; -class CORE_EXPORT IEditorFactory : public Core::IDocumentFactory +class CORE_EXPORT IEditorFactory : public QObject { Q_OBJECT public: IEditorFactory(QObject *parent = 0); + QString displayName() const { return m_displayName; } + void setDisplayName(const QString &displayName) { m_displayName = displayName; } + + Id id() const { return m_id; } + void setId(Id id) { m_id = id; } virtual IEditor *createEditor() = 0; + + QStringList mimeTypes() const { return m_mimeTypes; } + void setMimeTypes(const QStringList &mimeTypes) { m_mimeTypes = mimeTypes; } + void addMimeType(const char *mimeType) { m_mimeTypes.append(QLatin1String(mimeType)); } + void addMimeType(const QString &mimeType) { m_mimeTypes.append(mimeType); } +private: + Id m_id; + QString m_displayName; + QStringList m_mimeTypes; }; } // namespace Core diff --git a/src/plugins/coreplugin/idocumentfactory.h b/src/plugins/coreplugin/idocumentfactory.h index facb2c6c85b..16dea6527f0 100644 --- a/src/plugins/coreplugin/idocumentfactory.h +++ b/src/plugins/coreplugin/idocumentfactory.h @@ -51,13 +51,9 @@ public: typedef std::function Opener; IDocument *open(const QString &filename); - Id id() const { return m_id; } QStringList mimeTypes() const { return m_mimeTypes; } - QString displayName() const { return m_displayName; } - void setId(Id id) { m_id = id; } void setOpener(const Opener &opener) { m_opener = opener; } - void setDisplayName(const QString &displayName) { m_displayName = displayName; } void setMimeTypes(const QStringList &mimeTypes) { m_mimeTypes = mimeTypes; } void addMimeType(const char *mimeType) { m_mimeTypes.append(QLatin1String(mimeType)); } void addMimeType(const QString &mimeType) { m_mimeTypes.append(mimeType); } diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 6a4b4e33719..15081eae2fa 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -743,14 +743,6 @@ void MainWindow::openFile() openFiles(EditorManager::getOpenFileNames(), ICore::SwitchMode); } -static QList getNonEditorDocumentFactories() -{ - return ExtensionSystem::PluginManager::getObjects( - [](IDocumentFactory *factory) { - return !qobject_cast(factory); - }); -} - static IDocumentFactory *findDocumentFactory(const QList &fileFactories, const QFileInfo &fi) { @@ -776,13 +768,13 @@ static IDocumentFactory *findDocumentFactory(const QList &fil */ IDocument *MainWindow::openFiles(const QStringList &fileNames, ICore::OpenFilesFlags flags) { - QList nonEditorFileFactories = getNonEditorDocumentFactories(); + QList documentFactories = ExtensionSystem::PluginManager::getObjects(); IDocument *res = 0; foreach (const QString &fileName, fileNames) { const QFileInfo fi(fileName); const QString absoluteFilePath = fi.absoluteFilePath(); - if (IDocumentFactory *documentFactory = findDocumentFactory(nonEditorFileFactories, fi)) { + if (IDocumentFactory *documentFactory = findDocumentFactory(documentFactories, fi)) { IDocument *document = documentFactory->open(absoluteFilePath); if (!document) { if (flags & ICore::StopOnLoadFail) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index fa0d1627ae0..e43c7a5a929 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1223,9 +1223,6 @@ void ProjectExplorerPlugin::extensionsInitialized() QStringList filterStrings; foreach (IProjectManager *manager, projectManagers) { auto factory = new IDocumentFactory; - factory->setId(Constants::FILE_FACTORY_ID); - factory->setDisplayName(tr("Project File Factory", - "ProjectExplorer::ProjectFileFactory display name.")); factory->addMimeType(manager->mimeType()); factory->setOpener([this](const QString &fileName) -> IDocument* { QString errorMessage; diff --git a/src/plugins/tasklist/tasklistplugin.cpp b/src/plugins/tasklist/tasklistplugin.cpp index d8c28177f84..2b25630c4f6 100644 --- a/src/plugins/tasklist/tasklistplugin.cpp +++ b/src/plugins/tasklist/tasklistplugin.cpp @@ -206,8 +206,6 @@ bool TaskListPlugin::initialize(const QStringList &arguments, QString *errorMess return false; m_fileFactory = new IDocumentFactory; - m_fileFactory->setId("ProjectExplorer.TaskFileFactory"); - m_fileFactory->setDisplayName(tr("Task file reader")); m_fileFactory->addMimeType(QLatin1String("text/x-tasklist")); m_fileFactory->setOpener([this](const QString &fileName) -> IDocument * { ProjectExplorer::Project *project = ProjectExplorer::ProjectExplorerPlugin::currentProject();