File indexing completed on 2024-05-12 04:37:43

0001 /*
0002     SPDX-FileCopyrightText: 2009 Lior Mualem <lior.m.kde@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KDEVPLATFORM_ALLCLASSESFOLDER_H
0008 #define KDEVPLATFORM_ALLCLASSESFOLDER_H
0009 
0010 #include "documentclassesfolder.h"
0011 
0012 namespace KDevelop {
0013 class IProject;
0014 }
0015 
0016 namespace ClassModelNodes {
0017 /// Special folder.
0018 /// It displays all the classes in the projects by using the IProject
0019 class AllClassesFolder
0020     : public DocumentClassesFolder
0021 {
0022     Q_OBJECT
0023 
0024 public:
0025     explicit AllClassesFolder(NodesModelInterface* a_model);
0026 
0027 public: // Node overrides
0028     void nodeCleared() override;
0029     void populateNode() override;
0030 
0031 private Q_SLOTS:
0032     // Project watching
0033     void projectOpened(KDevelop::IProject* project);
0034     void projectClosing(KDevelop::IProject* project);
0035 };
0036 
0037 /// Contains a filter for the all classes folder.
0038 class FilteredAllClassesFolder
0039     : public AllClassesFolder
0040 {
0041     Q_OBJECT
0042 
0043 public:
0044     explicit FilteredAllClassesFolder(NodesModelInterface* a_model);
0045 
0046 public: // Operations.
0047     /// Call this to update the classes filter string.
0048     void updateFilterString(const QString& a_newFilterString);
0049 
0050 private: // DocumentClassesFolder overrides
0051     bool isClassFiltered(const KDevelop::QualifiedIdentifier& a_id) override;
0052 
0053 private:
0054     /// We'll use this string to display only classes that match this string.
0055     QString m_filterString;
0056 };
0057 } // namespace ClassModelNodes
0058 
0059 #endif