diff --git a/src/plugins/projectexplorer/CMakeLists.txt b/src/plugins/projectexplorer/CMakeLists.txt index a8e63b8f36c..5454d11da75 100644 --- a/src/plugins/projectexplorer/CMakeLists.txt +++ b/src/plugins/projectexplorer/CMakeLists.txt @@ -79,6 +79,8 @@ add_qtc_plugin(ProjectExplorer extraabi.cpp extraabi.h extracompiler.cpp extracompiler.h fileinsessionfinder.cpp fileinsessionfinder.h + filesinallprojectsfind.h + filesinallprojectsfind.cpp filterkitaspectsdialog.cpp filterkitaspectsdialog.h foldernavigationwidget.cpp foldernavigationwidget.h gccparser.cpp gccparser.h diff --git a/src/plugins/projectexplorer/filesinallprojectsfind.cpp b/src/plugins/projectexplorer/filesinallprojectsfind.cpp new file mode 100644 index 00000000000..80dccb4e47a --- /dev/null +++ b/src/plugins/projectexplorer/filesinallprojectsfind.cpp @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "filesinallprojectsfind.h" + +#include "project.h" +#include "session.h" + +#include +#include +#include + +#include + +using namespace Utils; + +namespace ProjectExplorer { +namespace Internal { + +QString FilesInAllProjectsFind::id() const +{ + return QLatin1String("Files in All Project Directories"); +} + +QString FilesInAllProjectsFind::displayName() const +{ + return tr("Files in All Project Directories"); +} + +const char kSettingsKey[] = "FilesInAllProjectDirectories"; + +void FilesInAllProjectsFind::writeSettings(QSettings *settings) +{ + settings->beginGroup(kSettingsKey); + writeCommonSettings(settings); + settings->endGroup(); +} + +void FilesInAllProjectsFind::readSettings(QSettings *settings) +{ + settings->beginGroup(kSettingsKey); + readCommonSettings( + settings, + "CMakeLists.txt,*.cmake,*.pro,*.pri,*.qbs,*.cpp,*.h,*.mm,*.qml,*.md,*.txt,*.qdoc", + "*/.git/*,*/.cvs/*,*/.svn/*,*.autosave"); + settings->endGroup(); +} + +Utils::FileIterator *FilesInAllProjectsFind::files(const QStringList &nameFilters, + const QStringList &exclusionFilters, + const QVariant &additionalParameters) const +{ + Q_UNUSED(additionalParameters) + const QSet dirs = Utils::transform(SessionManager::projects(), [](Project *p) { + return p->projectFilePath().parentDir(); + }); + const QStringList dirStrings = Utils::transform(dirs, &FilePath::toString); + return new SubDirFileIterator(dirStrings, + nameFilters, + exclusionFilters, + Core::EditorManager::defaultTextCodec()); +} + +QString FilesInAllProjectsFind::label() const +{ + return tr("Files in All Project Directories:"); +} + +} // namespace Internal +} // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/filesinallprojectsfind.h b/src/plugins/projectexplorer/filesinallprojectsfind.h new file mode 100644 index 00000000000..48e96cd6609 --- /dev/null +++ b/src/plugins/projectexplorer/filesinallprojectsfind.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include "allprojectsfind.h" + +namespace ProjectExplorer { +namespace Internal { + +class FilesInAllProjectsFind : public AllProjectsFind +{ + Q_OBJECT + +public: + QString id() const override; + QString displayName() const override; + + void writeSettings(QSettings *settings) override; + void readSettings(QSettings *settings) override; + +protected: + Utils::FileIterator *files(const QStringList &nameFilters, + const QStringList &exclusionFilters, + const QVariant &additionalParameters) const override; + QString label() const override; +}; + +} // namespace Internal +} // namespace ProjectExplorer + diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index e1f0629878b..129caef5d66 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -43,62 +43,62 @@ #ifdef WITH_JOURNALD #include "journaldwatcher.h" #endif -#include "jsonwizard/jsonwizardfactory.h" -#include "jsonwizard/jsonwizardgeneratorfactory.h" -#include "jsonwizard/jsonwizardpagefactory_p.h" -#include "namedwidget.h" -#include "project.h" -#include "projectexplorersettings.h" -#include "projectexplorersettingspage.h" -#include "projectmanager.h" -#include "removetaskhandler.h" -#include "runconfigurationaspects.h" -#include "kitfeatureprovider.h" -#include "kitmanager.h" -#include "kitoptionspage.h" -#include "parseissuesdialog.h" -#include "target.h" -#include "toolchainmanager.h" -#include "toolchainoptionspage.h" -#include "copytaskhandler.h" -#include "showineditortaskhandler.h" -#include "vcsannotatetaskhandler.h" #include "allprojectsfilter.h" #include "allprojectsfind.h" +#include "appoutputpane.h" +#include "buildconfiguration.h" #include "buildmanager.h" #include "buildsettingspropertiespage.h" -#include "currentprojectfind.h" -#include "currentprojectfilter.h" -#include "editorsettingspropertiespage.h" #include "codestylesettingspropertiespage.h" -#include "dependenciespanel.h" -#include "foldernavigationwidget.h" -#include "appoutputpane.h" -#include "processstep.h" -#include "kitinformation.h" -#include "projectfilewizardextension.h" -#include "projectmanager.h" -#include "projecttreewidget.h" -#include "projectwindow.h" -#include "runsettingspropertiespage.h" -#include "session.h" -#include "projectnodes.h" -#include "sessiondialog.h" -#include "buildconfiguration.h" -#include "miniprojecttargetselector.h" -#include "taskhub.h" +#include "copytaskhandler.h" +#include "currentprojectfilter.h" +#include "currentprojectfind.h" #include "customtoolchain.h" -#include "selectablefilesmodel.h" #include "customwizard/customwizard.h" +#include "dependenciespanel.h" #include "devicesupport/desktopdevice.h" #include "devicesupport/desktopdevicefactory.h" #include "devicesupport/devicemanager.h" #include "devicesupport/devicesettingspage.h" #include "devicesupport/sshsettingspage.h" -#include "targetsettingspanel.h" -#include "projectpanelfactory.h" +#include "editorsettingspropertiespage.h" +#include "filesinallprojectsfind.h" +#include "foldernavigationwidget.h" +#include "jsonwizard/jsonwizardfactory.h" +#include "jsonwizard/jsonwizardgeneratorfactory.h" +#include "jsonwizard/jsonwizardpagefactory_p.h" +#include "kitfeatureprovider.h" +#include "kitinformation.h" +#include "kitmanager.h" +#include "kitoptionspage.h" +#include "miniprojecttargetselector.h" +#include "namedwidget.h" +#include "parseissuesdialog.h" +#include "processstep.h" +#include "project.h" #include "projectexplorericons.h" +#include "projectexplorersettings.h" +#include "projectexplorersettingspage.h" +#include "projectfilewizardextension.h" +#include "projectmanager.h" +#include "projectnodes.h" +#include "projectpanelfactory.h" +#include "projecttreewidget.h" +#include "projectwindow.h" +#include "removetaskhandler.h" +#include "runconfigurationaspects.h" +#include "runsettingspropertiespage.h" +#include "selectablefilesmodel.h" +#include "session.h" +#include "sessiondialog.h" +#include "showineditortaskhandler.h" #include "simpleprojectwizard.h" +#include "target.h" +#include "targetsettingspanel.h" +#include "taskhub.h" +#include "toolchainmanager.h" +#include "toolchainoptionspage.h" +#include "vcsannotatetaskhandler.h" #include "windebuginterface.h" #include "msvctoolchain.h" @@ -642,6 +642,7 @@ public: AllProjectsFind m_allProjectsFind; CurrentProjectFind m_curretProjectFind; + FilesInAllProjectsFind m_filesInAllProjectsFind; CustomExecutableRunConfigurationFactory m_customExecutableRunConfigFactory; CustomExecutableRunWorkerFactory m_customExecutableRunWorkerFactory; diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index c2ff07180d0..48b46c69e7f 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -163,7 +163,8 @@ HEADERS += projectexplorer.h \ parseissuesdialog.h \ treescanner.h \ rawprojectpart.h \ - simpleprojectwizard.h + simpleprojectwizard.h \ + filesinallprojectsfind.h SOURCES += projectexplorer.cpp \ abi.cpp \ @@ -309,7 +310,8 @@ SOURCES += projectexplorer.cpp \ parseissuesdialog.cpp \ treescanner.cpp \ rawprojectpart.cpp \ - simpleprojectwizard.cpp + simpleprojectwizard.cpp \ + filesinallprojectsfind.cpp FORMS += \ editorsettingspropertiespage.ui \ diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index 324e3fd3fb2..dc078bacda0 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -72,6 +72,7 @@ Project { "extraabi.cpp", "extraabi.h", "extracompiler.cpp", "extracompiler.h", "fileinsessionfinder.cpp", "fileinsessionfinder.h", + "filesinallprojectsfind.cpp", "filesinallprojectsfind.h", "filterkitaspectsdialog.cpp", "filterkitaspectsdialog.h", "foldernavigationwidget.cpp", "foldernavigationwidget.h", "gccparser.cpp", "gccparser.h",