diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp index b3f749977a0..7d3ad849972 100644 --- a/src/plugins/texteditor/findincurrentfile.cpp +++ b/src/plugins/texteditor/findincurrentfile.cpp @@ -3,6 +3,7 @@ #include "findincurrentfile.h" +#include "basefilefind.h" #include "textdocument.h" #include "texteditortr.h" @@ -11,10 +12,33 @@ #include +#include + using namespace Utils; namespace TextEditor::Internal { +class FindInCurrentFile final : public BaseFileFind +{ +public: + FindInCurrentFile(); + +private: + QString id() const final; + QString displayName() const final; + bool isEnabled() const final; + void writeSettings(Utils::QtcSettings *settings) final; + void readSettings(Utils::QtcSettings *settings) final; + + QString label() const final; + QString toolTip() const final; + + FileContainerProvider fileContainerProvider() const final; + void handleFileChange(Core::IEditor *editor); + + QPointer m_currentDocument; +}; + FindInCurrentFile::FindInCurrentFile() { connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged, @@ -87,4 +111,9 @@ void FindInCurrentFile::readSettings(QtcSettings *settings) settings->endGroup(); } +void setupFindInCurrentFile() +{ + static FindInCurrentFile theFindInCurrentFile; +} + } // TextEditor::Internal diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h index e551db0b7f1..969b755f878 100644 --- a/src/plugins/texteditor/findincurrentfile.h +++ b/src/plugins/texteditor/findincurrentfile.h @@ -3,41 +3,8 @@ #pragma once -#include "basefilefind.h" +namespace TextEditor::Internal { -#include +void setupFindInCurrentFile(); -namespace Core { -class IEditor; -class IDocument; -} // namespace Core - -namespace TextEditor { -namespace Internal { - -class FindInCurrentFile final : public BaseFileFind -{ - Q_OBJECT - -public: - FindInCurrentFile(); - - QString id() const override; - QString displayName() const override; - bool isEnabled() const override; - void writeSettings(Utils::QtcSettings *settings) override; - void readSettings(Utils::QtcSettings *settings) override; - -protected: - QString label() const override; - QString toolTip() const override; - -private: - FileContainerProvider fileContainerProvider() const override; - void handleFileChange(Core::IEditor *editor); - - QPointer m_currentDocument; -}; - -} // namespace Internal -} // namespace TextEditor +} // TextEditor::Internal diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index 440ae069a78..955316954b5 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -23,12 +23,10 @@ using namespace Utils; namespace TextEditor { -static FindInFiles *m_instance = nullptr; static const char HistoryKey[] = "FindInFiles.Directories.History"; FindInFiles::FindInFiles() { - m_instance = this; connect(EditorManager::instance(), &EditorManager::findOnFileSystemRequest, this, &FindInFiles::findOnFileSystem); } @@ -209,18 +207,30 @@ void FindInFiles::setBaseDirectory(const FilePath &directory) m_directory->setBaseDirectory(directory); } +static FindInFiles *s_instance; + +FindInFiles &findInFiles() +{ + return *s_instance; +} + void FindInFiles::findOnFileSystem(const QString &path) { - QTC_ASSERT(m_instance, return); const QFileInfo fi(path); const QString folder = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath(); - m_instance->setSearchDir(FilePath::fromString(folder)); - Find::openFindDialog(m_instance); + findInFiles().setSearchDir(FilePath::fromString(folder)); + Find::openFindDialog(&findInFiles()); } FindInFiles *FindInFiles::instance() { - return m_instance; + return s_instance; +} + +void Internal::setupFindInFiles(QObject *guard) +{ + s_instance = new FindInFiles; + s_instance->setParent(guard); } } // TextEditor diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index 757458e0880..c7803a16ed4 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -58,4 +58,6 @@ private: bool m_isValid = false; }; +namespace Internal { void setupFindInFiles(QObject *guard); } + } // namespace TextEditor diff --git a/src/plugins/texteditor/findinopenfiles.cpp b/src/plugins/texteditor/findinopenfiles.cpp index 52c04d3b1d0..dcd505cbe1f 100644 --- a/src/plugins/texteditor/findinopenfiles.cpp +++ b/src/plugins/texteditor/findinopenfiles.cpp @@ -3,6 +3,7 @@ #include "findinopenfiles.h" +#include "basefilefind.h" #include "textdocument.h" #include "texteditortr.h" @@ -15,6 +16,25 @@ using namespace Utils; namespace TextEditor::Internal { +class FindInOpenFiles : public BaseFileFind +{ +public: + FindInOpenFiles(); + +private: + QString id() const final; + QString displayName() const final; + bool isEnabled() const final; + void writeSettings(Utils::QtcSettings *settings) final; + void readSettings(Utils::QtcSettings *settings) final; + + QString label() const final; + QString toolTip() const final; + + FileContainerProvider fileContainerProvider() const final; + void updateEnabledState() { emit enabledChanged(isEnabled()); } +}; + FindInOpenFiles::FindInOpenFiles() { connect(Core::EditorManager::instance(), &Core::EditorManager::editorOpened, @@ -84,9 +104,11 @@ void FindInOpenFiles::readSettings(QtcSettings *settings) settings->endGroup(); } -void FindInOpenFiles::updateEnabledState() + + +void setupFindInOpenFiles() { - emit enabledChanged(isEnabled()); + static FindInOpenFiles theFindInOpenFiles; } } // TextEditor::Internal diff --git a/src/plugins/texteditor/findinopenfiles.h b/src/plugins/texteditor/findinopenfiles.h index 8e2f42695a0..c72705f7a90 100644 --- a/src/plugins/texteditor/findinopenfiles.h +++ b/src/plugins/texteditor/findinopenfiles.h @@ -3,32 +3,8 @@ #pragma once -#include "basefilefind.h" +namespace TextEditor::Internal { -namespace TextEditor { -namespace Internal { +void setupFindInOpenFiles(); -class FindInOpenFiles : public BaseFileFind -{ - Q_OBJECT - -public: - FindInOpenFiles(); - - QString id() const override; - QString displayName() const override; - bool isEnabled() const override; - void writeSettings(Utils::QtcSettings *settings) override; - void readSettings(Utils::QtcSettings *settings) override; - -protected: - QString label() const override; - QString toolTip() const override; - -private: - FileContainerProvider fileContainerProvider() const override; - void updateEnabledState(); -}; - -} // namespace Internal -} // namespace TextEditor +} // TextEditor::Internal diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index 2390fb8b22b..1d5dafd53d3 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -67,10 +67,6 @@ const char kCurrentDocumentWordUnderCursor[] = "CurrentDocument:WordUnderCursor" class TextEditorPluginPrivate : public QObject { public: - FindInFiles findInFilesFilter; - FindInCurrentFile findInCurrentFileFilter; - FindInOpenFiles findInOpenFilesFilter; - MarkdownEditorFactory markdownEditorFactory; JsonEditorFactory jsonEditorFactory; }; @@ -122,6 +118,10 @@ void TextEditorPlugin::initialize() setupBookmarkView(); setupBookmarkFilter(); + setupFindInFiles(this); + setupFindInCurrentFile(); + setupFindInOpenFiles(); + d = new TextEditorPluginPrivate; Context context(TextEditor::Constants::C_TEXTEDITOR);