File indexing completed on 2024-05-05 04:39:24

0001 /*
0002     SPDX-FileCopyrightText: 2009 Aleix Pol <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef CMAKEDOCUMENTATION_H
0008 #define CMAKEDOCUMENTATION_H
0009 
0010 #include <QString>
0011 #include <QMap>
0012 #include <QVariantList>
0013 #include <interfaces/iplugin.h>
0014 #include "icmakedocumentation.h"
0015 
0016 namespace KDevelop { class Declaration; }
0017 class CMakeManager;
0018 class QUrl;
0019 class CMakeCommandsContents;
0020 class KDescendantsProxyModel;
0021 
0022 class CMakeDocumentation : public KDevelop::IPlugin, public ICMakeDocumentation
0023 {
0024     Q_OBJECT
0025     Q_INTERFACES( ICMakeDocumentation )
0026     Q_INTERFACES( KDevelop::IDocumentationProvider )
0027     public:
0028         explicit CMakeDocumentation( QObject* parent = nullptr, const QVariantList& args = QVariantList() );
0029 
0030         KDevelop::IDocumentation::Ptr description(const QString& identifier, const QUrl &file) const override;
0031         KDevelop::IDocumentation::Ptr documentationForDeclaration(KDevelop::Declaration* declaration) const override;
0032         KDevelop::IDocumentation::Ptr documentation(const QUrl& url) const override;
0033         
0034         QVector<QString> names(Type t) const override;
0035         
0036         CMakeCommandsContents* model() const { return m_index; }
0037         QAbstractItemModel* indexModel() const override;
0038         KDevelop::IDocumentation::Ptr documentationForIndex(const QModelIndex& idx) const override;
0039         
0040         QIcon icon() const override;
0041         QString name() const override;
0042         KDevelop::IDocumentation::Ptr homePage() const override;
0043         
0044         QString descriptionForIdentifier(const QString& identifier, Type t) const;
0045     
0046     private:
0047         CMakeCommandsContents* m_index;
0048         KDescendantsProxyModel* m_flatIndex;
0049 };
0050 
0051 #endif // CMAKEDOCUMENTATION_H