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

0001 /*
0002     SPDX-FileCopyrightText: 2009 Aleix Pol <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "cmakenavigationwidget.h"
0008 #include <language/duchain/navigation/abstractnavigationcontext.h>
0009 #include <language/duchain/navigation/abstractdeclarationnavigationcontext.h>
0010 #include <interfaces/idocumentation.h>
0011 
0012 using namespace KDevelop;
0013 
0014 class CMakeNavigationContext: public AbstractNavigationContext
0015 {
0016         Q_OBJECT
0017     public:
0018         CMakeNavigationContext(const TopDUContextPointer& top, const QString& name, const QString& html)
0019             : AbstractNavigationContext(top, nullptr), mName(name), mDescription(html) {}
0020         QString name() const override { return mName; }
0021         QString html(bool shorten = false) override
0022         {
0023             Q_UNUSED(shorten);
0024             return mDescription;
0025         }
0026         
0027     private:
0028         QString mName;
0029         QString mDescription;
0030     
0031 };
0032 
0033 class CMakeDeclarationNavigationContext: public AbstractDeclarationNavigationContext
0034 {
0035         Q_OBJECT
0036     public:
0037         CMakeDeclarationNavigationContext(const DeclarationPointer& decl, const TopDUContextPointer& top)
0038             : AbstractDeclarationNavigationContext(decl, top) {}
0039 };
0040 
0041 CMakeNavigationWidget::CMakeNavigationWidget(const TopDUContextPointer& top, const IDocumentation::Ptr& doc)
0042 {
0043     setContext(NavigationContextPointer(new CMakeNavigationContext(top, doc->name(), doc->description())));
0044 }
0045 
0046 CMakeNavigationWidget::CMakeNavigationWidget(const KDevelop::DUChainPointer< KDevelop::TopDUContext >& top, KDevelop::Declaration* decl)
0047 {
0048     setContext(NavigationContextPointer(new CMakeDeclarationNavigationContext(DeclarationPointer(decl), top)));
0049 }
0050 
0051 #include "cmakenavigationwidget.moc"
0052 #include "moc_cmakenavigationwidget.cpp"