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