From e0e5621b807d987a329a9f5058f660eca5c9be6b Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 2 Sep 2019 15:52:01 +0200 Subject: 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 --- src/plugins/help/helpwidget.h | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'src/plugins/help/helpwidget.h') 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 -#include +#include #include +#include 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; -- cgit v1.2.1