// 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 "findinopenfiles.h" #include "basefilefind.h" #include "textdocument.h" #include "texteditortr.h" #include #include #include 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, this, &FindInOpenFiles::updateEnabledState); connect(Core::EditorManager::instance(), &Core::EditorManager::editorsClosed, this, &FindInOpenFiles::updateEnabledState); } QString FindInOpenFiles::id() const { return QLatin1String("Open Files"); } QString FindInOpenFiles::displayName() const { return Tr::tr("Open Documents"); } FileContainerProvider FindInOpenFiles::fileContainerProvider() const { return [] { const QMap encodings = TextDocument::openedTextDocumentEncodings(); FilePaths fileNames; QList codecs; const QList entries = Core::DocumentModel::entries(); for (Core::DocumentModel::Entry *entry : entries) { const FilePath fileName = entry->filePath(); if (!fileName.isEmpty()) { fileNames.append(fileName); QTextCodec *codec = encodings.value(fileName); if (!codec) codec = Core::EditorManager::defaultTextCodec(); codecs.append(codec); } } return FileListContainer(fileNames, codecs); }; } QString FindInOpenFiles::label() const { return Tr::tr("Open documents:"); } QString FindInOpenFiles::toolTip() const { // %1 is filled by BaseFileFind::runNewSearch return Tr::tr("Open Documents\n%1"); } bool FindInOpenFiles::isEnabled() const { return Core::DocumentModel::entryCount() > 0; } void FindInOpenFiles::writeSettings(QtcSettings *settings) { settings->beginGroup("FindInOpenFiles"); writeCommonSettings(settings); settings->endGroup(); } void FindInOpenFiles::readSettings(QtcSettings *settings) { settings->beginGroup("FindInOpenFiles"); readCommonSettings(settings, "*", ""); settings->endGroup(); } void setupFindInOpenFiles() { static FindInOpenFiles theFindInOpenFiles; } } // TextEditor::Internal