From 35bc86d1a705cc09c645c4c960b0badf5a674d53 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 18 Jul 2024 11:56:04 +0200 Subject: [PATCH] DiffEditor: Hide DiffEditor definition in .cpp And use the new factory setup scheme. Change-Id: I9b220e9995f82edc25e7cc43dbdbbbbcdac3cfd3 Reviewed-by: Jarek Kobus --- src/plugins/diffeditor/CMakeLists.txt | 1 - src/plugins/diffeditor/diffeditor.cpp | 88 +++++++++++++++++++- src/plugins/diffeditor/diffeditor.h | 86 +------------------ src/plugins/diffeditor/diffeditor.qbs | 2 - src/plugins/diffeditor/diffeditorfactory.cpp | 25 ------ src/plugins/diffeditor/diffeditorfactory.h | 16 ---- src/plugins/diffeditor/diffeditorplugin.cpp | 5 +- 7 files changed, 92 insertions(+), 131 deletions(-) delete mode 100644 src/plugins/diffeditor/diffeditorfactory.cpp delete mode 100644 src/plugins/diffeditor/diffeditorfactory.h diff --git a/src/plugins/diffeditor/CMakeLists.txt b/src/plugins/diffeditor/CMakeLists.txt index 580bce7fa41..aa7731fc2af 100644 --- a/src/plugins/diffeditor/CMakeLists.txt +++ b/src/plugins/diffeditor/CMakeLists.txt @@ -8,7 +8,6 @@ add_qtc_plugin(DiffEditor diffeditorconstants.h diffeditorcontroller.cpp diffeditorcontroller.h diffeditordocument.cpp diffeditordocument.h - diffeditorfactory.cpp diffeditorfactory.h diffeditoricons.h diffeditorplugin.cpp diffeditorplugin.h diffeditorwidgetcontroller.cpp diffeditorwidgetcontroller.h diff --git a/src/plugins/diffeditor/diffeditor.cpp b/src/plugins/diffeditor/diffeditor.cpp index b320bd663e7..ce950889612 100644 --- a/src/plugins/diffeditor/diffeditor.cpp +++ b/src/plugins/diffeditor/diffeditor.cpp @@ -2,6 +2,8 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "diffeditor.h" + +#include "diffenums.h" #include "diffeditorconstants.h" #include "diffeditordocument.h" #include "diffeditoricons.h" @@ -10,6 +12,9 @@ #include #include +#include +#include +#include #include #include @@ -22,6 +27,7 @@ #include #include +#include #include #include @@ -123,6 +129,69 @@ void DescriptionEditorWidget::applyFontSettings() ///////////////////////////////// DiffEditor ////////////////////////////////// +class DiffEditor : public Core::IEditor +{ +public: + DiffEditor(DiffEditorDocument *doc); + ~DiffEditor() override; + + Core::IEditor *duplicate() override; + Core::IDocument *document() const override; + QWidget *toolBar() override; + +private: + DiffEditor(); + void setDocument(std::shared_ptr doc); + + void documentHasChanged(); + void toggleDescription(); + void updateDescription(); + void contextLineCountHasChanged(int lines); + void ignoreWhitespaceHasChanged(); + void prepareForReload(); + void reloadHasFinished(bool success); + void currentIndexChanged(int index); + void setCurrentDiffFileIndex(int index); + void documentStateChanged(); + + void toggleSync(); + + IDiffView *loadSettings(); + void saveSetting(const Utils::Key &key, const QVariant &value) const; + void updateEntryToolTip(); + void showDiffView(IDiffView *view); + void updateDiffEditorSwitcher(); + void addView(IDiffView *view); + IDiffView *currentView() const; + void setCurrentView(IDiffView *view); + IDiffView *nextView(); + void setupView(IDiffView *view); + + std::shared_ptr m_document; + DescriptionEditorWidget *m_descriptionWidget = nullptr; + UnifiedView *m_unifiedView = nullptr; + SideBySideView *m_sideBySideView = nullptr; + QStackedWidget *m_stackedWidget = nullptr; + QList m_views; + QToolBar *m_toolBar = nullptr; + QComboBox *m_entriesComboBox = nullptr; + QSpinBox *m_contextSpinBox = nullptr; + QAction *m_contextSpinBoxAction = nullptr; + QAction *m_toggleSyncAction = nullptr; + QAction *m_whitespaceButtonAction = nullptr; + QAction *m_toggleDescriptionAction = nullptr; + QAction *m_reloadAction = nullptr; + QAction *m_contextLabelAction = nullptr; + QAction *m_viewSwitcherAction = nullptr; + QPair m_currentFileChunk; + int m_currentViewIndex = -1; + int m_currentDiffFileIndex = -1; + int m_descriptionHeight = 8; + Utils::Guard m_ignoreChanges; + bool m_sync = false; + bool m_showDescription = true; +}; + DiffEditor::DiffEditor() { // Editor: @@ -599,6 +668,23 @@ void DiffEditor::showDiffView(IDiffView *view) setupView(view); } -} // namespace DiffEditor::Internal +class DiffEditorFactory : public Core::IEditorFactory +{ +public: + DiffEditorFactory() + { + setId(Constants::DIFF_EDITOR_ID); + setDisplayName(Tr::tr("Diff Editor")); + addMimeType(Constants::DIFF_EDITOR_MIMETYPE); + setEditorCreator([] { return new DiffEditor(new DiffEditorDocument); }); + } +}; + +void setupDiffEditorFactory() +{ + static DiffEditorFactory theDiffEditorFactory; +} + +} // DiffEditor::Internal #include "diffeditor.moc" diff --git a/src/plugins/diffeditor/diffeditor.h b/src/plugins/diffeditor/diffeditor.h index e42157ec503..1dea84fb14a 100644 --- a/src/plugins/diffeditor/diffeditor.h +++ b/src/plugins/diffeditor/diffeditor.h @@ -3,90 +3,8 @@ #pragma once -#include "diffenums.h" - -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QComboBox; -class QSpinBox; -class QToolBar; -class QStackedWidget; -QT_END_NAMESPACE - namespace DiffEditor::Internal { -class DescriptionEditorWidget; -class DiffEditorDocument; -class IDiffView; -class UnifiedView; -class SideBySideView; +void setupDiffEditorFactory(); -class DiffEditor : public Core::IEditor -{ - Q_OBJECT - -public: - DiffEditor(DiffEditorDocument *doc); - ~DiffEditor() override; - - Core::IEditor *duplicate() override; - Core::IDocument *document() const override; - QWidget *toolBar() override; - -private: - DiffEditor(); - void setDocument(std::shared_ptr doc); - - void documentHasChanged(); - void toggleDescription(); - void updateDescription(); - void contextLineCountHasChanged(int lines); - void ignoreWhitespaceHasChanged(); - void prepareForReload(); - void reloadHasFinished(bool success); - void currentIndexChanged(int index); - void setCurrentDiffFileIndex(int index); - void documentStateChanged(); - - void toggleSync(); - - IDiffView *loadSettings(); - void saveSetting(const Utils::Key &key, const QVariant &value) const; - void updateEntryToolTip(); - void showDiffView(IDiffView *view); - void updateDiffEditorSwitcher(); - void addView(IDiffView *view); - IDiffView *currentView() const; - void setCurrentView(IDiffView *view); - IDiffView *nextView(); - void setupView(IDiffView *view); - - std::shared_ptr m_document; - DescriptionEditorWidget *m_descriptionWidget = nullptr; - UnifiedView *m_unifiedView = nullptr; - SideBySideView *m_sideBySideView = nullptr; - QStackedWidget *m_stackedWidget = nullptr; - QList m_views; - QToolBar *m_toolBar = nullptr; - QComboBox *m_entriesComboBox = nullptr; - QSpinBox *m_contextSpinBox = nullptr; - QAction *m_contextSpinBoxAction = nullptr; - QAction *m_toggleSyncAction = nullptr; - QAction *m_whitespaceButtonAction = nullptr; - QAction *m_toggleDescriptionAction = nullptr; - QAction *m_reloadAction = nullptr; - QAction *m_contextLabelAction = nullptr; - QAction *m_viewSwitcherAction = nullptr; - QPair m_currentFileChunk; - int m_currentViewIndex = -1; - int m_currentDiffFileIndex = -1; - int m_descriptionHeight = 8; - Utils::Guard m_ignoreChanges; - bool m_sync = false; - bool m_showDescription = true; -}; - -} // namespace DiffEditor::Internal +} // DiffEditor::Internal diff --git a/src/plugins/diffeditor/diffeditor.qbs b/src/plugins/diffeditor/diffeditor.qbs index 742997d4db9..2713ec2fb73 100644 --- a/src/plugins/diffeditor/diffeditor.qbs +++ b/src/plugins/diffeditor/diffeditor.qbs @@ -24,8 +24,6 @@ QtcPlugin { "diffeditorcontroller.h", "diffeditordocument.cpp", "diffeditordocument.h", - "diffeditorfactory.cpp", - "diffeditorfactory.h", "diffeditorplugin.cpp", "diffeditorplugin.h", "diffeditorwidgetcontroller.cpp", diff --git a/src/plugins/diffeditor/diffeditorfactory.cpp b/src/plugins/diffeditor/diffeditorfactory.cpp deleted file mode 100644 index 775a90db22d..00000000000 --- a/src/plugins/diffeditor/diffeditorfactory.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "diffeditorfactory.h" -#include "diffeditor.h" -#include "diffeditorconstants.h" -#include "diffeditordocument.h" -#include "diffeditortr.h" - -#include - -using namespace Core; -using namespace Utils; - -namespace DiffEditor::Internal { - -DiffEditorFactory::DiffEditorFactory() -{ - setId(Constants::DIFF_EDITOR_ID); - setDisplayName(Tr::tr("Diff Editor")); - addMimeType(Constants::DIFF_EDITOR_MIMETYPE); - setEditorCreator([] { return new DiffEditor(new DiffEditorDocument); }); -} - -} // namespace DiffEditor::Internal diff --git a/src/plugins/diffeditor/diffeditorfactory.h b/src/plugins/diffeditor/diffeditorfactory.h deleted file mode 100644 index 3c05e4af1ce..00000000000 --- a/src/plugins/diffeditor/diffeditorfactory.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace DiffEditor::Internal { - -class DiffEditorFactory : public Core::IEditorFactory -{ -public: - DiffEditorFactory(); -}; - -} // namespace DiffEditor::Internal diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp index 3bc20607840..b9097750666 100644 --- a/src/plugins/diffeditor/diffeditorplugin.cpp +++ b/src/plugins/diffeditor/diffeditorplugin.cpp @@ -5,7 +5,7 @@ #include "diffeditorconstants.h" #include "diffeditorcontroller.h" #include "diffeditordocument.h" -#include "diffeditorfactory.h" +#include "diffeditor.h" #include "diffeditortr.h" #include @@ -412,12 +412,13 @@ public: QAction *m_diffCurrentFileAction = nullptr; QAction *m_diffOpenFilesAction = nullptr; - DiffEditorFactory m_editorFactory; DiffEditorServiceImpl m_service; }; DiffEditorPluginPrivate::DiffEditorPluginPrivate() { + setupDiffEditorFactory(); + //register actions ActionContainer *toolsContainer = ActionManager::actionContainer(Core::Constants::M_TOOLS); toolsContainer->insertGroup(Core::Constants::G_TOOLS_DEBUG, Constants::G_TOOLS_DIFF);