diff --git a/src/plugins/coreplugin/locator/directoryfilter.h b/src/plugins/coreplugin/locator/directoryfilter.h index c629722ac2a..ea17dc4f9b5 100644 --- a/src/plugins/coreplugin/locator/directoryfilter.h +++ b/src/plugins/coreplugin/locator/directoryfilter.h @@ -60,8 +60,8 @@ public: void setExclusionFilters(const QStringList &exclusionFilters); protected: - void saveState(QJsonObject &object) const final; - void restoreState(const QJsonObject &object) final; + void saveState(QJsonObject &object) const override; + void restoreState(const QJsonObject &object) override; private: void handleAddDirectory(); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index b776a9dec91..e1f0629878b 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -154,6 +154,7 @@ #include #include #include +#include #include #include #include @@ -396,6 +397,15 @@ public: } }; +class AllProjectFilesFilter : public DirectoryFilter +{ +public: + AllProjectFilesFilter(); + +protected: + void saveState(QJsonObject &object) const override; + void restoreState(const QJsonObject &object) override; +}; class ProjectExplorerPluginPrivate : public QObject { @@ -626,7 +636,7 @@ public: AllProjectsFilter m_allProjectsFilter; CurrentProjectFilter m_currentProjectFilter; - DirectoryFilter m_allProjectDirectoriesFilter; + AllProjectFilesFilter m_allProjectDirectoriesFilter; ProcessStepFactory m_processStepFactory; @@ -2848,14 +2858,7 @@ bool ProjectExplorerPlugin::saveModifiedFiles() // because someone delete all build configurations ProjectExplorerPluginPrivate::ProjectExplorerPluginPrivate() - : m_allProjectDirectoriesFilter("Files in All Project Directories") { - m_allProjectDirectoriesFilter.setDisplayName(m_allProjectDirectoriesFilter.id().toString()); - // shared with "Files in Any Project": - m_allProjectDirectoriesFilter.setDefaultShortcutString("a"); - m_allProjectDirectoriesFilter.setDefaultIncludedByDefault(false); // but not included in default - m_allProjectDirectoriesFilter.setFilters({}); - m_allProjectDirectoriesFilter.setIsCustomFilter(false); } void ProjectExplorerPluginPrivate::runProjectContextMenu() @@ -4163,4 +4166,36 @@ bool ProjectManager::canOpenProjectForMimeType(const MimeType &mt) return false; } +AllProjectFilesFilter::AllProjectFilesFilter() + : DirectoryFilter("Files in All Project Directories") +{ + setDisplayName(id().toString()); + // shared with "Files in Any Project": + setDefaultShortcutString("a"); + setDefaultIncludedByDefault(false); // but not included in default + setFilters({}); + setIsCustomFilter(false); +} + +const char kDirectoriesKey[] = "directories"; +const char kFilesKey[] = "files"; + +void AllProjectFilesFilter::saveState(QJsonObject &object) const +{ + DirectoryFilter::saveState(object); + // do not save the directories, they are automatically managed + object.remove(kDirectoriesKey); + object.remove(kFilesKey); +} + +void AllProjectFilesFilter::restoreState(const QJsonObject &object) +{ + // do not restore the directories (from saved settings from Qt Creator <= 5, + // they are automatically managed + QJsonObject withoutDirectories = object; + withoutDirectories.remove(kDirectoriesKey); + withoutDirectories.remove(kFilesKey); + DirectoryFilter::restoreState(withoutDirectories); +} + } // namespace ProjectExplorer