File indexing completed on 2024-05-19 12:25:02
0001 /* 0002 SPDX-FileCopyrightText: 2009 Aleix Pol <aleixpol@kde.org> 0003 SPDX-FileCopyrightText: 2009 David Nolden <david.nolden.kdevelop@art-master.de> 0004 SPDX-FileCopyrightText: 2010 Benjamin Port <port.benjamin@gmail.com> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #ifndef QTHELPDOCUMENTATION_H 0010 #define QTHELPDOCUMENTATION_H 0011 0012 #include <QList> 0013 #include <QMap> 0014 #include <QUrl> 0015 #include <QAction> 0016 #include <QHelpLink> 0017 0018 #include <interfaces/idocumentation.h> 0019 0020 namespace KDevelop { class StandardDocumentationView; } 0021 class QModelIndex; 0022 class QNetworkAccessManager; 0023 class QtHelpProviderAbstract; 0024 0025 class QtHelpDocumentation : public KDevelop::IDocumentation 0026 { 0027 Q_OBJECT 0028 public: 0029 QtHelpDocumentation(const QString& name, const QList<QHelpLink>& info); 0030 QtHelpDocumentation(const QString& name, const QList<QHelpLink>& info, const QString& key); 0031 0032 QString name() const override 0033 { 0034 return m_name; 0035 } 0036 0037 QString description() const override; 0038 0039 QWidget* documentationWidget(KDevelop::DocumentationFindWidget* findWidget, QWidget* parent) override; 0040 0041 KDevelop::IDocumentationProvider* provider() const override; 0042 0043 QList<QHelpLink> info() const 0044 { 0045 return m_info; 0046 } 0047 0048 static QtHelpProviderAbstract* s_provider; 0049 0050 public Q_SLOTS: 0051 void viewContextMenuRequested(const QPoint& pos); 0052 0053 private Q_SLOTS: 0054 void jumpedTo(const QUrl& newUrl); 0055 0056 private: 0057 const QUrl& currentUrl() const { return m_current->url; } 0058 const QString& currentTitle() const 0059 { 0060 return m_current->title; 0061 } 0062 0063 private: 0064 QtHelpProviderAbstract *m_provider; 0065 const QString m_name; 0066 const QList<QHelpLink> m_info; 0067 const QList<QHelpLink>::const_iterator m_current; 0068 0069 KDevelop::StandardDocumentationView* lastView; 0070 }; 0071 0072 class HomeDocumentation : public KDevelop::IDocumentation 0073 { 0074 Q_OBJECT 0075 public: 0076 HomeDocumentation(); 0077 QWidget* documentationWidget(KDevelop::DocumentationFindWidget* findWidget, QWidget* parent = nullptr) override; 0078 QString description() const override { return QString(); } 0079 QString name() const override; 0080 KDevelop::IDocumentationProvider* provider() const override; 0081 0082 public Q_SLOTS: 0083 void clicked(const QModelIndex& idx); 0084 private: 0085 QtHelpProviderAbstract *m_provider; 0086 bool eventFilter(QObject *obj, QEvent *event) override; 0087 }; 0088 0089 class QtHelpAlternativeLink : public QAction 0090 { 0091 Q_OBJECT 0092 public: 0093 QtHelpAlternativeLink(const QString& name, const QtHelpDocumentation* doc, QObject* parent); 0094 0095 public Q_SLOTS: 0096 void showUrl(); 0097 0098 private: 0099 const QtHelpDocumentation* mDoc; 0100 const QString mName; 0101 }; 0102 0103 #endif