File indexing completed on 2024-05-05 04:37:31
0001 /* 0002 SPDX-FileCopyrightText: 2009 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 SPDX-FileCopyrightText: 2010 Benjamin Port <port.benjamin@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only 0006 */ 0007 0008 #ifndef KDEVPLATFORM_DOCUMENTATIONVIEW_H 0009 #define KDEVPLATFORM_DOCUMENTATIONVIEW_H 0010 0011 #include <QWidget> 0012 #include <QAbstractListModel> 0013 #include <interfaces/idocumentation.h> 0014 #include "documentationexport.h" 0015 0016 namespace KDevelop { 0017 class IPlugin; 0018 class DocumentationFindWidget; 0019 } 0020 0021 class QModelIndex; 0022 class QLineEdit; 0023 class ProvidersModel; 0024 class QComboBox; 0025 0026 class KDEVPLATFORMDOCUMENTATION_EXPORT DocumentationView : public QWidget 0027 { 0028 Q_OBJECT 0029 public: 0030 DocumentationView(QWidget* parent, ProvidersModel* m); 0031 0032 public: 0033 QList<QAction*> contextMenuActions() const; 0034 0035 public Q_SLOTS: 0036 void initialize(); 0037 0038 void showDocumentation(const KDevelop::IDocumentation::Ptr& doc); 0039 void emptyHistory(); 0040 0041 void tryBrowseForward(); 0042 void tryBrowseBack(); 0043 void browseForward(); 0044 void browseBack(); 0045 void changedSelection(const QModelIndex& idx); 0046 void changedProvider(int); 0047 void showHome(); 0048 0049 private: 0050 void mousePressEvent(QMouseEvent* event) override; 0051 void setupActions(); 0052 void updateView(); 0053 void returnPressed(); 0054 0055 QAction* mForward; 0056 QAction* mBack; 0057 QAction* mHomeAction; 0058 QAction* mSeparatorBeforeFind; 0059 QAction* mFind; 0060 QLineEdit* mIdentifiers; 0061 QList< KDevelop::IDocumentation::Ptr > mHistory; 0062 QList< KDevelop::IDocumentation::Ptr >::iterator mCurrent; 0063 QComboBox* mProviders; 0064 ProvidersModel* mProvidersModel; 0065 KDevelop::DocumentationFindWidget* mFindDoc; 0066 }; 0067 0068 class KDEVPLATFORMDOCUMENTATION_EXPORT ProvidersModel : public QAbstractListModel 0069 { 0070 Q_OBJECT 0071 public: 0072 explicit ProvidersModel(QObject* parent = nullptr); 0073 0074 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; 0075 int rowCount(const QModelIndex& idx = QModelIndex()) const override; 0076 QList<KDevelop::IDocumentationProvider*> providers(); 0077 KDevelop::IDocumentationProvider* provider(int pos) const; 0078 int rowForProvider(KDevelop::IDocumentationProvider* provider); 0079 0080 public Q_SLOTS: 0081 void unloaded(KDevelop::IPlugin* p); 0082 void loaded(KDevelop::IPlugin* p); 0083 void reloadProviders(); 0084 0085 private: 0086 void addProvider(KDevelop::IDocumentationProvider* provider); 0087 void removeProvider(KDevelop::IDocumentationProvider* provider); 0088 0089 QList<KDevelop::IDocumentationProvider*> mProviders; 0090 Q_SIGNALS: 0091 void providersChanged(); 0092 }; 0093 0094 #endif // KDEVPLATFORM_DOCUMENTATIONVIEW_H