File indexing completed on 2024-05-12 04:37:41
0001 /* 0002 SPDX-FileCopyrightText: 2009 David Nolden <david.nolden.kdevelop@art-master.de> 0003 SPDX-FileCopyrightText: 2014 Kevin Funk <kfunk@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only 0006 */ 0007 0008 #ifndef KDEVPLATFORM_STATICASSISTANTSMANAGER_H 0009 #define KDEVPLATFORM_STATICASSISTANTSMANAGER_H 0010 0011 #include <QObject> 0012 #include <QPointer> 0013 0014 #include "staticassistant.h" 0015 0016 #include <language/languageexport.h> 0017 #include <language/duchain/duchainpointer.h> 0018 #include <language/duchain/problem.h> 0019 #include <language/duchain/topducontext.h> 0020 #include <serialization/indexedstring.h> 0021 0022 using SafeDocumentPointer = QPointer<KTextEditor::Document>; 0023 0024 namespace KDevelop { 0025 class IDocument; 0026 class DUContext; 0027 class TopDUContext; 0028 class StaticAssistantsManagerPrivate; 0029 0030 /** 0031 * @brief Class managing instances of StaticAssistant 0032 * 0033 * Invokes the appropriate methods on registered StaticAssistant instances, such as StaticAssistant::textChanged 0034 * 0035 * @sa StaticAssistant::textChanged 0036 */ 0037 class KDEVPLATFORMLANGUAGE_EXPORT StaticAssistantsManager 0038 : public QObject 0039 { 0040 Q_OBJECT 0041 0042 public: 0043 explicit StaticAssistantsManager(QObject* parent = nullptr); 0044 ~StaticAssistantsManager() override; 0045 0046 void registerAssistant(const StaticAssistant::Ptr& assistant); 0047 void unregisterAssistant(const StaticAssistant::Ptr& assistant); 0048 QVector<StaticAssistant::Ptr> registeredAssistants() const; 0049 void notifyAssistants(const IndexedString& url, const KDevelop::ReferencedTopDUContext& context); 0050 0051 QVector<KDevelop::Problem::Ptr> problemsForContext(const ReferencedTopDUContext& top) const; 0052 0053 Q_SIGNALS: 0054 void problemsChanged(const IndexedString& url); 0055 0056 private: 0057 const QScopedPointer<class StaticAssistantsManagerPrivate> d_ptr; 0058 Q_DECLARE_PRIVATE(StaticAssistantsManager) 0059 }; 0060 } 0061 0062 #endif // KDEVPLATFORM_STATICASSISTANTSMANAGER_H