File indexing completed on 2024-04-28 04:39:08
0001 /* 0002 SPDX-FileCopyrightText: 2013 Milian Wolff <mail@milianw.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVPLATFORM_PLUGIN_PROJECTFILTERPROVIDER_H 0008 #define KDEVPLATFORM_PLUGIN_PROJECTFILTERPROVIDER_H 0009 0010 #include <interfaces/iplugin.h> 0011 #include <project/interfaces/iprojectfilterprovider.h> 0012 0013 #include "projectfilter.h" 0014 0015 #include <QVariantList> 0016 0017 namespace KDevelop { 0018 0019 class ProjectFilterProvider: public IPlugin, public IProjectFilterProvider 0020 { 0021 Q_OBJECT 0022 Q_INTERFACES( KDevelop::IProjectFilterProvider ) 0023 0024 public: 0025 explicit ProjectFilterProvider( QObject* parent = nullptr, const QVariantList& args = QVariantList() ); 0026 0027 QSharedPointer<IProjectFilter> createFilter(IProject* project) const override; 0028 0029 ContextMenuExtension contextMenuExtension(Context* context, QWidget* parent) override; 0030 0031 int perProjectConfigPages() const override; 0032 ConfigPage* perProjectConfigPage(int number, const ProjectConfigOptions& options, QWidget* parent) override; 0033 0034 Q_SIGNALS: 0035 void filterChanged(KDevelop::IProjectFilterProvider*, KDevelop::IProject*); 0036 0037 public Q_SLOTS: 0038 void updateProjectFilters(KDevelop::IProject* project); 0039 0040 private Q_SLOTS: 0041 void projectClosing(KDevelop::IProject*); 0042 void projectAboutToBeOpened(KDevelop::IProject*); 0043 0044 void addFilterFromContextMenu(); 0045 0046 private: 0047 QHash<KDevelop::IProject*, QVector<Filter> > m_filters; 0048 }; 0049 0050 } 0051 0052 #endif // KDEVPLATFORM_PLUGIN_PROJECTFILTERPROVIDER_H