diff options
author | Eike Ziller <eike.ziller@qt.io> | 2019-09-02 15:52:01 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2019-09-09 11:32:24 +0000 |
commit | e0e5621b807d987a329a9f5058f660eca5c9be6b (patch) | |
tree | 27e1caee60c77a1b23e84a6ceb80d5739f886f8f /src/plugins/help/helpwidget.h | |
parent | 49942bc06a9976892b5a2f34a320e3c439ce0014 (diff) | |
download | qt-creator-e0e5621b807d987a329a9f5058f660eca5c9be6b.tar.gz |
Help: De-duplicate management of help viewer pages
For the help mode, the help viewer pages were managed both by the
OpenPagesModel and the HelpWidget, and needed manual keeping in sync.
Instead make the model just an aspect of the HelpWidget, manage
creation/deletion of pages via the HelpWidget, and use the model only
for the pure MVC API purposes.
Task-number: QTCREATORBUG-20558
Change-Id: Ib7d6f2561239b0d5f3328dfd30c84718f81af0a1
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/help/helpwidget.h')
-rw-r--r-- | src/plugins/help/helpwidget.h | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/plugins/help/helpwidget.h b/src/plugins/help/helpwidget.h index bc38dcaa07..74fdb0a8ab 100644 --- a/src/plugins/help/helpwidget.h +++ b/src/plugins/help/helpwidget.h @@ -27,8 +27,9 @@ #include <coreplugin/icontext.h> -#include <qglobal.h> +#include <QAbstractTableModel> #include <QWidget> +#include <qglobal.h> QT_BEGIN_NAMESPACE class QAction; @@ -47,6 +48,24 @@ namespace Help { namespace Internal { class HelpViewer; +class HelpWidget; +class OpenPagesManager; + +class OpenPagesModel : public QAbstractTableModel +{ +public: + OpenPagesModel(HelpWidget *parent); + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + int columnCount(const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + +private: + HelpWidget *m_parent; + + friend class HelpWidget; +}; class HelpWidget : public QWidget { @@ -61,13 +80,15 @@ public: HelpWidget(const Core::Context &context, WidgetStyle style, QWidget *parent = nullptr); ~HelpWidget() override; + QAbstractItemModel *model(); + HelpViewer *currentViewer() const; void setCurrentViewer(HelpViewer *viewer); int currentIndex() const; - void addViewer(HelpViewer *viewer); + void setCurrentIndex(int index); + HelpViewer *addViewer(const QUrl &url, qreal zoom = 0); void removeViewerAt(int index); - // so central widget can save the state int viewerCount() const; HelpViewer *viewerAt(int index) const; @@ -92,6 +113,8 @@ signals: void filterActivated(const QString &name); private: + int indexOf(HelpViewer *viewer) const; + void updateBackMenu(); void updateForwardMenu(); void updateWindowTitle(); @@ -111,6 +134,8 @@ private: void addSideBar(); QString sideBarSettingsKey() const; + OpenPagesModel m_model; + OpenPagesManager *m_openPagesManager = nullptr; Core::IContext *m_context = nullptr; WidgetStyle m_style; QAction *m_toggleSideBarAction = nullptr; |