1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Assistant of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 as published by the Free Software
20** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21** included in the packaging of this file. Please review the following
22** information to ensure the GNU General Public License requirements will
23** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24**
25** $QT_END_LICENSE$
26**
27****************************************************************************/
28
29#ifndef CENTRALWIDGET_H
30#define CENTRALWIDGET_H
31
32#include <QtCore/QUrl>
33
34#include <QtWidgets/QTabBar>
35#include <QtWidgets/QWidget>
36
37QT_BEGIN_NAMESPACE
38
39class FindWidget;
40class HelpViewer;
41class QStackedWidget;
42class QPrinter;
43
44class TabBar : public QTabBar
45{
46 Q_OBJECT
47 friend class CentralWidget;
48
49public:
50 ~TabBar();
51
52 int addNewTab(const QString &title);
53 void setCurrent(HelpViewer *viewer);
54 void removeTabAt(HelpViewer *viewer);
55
56public slots:
57 void titleChanged();
58
59signals:
60 void currentTabChanged(HelpViewer *viewer);
61 void addBookmark(const QString &title, const QString &url);
62
63private:
64 TabBar(QWidget *parent = nullptr);
65
66private slots:
67 void slotCurrentChanged(int index);
68 void slotTabCloseRequested(int index);
69 void slotCustomContextMenuRequested(const QPoint &pos);
70};
71
72class CentralWidget : public QWidget
73{
74 Q_OBJECT
75 friend class OpenPagesManager;
76
77public:
78 CentralWidget(QWidget *parent = nullptr);
79 ~CentralWidget() override;
80
81 static CentralWidget *instance();
82
83 QUrl currentSource() const;
84 QString currentTitle() const;
85
86 bool hasSelection() const;
87 bool isForwardAvailable() const;
88 bool isBackwardAvailable() const;
89
90 HelpViewer *viewerAt(int index) const;
91 HelpViewer *currentHelpViewer() const;
92 int currentIndex() const;
93
94 void connectTabBar();
95
96public slots:
97#if QT_CONFIG(clipboard)
98 void copy();
99#endif
100 void home();
101
102 void zoomIn();
103 void zoomOut();
104 void resetZoom();
105
106 void forward();
107 void nextPage();
108
109 void backward();
110 void previousPage();
111
112 void print();
113 void pageSetup();
114 void printPreview();
115
116 void setSource(const QUrl &url);
117 void setSourceFromSearch(const QUrl &url);
118
119 void findNext();
120 void findPrevious();
121 void find(const QString &text, bool forward, bool incremental);
122
123 void activateTab();
124 void showTextSearch();
125 void updateBrowserFont();
126 void updateUserInterface();
127
128signals:
129 void currentViewerChanged();
130#if QT_CONFIG(clipboard)
131 void copyAvailable(bool yes);
132#endif
133 void sourceChanged(const QUrl &url);
134 void highlighted(const QUrl &link);
135 void forwardAvailable(bool available);
136 void backwardAvailable(bool available);
137 void addBookmark(const QString &title, const QString &url);
138
139protected:
140 void keyPressEvent(QKeyEvent *) override;
141 void focusInEvent(QFocusEvent *event) override;
142
143private slots:
144 void highlightSearchTerms();
145 void printPreviewToPrinter(QPrinter *printer);
146 void handleSourceChanged(const QUrl &url);
147 void slotHighlighted(const QUrl& link);
148
149private:
150 void initPrinter();
151 void connectSignals(HelpViewer *page);
152 bool eventFilter(QObject *object, QEvent *e) override;
153
154 void removePage(int index);
155 void setCurrentPage(HelpViewer *page);
156 void addPage(HelpViewer *page, bool fromSearch = false);
157
158private:
159#ifndef QT_NO_PRINTER
160 QPrinter *m_printer;
161#endif
162 FindWidget *m_findWidget;
163 QStackedWidget *m_stackedWidget;
164 TabBar *m_tabBar;
165 QHash<QUrl, QUrl> m_resolvedLinks;
166};
167
168QT_END_NAMESPACE
169
170#endif // CENTRALWIDGET_H
171

source code of qttools/src/assistant/assistant/centralwidget.h