summaryrefslogtreecommitdiff
path: root/src/plugins/diffeditor
diff options
context:
space:
mode:
authorNikita Baryshnikov <nib952051@gmail.com>2015-04-06 15:01:05 +0300
committerNikita Baryshnikov <nib952051@gmail.com>2015-04-13 12:33:01 +0000
commit147dad89446f1877faf8c0b4a6d175afefa3a43c (patch)
tree71899b2e005d44518444d1d31f1dc5a7c18ac8be /src/plugins/diffeditor
parent7c083eadee877212ae64083e73a8939be7bc9e31 (diff)
downloadqt-creator-147dad89446f1877faf8c0b4a6d175afefa3a43c.tar.gz
DiffEditorManager simplify
by using EditorManager::openEditorWithContents Change-Id: I2850648bff0f5b8f01254b9c7ce9539c1262f576 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/diffeditor')
-rw-r--r--src/plugins/diffeditor/diffeditor.pro2
-rw-r--r--src/plugins/diffeditor/diffeditor.qbs2
-rw-r--r--src/plugins/diffeditor/diffeditorcontroller.cpp17
-rw-r--r--src/plugins/diffeditor/diffeditorcontroller.h3
-rw-r--r--src/plugins/diffeditor/diffeditordocument.cpp8
-rw-r--r--src/plugins/diffeditor/diffeditordocument.h1
-rw-r--r--src/plugins/diffeditor/diffeditormanager.cpp106
-rw-r--r--src/plugins/diffeditor/diffeditormanager.h71
-rw-r--r--src/plugins/diffeditor/diffeditorplugin.cpp10
9 files changed, 23 insertions, 197 deletions
diff --git a/src/plugins/diffeditor/diffeditor.pro b/src/plugins/diffeditor/diffeditor.pro
index b93d6ae936..829e7367f5 100644
--- a/src/plugins/diffeditor/diffeditor.pro
+++ b/src/plugins/diffeditor/diffeditor.pro
@@ -7,7 +7,6 @@ HEADERS += diffeditor_global.h \
diffeditorcontroller.h \
diffeditordocument.h \
diffeditorfactory.h \
- diffeditormanager.h \
diffeditorplugin.h \
differ.h \
diffutils.h \
@@ -20,7 +19,6 @@ SOURCES += diffeditor.cpp \
diffeditorcontroller.cpp \
diffeditordocument.cpp \
diffeditorfactory.cpp \
- diffeditormanager.cpp \
diffeditorplugin.cpp \
differ.cpp \
diffutils.cpp \
diff --git a/src/plugins/diffeditor/diffeditor.qbs b/src/plugins/diffeditor/diffeditor.qbs
index 58b73b0cba..8a23861f95 100644
--- a/src/plugins/diffeditor/diffeditor.qbs
+++ b/src/plugins/diffeditor/diffeditor.qbs
@@ -21,8 +21,6 @@ QtcPlugin {
"diffeditordocument.h",
"diffeditorfactory.cpp",
"diffeditorfactory.h",
- "diffeditormanager.cpp",
- "diffeditormanager.h",
"diffeditorplugin.cpp",
"diffeditorplugin.h",
"differ.cpp",
diff --git a/src/plugins/diffeditor/diffeditorcontroller.cpp b/src/plugins/diffeditor/diffeditorcontroller.cpp
index 5f4cfef23e..18dd601795 100644
--- a/src/plugins/diffeditor/diffeditorcontroller.cpp
+++ b/src/plugins/diffeditor/diffeditorcontroller.cpp
@@ -32,6 +32,8 @@
#include "diffeditorcontroller.h"
#include "diffeditordocument.h"
+#include <coreplugin/editormanager/editormanager.h>
+#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/icore.h>
#include <utils/qtcassert.h>
@@ -82,6 +84,21 @@ QString DiffEditorController::makePatch(bool revert, bool addPrefix) const
return m_document->makePatch(m_diffFileIndex, m_chunkIndex, revert, addPrefix);
}
+Core::IDocument *DiffEditorController::findOrCreateDocument(const QString &vcsId,
+ const QString &displayName)
+{
+ QString preferredDisplayName = displayName;
+ Core::IEditor *editor = Core::EditorManager::openEditorWithContents(
+ Constants::DIFF_EDITOR_ID, &preferredDisplayName, QByteArray(), vcsId);
+ return editor ? editor->document() : 0;
+}
+
+DiffEditorController *DiffEditorController::controller(Core::IDocument *document)
+{
+ auto doc = qobject_cast<Internal::DiffEditorDocument *>(document);
+ return doc ? doc->controller() : 0;
+}
+
void DiffEditorController::setDiffFiles(const QList<FileData> &diffFileList,
const QString &workingDirectory)
{
diff --git a/src/plugins/diffeditor/diffeditorcontroller.h b/src/plugins/diffeditor/diffeditorcontroller.h
index b21946fff2..7a712f1079 100644
--- a/src/plugins/diffeditor/diffeditorcontroller.h
+++ b/src/plugins/diffeditor/diffeditorcontroller.h
@@ -61,6 +61,9 @@ public:
QString makePatch(bool revert, bool addPrefix = false) const;
+ static Core::IDocument *findOrCreateDocument(const QString &vcsId, const QString &displayName);
+ static DiffEditorController *controller(Core::IDocument *document);
+
public slots:
void informationForCommitReceived(const QString &output);
diff --git a/src/plugins/diffeditor/diffeditordocument.cpp b/src/plugins/diffeditor/diffeditordocument.cpp
index 510401e95a..fc97985861 100644
--- a/src/plugins/diffeditor/diffeditordocument.cpp
+++ b/src/plugins/diffeditor/diffeditordocument.cpp
@@ -31,7 +31,6 @@
#include "diffeditordocument.h"
#include "diffeditorconstants.h"
#include "diffeditorcontroller.h"
-#include "diffeditormanager.h"
#include "diffutils.h"
#include <utils/fileutils.h>
@@ -63,11 +62,6 @@ DiffEditorDocument::DiffEditorDocument() :
setTemporary(true);
}
-DiffEditorDocument::~DiffEditorDocument()
-{
- DiffEditorManager::removeDocument(this);
-}
-
/**
* @brief Set a controller for a document
* @param controller The controller to set.
@@ -214,8 +208,6 @@ bool DiffEditorDocument::save(QString *errorString, const QString &fileName, boo
if (!ok)
return false;
- DiffEditorManager::removeDocument(this);
-
setController(0);
setDescription(QString());
diff --git a/src/plugins/diffeditor/diffeditordocument.h b/src/plugins/diffeditor/diffeditordocument.h
index 911f4f49ac..62d4376640 100644
--- a/src/plugins/diffeditor/diffeditordocument.h
+++ b/src/plugins/diffeditor/diffeditordocument.h
@@ -49,7 +49,6 @@ class DiffEditorDocument : public Core::BaseTextDocument
Q_PROPERTY(QString plainText READ plainText STORED false) // For access by code pasters
public:
DiffEditorDocument();
- ~DiffEditorDocument();
DiffEditorController *controller() const;
diff --git a/src/plugins/diffeditor/diffeditormanager.cpp b/src/plugins/diffeditor/diffeditormanager.cpp
deleted file mode 100644
index 5d3388d4a2..0000000000
--- a/src/plugins/diffeditor/diffeditormanager.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "diffeditormanager.h"
-#include "diffeditor.h"
-#include "diffeditorconstants.h"
-#include "diffeditordocument.h"
-#include <coreplugin/editormanager/editormanager.h>
-#include <coreplugin/editormanager/documentmodel.h>
-#include <coreplugin/id.h>
-#include <coreplugin/idocument.h>
-#include <coreplugin/editormanager/ieditor.h>
-
-#include <utils/qtcassert.h>
-
-namespace DiffEditor {
-
-using namespace Internal;
-
-static DiffEditorManager *m_instance = 0;
-
-DiffEditorManager::DiffEditorManager(QObject *parent)
- : QObject(parent)
-{
- QTC_ASSERT(!m_instance, return);
- m_instance = this;
-}
-
-DiffEditorManager::~DiffEditorManager()
-{
- m_instance = 0;
-}
-
-Core::IDocument *DiffEditorManager::find(const QString &vcsId)
-{
- Core::IDocument *document = m_instance->m_idToDocument.value(vcsId);
- QTC_ASSERT(!document || document->isTemporary(), return 0);
- return document;
-}
-
-Core::IDocument *DiffEditorManager::findOrCreate(const QString &vcsId, const QString &displayName)
-{
- auto document = static_cast<Internal::DiffEditorDocument *>(find(vcsId));
- if (document)
- return document;
-
- DiffEditor *diffEditor = qobject_cast<DiffEditor *>(
- Core::EditorManager::openEditorWithContents(Constants::DIFF_EDITOR_ID, 0));
- QTC_ASSERT(diffEditor, return 0);
-
- document = qobject_cast<Internal::DiffEditorDocument *>(diffEditor->document());
- QTC_ASSERT(document, return 0);
-
- document->setPreferredDisplayName(displayName);
-
- m_instance->m_idToDocument.insert(vcsId, document);
-
- return document;
-}
-
-DiffEditorController *DiffEditorManager::controller(Core::IDocument *document)
-{
- auto doc = qobject_cast<DiffEditorDocument *>(document);
- return doc ? doc->controller() : 0;
-}
-
-void DiffEditorManager::removeDocument(Core::IDocument *document)
-{
- DiffEditorDocument *doc = qobject_cast<DiffEditorDocument *>(document);
- QTC_ASSERT(doc, return);
- for (auto it = m_instance->m_idToDocument.constBegin(); it != m_instance->m_idToDocument.constEnd(); ++it) {
- if (it.value() == doc) {
- m_instance->m_idToDocument.remove(it.key());
- break;
- }
- }
-}
-
-} // namespace DiffEditor
diff --git a/src/plugins/diffeditor/diffeditormanager.h b/src/plugins/diffeditor/diffeditormanager.h
deleted file mode 100644
index 80f50b4ec7..0000000000
--- a/src/plugins/diffeditor/diffeditormanager.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms and
-** conditions see http://www.qt.io/terms-conditions. For further information
-** use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef DIFFEDITORMANAGER_H
-#define DIFFEDITORMANAGER_H
-
-#include "diffeditor_global.h"
-
-#include <QMap>
-#include <QObject>
-
-namespace Core {
-class IDocument;
-class IEditor;
-}
-
-namespace DiffEditor {
-
-class DiffEditorController;
-
-namespace Internal { class DiffEditorDocument; }
-
-class DIFFEDITOR_EXPORT DiffEditorManager : public QObject
-{
- Q_OBJECT
-public:
- explicit DiffEditorManager(QObject *parent);
- virtual ~DiffEditorManager();
-
- static Core::IDocument *findOrCreate(const QString &vcsId, const QString &displayName);
- static DiffEditorController *controller(Core::IDocument *document);
-
-private:
- static Core::IDocument *find(const QString &vcsId);
- static void removeDocument(Core::IDocument *document);
-
- QMap<QString, Internal::DiffEditorDocument *> m_idToDocument;
-
- friend class Internal::DiffEditorDocument;
-};
-
-} // namespace DiffEditor
-
-#endif // DIFFEDITORMANAGER_H
diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp
index e87f8aaa90..2a69205e43 100644
--- a/src/plugins/diffeditor/diffeditorplugin.cpp
+++ b/src/plugins/diffeditor/diffeditorplugin.cpp
@@ -34,7 +34,6 @@
#include "diffeditorcontroller.h"
#include "diffeditordocument.h"
#include "diffeditorfactory.h"
-#include "diffeditormanager.h"
#include "differ.h"
#include <QAction>
@@ -148,8 +147,6 @@ bool DiffEditorPlugin::initialize(const QStringList &arguments, QString *errorMe
addAutoReleasedObject(new DiffEditorFactory(this));
- new DiffEditorManager(this);
-
return true;
}
@@ -173,15 +170,14 @@ void DiffEditorPlugin::diff()
const QString documentId = QLatin1String("Diff ") + fileName1 + QLatin1String(", ") + fileName2;
QString title = tr("Diff \"%1\", \"%2\"").arg(fileName1).arg(fileName2);
- auto const document
- = qobject_cast<DiffEditorDocument *>(DiffEditorManager::findOrCreate(documentId, title));
+ auto const document = qobject_cast<DiffEditorDocument *>(
+ DiffEditorController::findOrCreateDocument(documentId, title));
if (!document)
return;
- DiffEditorController *controller = DiffEditorManager::controller(document);
+ DiffEditorController *controller = DiffEditorController::controller(document);
if (!controller)
controller = new FileDiffController(document, fileName1, fileName2);
- QTC_ASSERT(controller, return);
Core::EditorManager::activateEditorForDocument(document);
document->reload();
}