File indexing completed on 2024-05-26 04:41:09
0001 /* 0002 SPDX-FileCopyrightText: 2008 David Nolden <david.nolden.kdevelop@art-master.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "usesnavigationcontext.h" 0008 0009 #include "useswidget.h" 0010 #include <KLocalizedString> 0011 #include <language/duchain/declaration.h> 0012 #include <language/duchain/duchain.h> 0013 #include <language/duchain/duchainlock.h> 0014 0015 using namespace KDevelop; 0016 0017 UsesNavigationContext::UsesNavigationContext(IndexedDeclaration declaration, AbstractNavigationContext* previousContext) 0018 : AbstractNavigationContext(TopDUContextPointer(), previousContext) 0019 , m_declaration(declaration) 0020 { 0021 m_widget = new UsesWidget(m_declaration); 0022 } 0023 0024 UsesNavigationContext::~UsesNavigationContext() 0025 { 0026 delete m_widget; 0027 } 0028 0029 QString UsesNavigationContext::name() const 0030 { 0031 return QStringLiteral("Uses"); 0032 } 0033 0034 QString UsesNavigationContext::html(bool shorten) 0035 { 0036 Q_UNUSED(shorten); 0037 clear(); 0038 modifyHtml() += QStringLiteral("<html><body><p>"); 0039 0040 if (auto context = previousContext()) { 0041 modifyHtml() += navigationHighlight(i18n("Uses of ")); 0042 makeLink(context->name(), context->name(), NavigationAction(context)); 0043 } else { 0044 KDevelop::DUChainReadLocker lock(DUChain::lock()); 0045 if (Declaration* decl = m_declaration.data()) { 0046 makeLink(i18n("Uses of %1", decl->toString()), DeclarationPointer( 0047 decl), NavigationAction::NavigateDeclaration); 0048 } 0049 } 0050 0051 modifyHtml() += QStringLiteral("</p></body></html>"); 0052 0053 return currentHtml(); 0054 } 0055 0056 QWidget* UsesNavigationContext::widget() const 0057 { 0058 return m_widget; 0059 } 0060 0061 #include "moc_usesnavigationcontext.cpp"