File indexing completed on 2024-05-05 04:40:50

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