annotate demos/browser/browsermainwindow.d @ 74:37caa90ce503

more porting
author mandel
date Fri, 22 May 2009 23:43:58 +0000
parents 7bfd46c330dc
children 0654fc9bac95
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1 /****************************************************************************
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
2 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
5 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
6 ** This file is part of the demonstration applications of the Qt Toolkit.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
7 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
8 ** $QT_BEGIN_LICENSE:LGPL$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
9 ** Commercial Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
10 ** Licensees holding valid Qt Commercial licenses may use this file in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
11 ** accordance with the Qt Commercial License Agreement provided with the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
12 ** Software or, alternatively, in accordance with the terms contained in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
13 ** a written agreement between you and Nokia.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
14 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
15 ** GNU Lesser General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
17 ** General Public License version 2.1 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
19 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
22 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
23 ** In addition, as a special exception, Nokia gives you certain
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
24 ** additional rights. These rights are described in the Nokia Qt LGPL
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
26 ** package.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
27 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
28 ** GNU General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
29 ** Alternatively, this file may be used under the terms of the GNU
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
30 ** General Public License version 3.0 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
31 ** Foundation and appearing in the file LICENSE.GPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
32 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
33 ** ensure the GNU General Public License version 3.0 requirements will be
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
34 ** met: http://www.gnu.org/copyleft/gpl.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
35 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
36 ** If you are unsure which license is appropriate for your use, please
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
37 ** contact the sales department at qt-sales@nokia.com.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
38 ** $QT_END_LICENSE$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
39 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
40 ****************************************************************************/
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
41 module browsermainwindow;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
42
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
43
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
44 import qt.core.QUrl;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
45 import qt.core.QSettings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
46 import qt.gui.QMainWindow;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
47 import qt.gui.QIcon;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
48 import qt.gui.QDesktopWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
49 import qt.gui.QFileDialog;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
50 import qt.gui.QPlainTextEdit;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
51 import qt.gui.QPrintDialog;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
52 import qt.gui.QPrintPreviewDialog;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
53 import qt.gui.QPrinter;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
54 import qt.gui.QMenuBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
55 import qt.gui.QMessageBox;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
56 import qt.gui.QStatusBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
57 import qt.gui.QToolBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
58 import qt.gui.QInputDialog;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
59
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
60 import qt.core.QDebug;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
61
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
62 import qt.webkit.QWebFrame;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
63 import qt.webkit.QWebHistory;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
64
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
65 import autosaver;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
66 import bookmarks;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
67 import browserapplication;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
68 import chasewidget;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
69 import downloadmanager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
70 import history;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
71 import settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
72 import tabwidget;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
73 import toolbarsearch;
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
74 import webview;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
75 import ui_passworddialog;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
76
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
77
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
78 /*!
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
79 The MainWindow of the Browser Application.
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
80
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
81 Handles the tab widget and all the actions
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
82 */
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
83 class BrowserMainWindow : public QMainWindow
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
84 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
85
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
86 static const qint32 BrowserMainWindowMagic = 0xba;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
87
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
88 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
89
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
90 this(QWidget parent = null, Qt.WindowFlags flags = 0)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
91 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
92 super(parent, flags);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
93 m_tabWidget = new TabWidget(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
94 m_autoSaver = new AutoSaver(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
95 m_historyBack = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
96 m_historyForward = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
97 m_stop = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
98 m_reload = 0;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
99
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
100 setAttribute(Qt.WA_DeleteOnClose, true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
101 statusBar().setSizeGripEnabled(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
102 setupMenu();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
103 setupToolBar();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
104
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
105 QWidget centralWidget = new QWidget(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
106 BookmarksModel boomarksModel = BrowserApplication.bookmarksManager().bookmarksModel();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
107 m_bookmarksToolbar = new BookmarksToolBar(boomarksModel, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
108 m_bookmarksToolba.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
109 m_bookmarksToolbar.toggleViewAction.toggled.connect(&thisupdateBookmarksToolbarActionText);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
110
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
111 QVBoxLayout layout = new QVBoxLayout;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
112 layout.setSpacing(0);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
113 layout.setMargin(0);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
114 version(Q_WS_MAC)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
115 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
116 layout.addWidget(m_bookmarksToolbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
117 layout.addWidget(new QWidget); // <- OS X tab widget style bug
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
118 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
119 addToolBarBreak();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
120 addToolBar(m_bookmarksToolbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
121 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
122 layout.addWidget(m_tabWidget);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
123 centralWidget.setLayout(layout);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
124 setCentralWidget(centralWidget);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
125
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
126 m_tabWidget.loadPage.connect(&thisloadPage);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
127 m_tabWidget.setCurrentTitle.connect(&this.slotUpdateWindowTitle);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
128 m_tabWidget.showStatusBarMessage.connect(&statusBar().showMessage);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
129 m_tabWidget.linkHovered.connect(&statusBar().showMessage);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
130 m_tabWidget.loadProgress.connect(&this.slotLoadProgress);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
131 m_tabWidget.tabsChanged.connect(&m_autoSaver.changeOccurred);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
132 m_tabWidget.geometryChangeRequested.connect(&this.geometryChangeRequested);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
133 m_tabWidget.printRequested.connect(&this.printRequested);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
134 m_tabWidget.menuBarVisibilityChangeRequested.connect(&menuBar().setVisible);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
135 m_tabWidget.statusBarVisibilityChangeRequested.connect(&statusBar().setVisible);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
136 m_tabWidget.toolBarVisibilityChangeRequested.connect(&m_navigationBar.setVisible);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
137 m_tabWidget.toolBarVisibilityChangeRequested.connect(&m_bookmarksToolbar.setVisible);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
138 version(Q_WS_MAC) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
139 m_tabWidget.lastTabClosed().connect(&thisclose);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
140 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
141 m_tabWidget.lastTabClosed().connect(&m_tabWidget.newTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
142 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
143
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
144 slotUpdateWindowTitle();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
145 loadDefaultState();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
146 m_tabWidget.newTab();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
147
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
148 int size = m_tabWidget.lineEditStack().sizeHint().height();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
149 m_navigationBar.setIconSize(QSize(size, size));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
150 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
151
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
152 ~this()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
153 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
154 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
155 m_autoSaver.saveIfNeccessary();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
156 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
157
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
158
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
159 QSize sizeHint()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
160 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
161 QRect desktopRect = QApplication.desktop().screenGeometry();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
162 QSize size = desktopRect.size() * qreal(0.9);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
163 return size;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
164 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
165
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
166 public:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
167
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
168 static QUrl guessUrlFromString(QString string)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
169 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
170 QString urlStr = string.trimmed();
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
171 auto test = new QRegExp(QLatin1String("^[a-zA-Z]+\\:.*"));
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
172
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
173 // Check if it looks like a qualified URL. Try parsing it and see.
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
174 bool hasSchema = test.exactMatch(urlStr);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
175 if (hasSchema) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
176 QUrl url = QUrl.fromEncoded(urlStr.toUtf8(), QUrl.TolerantMode);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
177 if (url.isValid())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
178 return url;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
179 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
180
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
181 // Might be a file.
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
182 if (QFile.exists(urlStr)) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
183 QFileInfo info(urlStr);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
184 return QUrl.fromLocalFile(info.absoluteFilePath());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
185 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
186
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
187 // Might be a shorturl - try to detect the schema.
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
188 if (!hasSchema) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
189 int dotIndex = urlStr.indexOf(QLatin1Char('.'));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
190 if (dotIndex != -1) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
191 QString prefix = urlStr.left(dotIndex).toLower();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
192 QByteArray schema = (prefix == QLatin1String("ftp")) ? prefix.toLatin1() : "http";
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
193 QUrl url =
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
194 QUrl.fromEncoded(schema + "://" + urlStr.toUtf8(), QUrl.TolerantMode);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
195 if (url.isValid())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
196 return url;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
197 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
198 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
199
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
200 // Fall back to QUrl's own tolerant parser.
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
201 QUrl url = QUrl.fromEncoded(string.toUtf8(), QUrl.TolerantMode);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
202
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
203 // finally for cases where the user just types in a hostname add http
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
204 if (url.scheme().isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
205 url = QUrl.fromEncoded("http://" + string.toUtf8(), QUrl.TolerantMode);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
206 return url;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
207 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
208
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
209 TabWidget tabWidget()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
210 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
211 return m_tabWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
212 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
213
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
214 WebView currentTab()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
215 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
216 return m_tabWidget.currentWebView();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
217 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
218
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
219 QByteArray saveState(bool withTabs)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
220 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
221 int version_ = 2;
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
222 QByteArray data;
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
223 auto stream = new QDataStream(&data, QIODevice.WriteOnly);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
224
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
225 stream << qint32(BrowserMainWindowMagic);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
226 stream << qint32(version_);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
227
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
228 stream << size();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
229 stream << !m_navigationBar.isHidden();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
230 stream << !m_bookmarksToolbar.isHidden();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
231 stream << !statusBar().isHidden();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
232 if (withTabs)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
233 stream << tabWidget().saveState();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
234 else
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
235 stream << QByteArray();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
236 return data;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
237 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
238
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
239
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
240 bool restoreState(QByteArray state)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
241 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
242 int version_ = 2;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
243 QByteArray sd = state;
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
244 auto stream = new QDataStream(&sd, QIODevice.ReadOnly);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
245 if (stream.atEnd())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
246 return false;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
247
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
248 qint32 marker;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
249 qint32 v;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
250 stream >> marker;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
251 stream >> v;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
252 if (marker != BrowserMainWindowMagic || v != version_)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
253 return false;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
254
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
255 QSize size;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
256 bool showToolbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
257 bool showBookmarksBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
258 bool showStatusbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
259 QByteArray tabState;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
260
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
261 stream >> size;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
262 stream >> showToolbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
263 stream >> showBookmarksBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
264 stream >> showStatusbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
265 stream >> tabState;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
266
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
267 resize(size);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
268
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
269 m_navigationBar.setVisible(showToolbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
270 updateToolbarActionText(showToolbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
271
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
272 m_bookmarksToolbar.setVisible(showBookmarksBar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
273 updateBookmarksToolbarActionText(showBookmarksBar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
274
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
275 statusBar().setVisible(showStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
276 updateStatusbarActionText(showStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
277
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
278 if (!tabWidget().restoreState(tabState))
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
279 return false;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
280
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
281 return true;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
282 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
283
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
284 public:
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
285
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
286 void loadPage(QString page)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
287 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
288 QUrl url = guessUrlFromString(page);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
289 loadUrl(url);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
290 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
291
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
292 void slotHome()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
293 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
294 QSettings settings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
295 settings.beginGroup(QLatin1String("MainWindow"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
296 QString home = settings.value(QLatin1String("home"), QLatin1String("http://qtsoftware.com/")).toString();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
297 loadPage(home);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
298 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
299
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
300 protected:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
301
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
302 void closeEvent(QCloseEvent event)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
303 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
304 if (m_tabWidget.count() > 1) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
305 int ret = QMessageBox.warning(this, QString(),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
306 tr("Are you sure you want to close the window?"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
307 " There are %1 tab open").arg(m_tabWidget.count()),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
308 QMessageBox.Yes | QMessageBox.No,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
309 QMessageBox.No);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
310 if (ret == QMessageBox.No) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
311 event.ignore();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
312 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
313 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
314 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
315 event.accept();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
316 deleteLater();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
317 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
318
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
319 private:
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
320
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
321 void save()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
322 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
323 BrowserApplication.instance().saveSession();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
324
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
325 QSettings settings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
326 settings.beginGroup(QLatin1String("BrowserMainWindow"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
327 QByteArray data = saveState(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
328 settings.setValue(QLatin1String("defaultState"), data);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
329 settings.endGroup();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
330 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
331
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
332 void slotLoadProgress(int progress)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
333 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
334 if (progress < 100 && progress > 0) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
335 m_chaseWidget.setAnimated(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
336 m_stopReload.triggered.disconnect(&m_reload.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
337 if (m_stopIcon.isNull())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
338 m_stopIcon = style().standardIcon(QStyle.SP_BrowserStop);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
339 m_stopReload.setIcon(m_stopIcon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
340 m_stopReload.triggered.connect(&m_stop.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
341 m_stopReload.setToolTip(tr("Stop loading the current page"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
342 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
343 m_chaseWidget.setAnimated(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
344 m_stopReload.triggered.disconnect(m_stop.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
345 m_stopReload.setIcon(m_reloadIcon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
346 m_stopReload.triggered.connect(&m_reload.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
347 m_stopReload.setToolTip(tr("Reload the current page"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
348 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
349 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
350
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
351 void slotUpdateStatusbar(QString string)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
352 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
353 statusBar().showMessage(string, 2000);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
354 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
355
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
356 void slotUpdateWindowTitle(QString title = QString())
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
357 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
358 if (title.isEmpty()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
359 setWindowTitle(tr("Qt Demo Browser"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
360 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
361 version(Q_WS_MAC)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
362 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
363 setWindowTitle(title);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
364 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
365 setWindowTitle(tr("%1 - Qt Demo Browser", "Page title and Browser name").arg(title));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
366 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
367 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
368 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
369
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
370 void loadUrl(QUrl url)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
371 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
372 if (!currentTab() || !url.isValid())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
373 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
374
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
375 m_tabWidget.currentLineEdit().setText(QString.fromUtf8(url.toEncoded()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
376 m_tabWidget.loadUrlInCurrentTab(url);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
377 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
378
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
379 void slotPreferences()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
380 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
381 SettingsDialog s = new SettingsDialog(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
382 s.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
383 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
384
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
385 void slotFileNew()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
386 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
387 BrowserApplication.instance().newMainWindow();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
388 BrowserMainWindow mw = BrowserApplication.instance().mainWindow();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
389 mw.slotHome();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
390 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
391
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
392 void slotFileOpen()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
393 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
394 QString file = QFileDialog.getOpenFileName(this, tr("Open Web Resource"), QString(),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
395 tr("Web Resources (*.html *.htm *.svg *.png *.gif *.svgz);;All files (*.*)"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
396
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
397 if (file.isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
398 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
399
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
400 loadPage(file);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
401 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
402
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
403 void slotFilePrintPreview()
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
404 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
405 version(QT_NO_PRINTER)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
406 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
407 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
408 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
409 QPrintPreviewDialog dialog = new QPrintPreviewDialog(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
410 dialog.paintRequested.connect(&currentTab.print);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
411 dialog.exec();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
412 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
413 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
414
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
415 void slotFilePrint()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
416 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
417 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
418 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
419 printRequested(currentTab().page().mainFrame());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
420 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
421
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
422 void slotPrivateBrowsing()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
423 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
424 QWebSettings settings = QWebSettings.globalSettings();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
425 bool pb = settings.testAttribute(QWebSettings.PrivateBrowsingEnabled);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
426 if (!pb) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
427 QString title = tr("Are you sure you want to turn on private browsing?");
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
428 QString text = tr("<b>%1</b><br><br>When private browsing in turned on,"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
429 " webpages are not added to the history,"
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
430 " items are automatically removed from the Downloads window,"
37caa90ce503 more porting
mandel
parents: 73
diff changeset
431 " new cookies are not stored, current cookies can't be accessed,"
37caa90ce503 more porting
mandel
parents: 73
diff changeset
432 " site icons wont be stored, session wont be saved, "
37caa90ce503 more porting
mandel
parents: 73
diff changeset
433 " and searches are not addded to the pop-up menu in the Google search box."
37caa90ce503 more porting
mandel
parents: 73
diff changeset
434 " Until you close the window, you can still click the Back and Forward buttons"
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
435 " to return to the webpages you have opened.").arg(title);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
436
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
437 QMessageBox.StandardButton button = QMessageBox.question(this, QString(), text,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
438 QMessageBox.Ok | QMessageBox.Cancel,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
439 QMessageBox.Ok);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
440 if (button == QMessageBox.Ok) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
441 settings.setAttribute(QWebSettings.PrivateBrowsingEnabled, true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
442 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
443 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
444 settings.setAttribute(QWebSettings.PrivateBrowsingEnabled, false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
445
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
446 BrowserMainWindow[] windows = BrowserApplication.instance().mainWindows();
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
447 for (int i = 0; i < windows.count(); ++i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
448 BrowserMainWindow window = windows.at(i);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
449 window.m_lastSearch = null; //QString::null
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
450 window.tabWidget().clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
451 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
452 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
453 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
454
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
455 void slotFileSaveAs()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
456 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
457 BrowserApplication.downloadManager().download(currentTab().url(), true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
458 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
459
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
460 void slotEditFind()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
461 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
462 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
463 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
464 bool ok;
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
465 QString search = QInputDialog.getText(this, tr("Find"), tr("Text:"), QLineEdit.Normal, m_lastSearch, &ok);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
466 if (ok && !search.isEmpty()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
467 m_lastSearch = search;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
468 if (!currentTab().findText(m_lastSearch))
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
469 slotUpdateStatusbar(tr("\"%1\" not found.").arg(m_lastSearch));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
470 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
471 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
472
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
473 void slotEditFindNext()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
474 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
475 if (!currentTab() && !m_lastSearch.isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
476 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
477 currentTab().findText(m_lastSearch);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
478 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
479
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
480 void slotEditFindPrevious()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
481 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
482 if (!currentTab() && !m_lastSearch.isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
483 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
484 currentTab().findText(m_lastSearch, QWebPage.FindBackward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
485 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
486
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
487 void slotShowBookmarksDialog()
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
488 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
489 BookmarksDialog dialog = new BookmarksDialog(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
490 dialog.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
491 dialog.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
492 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
493
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
494 void slotAddBookmark()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
495 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
496 WebView webView = currentTab();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
497 QString url = webView.url().toString();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
498 QString title = webView.title();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
499 AddBookmarkDialog dialog(url, title);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
500 dialog.exec();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
501 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
502
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
503 void slotViewZoomIn()
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
504 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
505 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
506 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
507 currentTab().setZoomFactor(currentTab().zoomFactor() + 0.1);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
508 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
509
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
510 void BslotViewZoomOut()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
511 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
512 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
513 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
514 currentTab().setZoomFactor(currentTab().zoomFactor() - 0.1);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
515 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
516
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
517 void slotViewResetZoom()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
518 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
519 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
520 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
521 currentTab().setZoomFactor(1.0);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
522 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
523
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
524 void slotViewZoomTextOnly(bool enable)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
525 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
526 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
527 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
528 currentTab().page().settings().setAttribute(QWebSettings.ZoomTextOnly, enable);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
529 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
530
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
531 void slotViewToolbar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
532 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
533 if (m_navigationBar.isVisible()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
534 updateToolbarActionText(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
535 m_navigationBar.close();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
536 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
537 updateToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
538 m_navigationBar.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
539 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
540 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
541 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
542
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
543
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
544 void slotViewBookmarksBar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
545 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
546 if (m_bookmarksToolbar.isVisible()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
547 updateBookmarksToolbarActionText(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
548 m_bookmarksToolbar.close();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
549 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
550 updateBookmarksToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
551 m_bookmarksToolbar.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
552 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
553 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
554 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
555
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
556 void slotViewStatusbar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
557 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
558 if (statusBar().isVisible()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
559 updateStatusbarActionText(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
560 statusBar().close();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
561 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
562 updateStatusbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
563 statusBar().show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
564 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
565 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
566 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
567
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
568 void slotViewPageSource()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
569 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
570 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
571 return;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
572
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
573 QString markup = currentTab().page().mainFrame().toHtml();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
574 QPlainTextEdit view = new QPlainTextEdit(markup);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
575 view.setWindowTitle(tr("Page Source of %1").arg(currentTab().title()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
576 view.setMinimumWidth(640);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
577 view.setAttribute(Qt.WA_DeleteOnClose);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
578 view.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
579 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
580
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
581
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
582 void slotViewFullScreen(bool makeFullScreen)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
583 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
584 if (makeFullScreen) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
585 showFullScreen();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
586 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
587 if (isMinimized())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
588 showMinimized();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
589 else if (isMaximized())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
590 showMaximized();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
591 else showNormal();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
592 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
593 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
594
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
595 void slotWebSearch()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
596 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
597 m_toolbarSearch.lineEdit().selectAll();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
598 m_toolbarSearch.lineEdit().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
599 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
600
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
601 void slotToggleInspector(bool enable)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
602 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
603 QWebSettings.globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, enable);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
604 if (enable) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
605 int result = QMessageBox.question(this, tr("Web Inspector"),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
606 tr("The web inspector will only work correctly for pages that were loaded after enabling.\n"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
607 "Do you want to reload all pages?"),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
608 QMessageBox.Yes | QMessageBox.No);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
609 if (result == QMessageBox.Yes) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
610 m_tabWidget.reloadAllTabs();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
611 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
612 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
613 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
614
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
615 void slotAboutApplication()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
616 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
617 QMessageBox.about(this, tr("About"), tr(
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
618 "Version %1"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
619 "<p>This demo demonstrates Qt's "
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
620 "webkit facilities in action, providing an example "
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
621 "browser for you to experiment with.<p>"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
622 "<p>QtWebKit is based on the Open Source WebKit Project developed at <a href=\"http://webkit.org/\">http://webkit.org/</a>."
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
623 ).arg(QCoreApplication.applicationVersion()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
624 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
625
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
626 void slotDownloadManager()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
627 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
628 BrowserApplication.downloadManager().show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
629 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
630
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
631 void slotSelectLineEdit()
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
632 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
633 m_tabWidget.currentLineEdit().selectAll();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
634 m_tabWidget.currentLineEdit().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
635 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
636
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
637 void slotAboutToShowBackMenu()
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
638 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
639 m_historyBackMenu.clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
640 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
641 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
642 QWebHistory history = currentTab().history();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
643 int historyCount = history.count();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
644 for (int i = history.backItems(historyCount).count() - 1; i >= 0; --i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
645 QWebHistoryItem item = history.backItems(history.count()).at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
646 QAction action = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
647 action.setData(-1*(historyCount-i-1));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
648 QIcon icon = BrowserApplication.instance().icon(item.url());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
649 action.setIcon(icon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
650 action.setText(item.title());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
651 m_historyBackMenu.addAction(action);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
652 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
653 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
654
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
655 void slotAboutToShowForwardMenu()
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
656 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
657 m_historyForwardMenu.clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
658 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
659 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
660 QWebHistory history = currentTab().history();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
661 int historyCount = history.count();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
662 for (int i = 0; i < history.forwardItems(history.count()).count(); ++i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
663 QWebHistoryItem item = history.forwardItems(historyCount).at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
664 QAction action = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
665 action.setData(historyCount-i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
666 QIcon icon = BrowserApplication.instance().icon(item.url());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
667 action.setIcon(icon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
668 action.setText(item.title());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
669 m_historyForwardMenu.addAction(action);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
670 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
671 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
672
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
673 void slotAboutToShowWindowMenu()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
674 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
675 m_windowMenu.clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
676 m_windowMenu.addAction(m_tabWidget.nextTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
677 m_windowMenu.addAction(m_tabWidget.previousTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
678 m_windowMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
679 m_windowMenu.addAction(tr("Downloads"), this, SLOT(slotDownloadManager()), QKeySequence(tr("Alt+Ctrl+L", "Download Manager")));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
680
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
681 m_windowMenu.addSeparator();
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
682 BrowserMainWindow[] windows = BrowserApplication.instance().mainWindows();
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
683 for (int i = 0; i < windows.count(); ++i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
684 BrowserMainWindow window = windows.at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
685 QAction action = m_windowMenu.addAction(window.windowTitle(), this, SLOT(slotShowWindow()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
686 action.setData(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
687 action.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
688 if (window == this)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
689 action.setChecked(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
690 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
691 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
692
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
693 void slotOpenActionUrl(QAction action)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
694 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
695 int offset = action.data().toInt();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
696 QWebHistory history = currentTab().history();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
697 if (offset < 0)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
698 history.goToItem(history.backItems(-1*offset).first()); // back
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
699 else if (offset > 0)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
700 history.goToItem(history.forwardItems(history.count() - offset + 1).back()); // forward
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
701 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
702
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
703 void slotShowWindow()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
704 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
705 if (QAction action = cast(QAction) sender()) {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
706 QVariant v = action.data();
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
707 if (v.canConvert!(int)()) {
37caa90ce503 more porting
mandel
parents: 73
diff changeset
708 int offset = cast(int) v;
37caa90ce503 more porting
mandel
parents: 73
diff changeset
709 BrowserMainWindow[] windows = BrowserApplication.instance().mainWindows();
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
710 windows.at(offset).activateWindow();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
711 windows.at(offset).currentTab().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
712 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
713 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
714 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
715
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
716 void slotSwapFocus()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
717 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
718 if (currentTab().hasFocus())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
719 m_tabWidget.currentLineEdit().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
720 else
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
721 currentTab().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
722 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
723
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
724 void printRequested(QWebFrame frame)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
725 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
726 version(QT_NO_PRINTER)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
727 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
728 QPrinter printer;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
729 QPrintDialog dialog = new QPrintDialog(&printer, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
730 dialog.setWindowTitle(tr("Print Document"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
731 if (dialog.exec() != QDialog.Accepted)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
732 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
733 frame.print(&printer);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
734 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
735 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
736
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
737 void geometryChangeRequested(QRect geometry)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
738 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
739 setGeometry(geometry);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
740 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
741
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
742 void updateToolbarActionText(bool visible)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
743 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
744 m_viewToolbar.setText(!visible ? tr("Show Toolbar") : tr("Hide Toolbar"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
745 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
746
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
747 void updateBookmarksToolbarActionText(bool visible)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
748 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
749 m_viewBookmarkBar.setText(!visible ? tr("Show Bookmarks bar") : tr("Hide Bookmarks bar"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
750 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
751
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
752 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
753
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
754 void loadDefaultState()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
755 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
756 QSettings settings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
757 settings.beginGroup(QLatin1String("BrowserMainWindow"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
758 QByteArray data = settings.value(QLatin1String("defaultState")).toByteArray();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
759 restoreState(data);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
760 settings.endGroup();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
761 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
762
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
763 void setupMenu()
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
764 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
765 new QShortcut(QKeySequence(Qt.Key_F6), this, SLOT(slotSwapFocus()));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
766
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
767 // File
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
768 QMenu fileMenu = menuBar().addMenu(tr("&File"));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
769
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
770 fileMenu.addAction(tr("&New Window"), this, SLOT(slotFileNew()), QKeySequence.New);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
771 fileMenu.addAction(m_tabWidget.newTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
772 fileMenu.addAction(tr("&Open File..."), this, SLOT(slotFileOpen()), QKeySequence.Open);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
773 fileMenu.addAction(tr("Open &Location..."), this, SLOT(slotSelectLineEdit()), QKeySequence(Qt.ControlModifier + Qt.Key_L));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
774 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
775 fileMenu.addAction(m_tabWidget.closeTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
776 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
777 fileMenu.addAction(tr("&Save As..."), this, SLOT(slotFileSaveAs()), QKeySequence(QKeySequence.Save));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
778 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
779 BookmarksManager bookmarksManager = BrowserApplication.bookmarksManager();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
780 fileMenu.addAction(tr("&Import Bookmarks..."), bookmarksManager, SLOT(importBookmarks()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
781 fileMenu.addAction(tr("&Export Bookmarks..."), bookmarksManager, SLOT(exportBookmarks()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
782 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
783 fileMenu.addAction(tr("P&rint Preview..."), this, SLOT(slotFilePrintPreview()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
784 fileMenu.addAction(tr("&Print..."), this, SLOT(slotFilePrint()), QKeySequence.Print);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
785 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
786 QAction action = fileMenu.addAction(tr("Private &Browsing..."), this, SLOT(slotPrivateBrowsing()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
787 action.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
788 fileMenu.addSeparator();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
789
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
790 version(Q_WS_MAC) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
791 fileMenu.addAction(tr("&Quit"), BrowserApplication.instance(), SLOT(quitBrowser()), QKeySequence(Qt.CTRL | Qt.Key_Q));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
792 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
793 fileMenu.addAction(tr("&Quit"), this, SLOT(close()), QKeySequence(Qt.CTRL | Qt.Key_Q));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
794 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
795
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
796 // Edit
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
797 QMenu editMenu = menuBar().addMenu(tr("&Edit"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
798 QAction m_undo = editMenu.addAction(tr("&Undo"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
799 m_undo.setShortcuts(QKeySequence.Undo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
800 m_tabWidget.addWebAction(m_undo, QWebPage.Undo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
801 QAction m_redo = editMenu.addAction(tr("&Redo"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
802 m_redo.setShortcuts(QKeySequence.Redo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
803 m_tabWidget.addWebAction(m_redo, QWebPage.Redo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
804 editMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
805 QAction m_cut = editMenu.addAction(tr("Cu&t"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
806 m_cut.setShortcuts(QKeySequence.Cut);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
807 m_tabWidget.addWebAction(m_cut, QWebPage.Cut);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
808 QAction m_copy = editMenu.addAction(tr("&Copy"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
809 m_copy.setShortcuts(QKeySequence.Copy);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
810 m_tabWidget.addWebAction(m_copy, QWebPage.Copy);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
811 QAction m_paste = editMenu.addAction(tr("&Paste"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
812 m_paste.setShortcuts(QKeySequence.Paste);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
813 m_tabWidget.addWebAction(m_paste, QWebPage.Paste);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
814 editMenu.addSeparator();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
815
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
816 QAction m_find = editMenu.addAction(tr("&Find"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
817 m_find.setShortcuts(QKeySequence.Find);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
818 m_find.triggered().connect(&this.slotEditFind);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
819 new QShortcut(QKeySequence(Qt.Key_Slash), this, SLOT(slotEditFind()));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
820
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
821 QAction m_findNext = editMenu.addAction(tr("&Find Next"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
822 m_findNext.setShortcuts(QKeySequence.FindNext);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
823 m_findNext.triggered().connect(&this.slotEditFindNext);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
824
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
825 QAction m_findPrevious = editMenu.addAction(tr("&Find Previous"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
826 m_findPrevious.setShortcuts(QKeySequence.FindPrevious);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
827 m_findPrevious.triggered().connect(&this.slotEditFindPrevious);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
828
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
829 editMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
830 editMenu.addAction(tr("&Preferences"), this, SLOT(slotPreferences()), tr("Ctrl+,"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
831
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
832 // View
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
833 QMenu viewMenu = menuBar().addMenu(tr("&View"));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
834
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
835 m_viewBookmarkBar = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
836 updateBookmarksToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
837 m_viewBookmarkBar.setShortcut(tr("Shift+Ctrl+B"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
838 m_viewBookmarkBar.triggered().connect(&this.slotViewBookmarksBar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
839 viewMenu.addAction(m_viewBookmarkBar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
840
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
841 m_viewToolbar = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
842 updateToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
843 m_viewToolbar.setShortcut(tr("Ctrl+|"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
844 m_viewToolbar.triggered().connect(&this.slotViewToolbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
845 viewMenu.addAction(m_viewToolbar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
846
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
847 m_viewStatusbar = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
848 updateStatusbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
849 m_viewStatusbar.setShortcut(tr("Ctrl+/"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
850 m_viewStatusbar.triggered().connect(&this.slotViewStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
851 viewMenu.addAction(m_viewStatusbar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
852
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
853 viewMenu.addSeparator();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
854
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
855 m_stop = viewMenu.addAction(tr("&Stop"));
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
856 QKeySequence[] shortcuts;
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
857 shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Period));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
858 shortcuts.append(Qt.Key_Escape);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
859 m_stop.setShortcuts(shortcuts);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
860 m_tabWidget.addWebAction(m_stop, QWebPage.Stop);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
861
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
862 m_reload = viewMenu.addAction(tr("Reload Page"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
863 m_reload.setShortcuts(QKeySequence.Refresh);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
864 m_tabWidget.addWebAction(m_reload, QWebPage.Reload);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
865
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
866 viewMenu.addAction(tr("Zoom &In"), this, SLOT(slotViewZoomIn()), QKeySequence(Qt.CTRL | Qt.Key_Plus));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
867 viewMenu.addAction(tr("Zoom &Out"), this, SLOT(slotViewZoomOut()), QKeySequence(Qt.CTRL | Qt.Key_Minus));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
868 viewMenu.addAction(tr("Reset &Zoom"), this, SLOT(slotViewResetZoom()), QKeySequence(Qt.CTRL | Qt.Key_0));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
869 QAction zoomTextOnlyAction = viewMenu.addAction(tr("Zoom &Text Only"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
870 zoomTextOnlyAction.toggled().connect(&this.slotViewZoomTextOnly);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
871 zoomTextOnlyAction.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
872 zoomTextOnlyAction.setChecked(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
873
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
874 viewMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
875 viewMenu.addAction(tr("Page S&ource"), this, SLOT(slotViewPageSource()), tr("Ctrl+Alt+U"));
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
876 QAction a = viewMenu.addAction(tr("&Full Screen"), this, SLOT(slotViewFullScreen), Qt.Key_F11);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
877 a.setCheckable(true);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
878
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
879 // History
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
880 HistoryMenu historyMenu = new HistoryMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
881 historyMenu.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
882 historyMenu.hovered.connect(&this.slotUpdateStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
883 historyMenu.setTitle(tr("Hi&story"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
884 menuBar().addMenu(historyMenu);
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
885 QAction[] historyActions;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
886
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
887 m_historyBack = new QAction(tr("Back"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
888 m_tabWidget.addWebAction(m_historyBack, QWebPage.Back);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
889 m_historyBack.setShortcuts(QKeySequence.Back);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
890 m_historyBack.setIconVisibleInMenu(false);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
891
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
892 m_historyForward = new QAction(tr("Forward"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
893 m_tabWidget.addWebAction(m_historyForward, QWebPage.Forward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
894 m_historyForward.setShortcuts(QKeySequence.Forward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
895 m_historyForward.setIconVisibleInMenu(false);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
896
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
897 QAction m_historyHome = new QAction(tr("Home"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
898 m_historyHome.triggered().connect(&this.slotHome);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
899 m_historyHome.setShortcut(QKeySequence(Qt.CTRL | Qt.SHIFT | Qt.Key_H));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
900
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
901 m_restoreLastSession = new QAction(tr("Restore Last Session"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
902 m_restoreLastSession.triggered().connect(BrowserApplication.instance().restoreLastSession);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
903 m_restoreLastSession.setEnabled(BrowserApplication.instance().canRestoreSession());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
904
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
905 historyActions.append(m_historyBack);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
906 historyActions.append(m_historyForward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
907 historyActions.append(m_historyHome);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
908 historyActions.append(m_tabWidget.recentlyClosedTabsAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
909 historyActions.append(m_restoreLastSession);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
910 historyMenu.setInitialActions(historyActions);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
911
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
912 // Bookmarks
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
913 BookmarksMenu bookmarksMenu = new BookmarksMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
914 bookmarksMenu.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
915 bookmarksMenu.hovered.connect(&this.slotUpdateStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
916 bookmarksMenu.setTitle(tr("&Bookmarks"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
917 menuBar().addMenu(bookmarksMenu);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
918
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
919 QAction[] bookmarksActions;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
920
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
921 QAction showAllBookmarksAction = new QAction(tr("Show All Bookmarks"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
922 showAllBookmarksAction.triggered().connect(&this.slotShowBookmarksDialog);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
923 m_addBookmark = new QAction(QIcon(QLatin1String(":addbookmark.png")), tr("Add Bookmark..."), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
924 m_addBookmark.setIconVisibleInMenu(false);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
925
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
926 m_addBookmark.triggered().connect(&this.slotAddBookmark);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
927 m_addBookmark.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_D));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
928
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
929 bookmarksActions.append(showAllBookmarksAction);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
930 bookmarksActions.append(m_addBookmark);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
931 bookmarksMenu.setInitialActions(bookmarksActions);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
932
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
933 // Window
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
934 m_windowMenu = menuBar().addMenu(tr("&Window"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
935 m_windowMenu.aboutToShow().connect(&this.slotAboutToShowWindowMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
936 slotAboutToShowWindowMenu();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
937
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
938 QMenu toolsMenu = menuBar().addMenu(tr("&Tools"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
939 toolsMenu.addAction(tr("Web &Search"), this, SLOT(slotWebSearch()), QKeySequence(tr("Ctrl+K", "Web Search")));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
940 version(Q_CC_MINGW)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
941 {
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
942 a = toolsMenu.addAction(tr("Enable Web &Inspector"), this, SLOT(slotToggleInspector));
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
943 a.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
944 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
945
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
946 QMenu helpMenu = menuBar().addMenu(tr("&Help"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
947 helpMenu.addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
948 helpMenu.addAction(tr("About &Demo Browser"), this, SLOT(slotAboutApplication()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
949 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
950
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
951 void setupToolBar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
952 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
953 setUnifiedTitleAndToolBarOnMac(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
954 m_navigationBar = addToolBar(tr("Navigation"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
955 m_navigationBar.toggleViewAction().toggled.connect(&this.updateToolbarActionText);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
956
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
957 m_historyBack.setIcon(style().standardIcon(QStyle.SP_ArrowBack, 0, this));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
958 m_historyBackMenu = new QMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
959 m_historyBack.setMenu(m_historyBackMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
960 m_historyBackMenu.aboutToShow().connect(&this.slotAboutToShowBackMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
961 m_historyBackMenu.triggered.connect(&this.slotOpenActionUrl);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
962 m_navigationBar.addAction(m_historyBack);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
963
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
964 m_historyForward.setIcon(style().standardIcon(QStyle.SP_ArrowForward, 0, this));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
965 m_historyForwardMenu = new QMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
966 m_historyForwardMenu.aboutToShow.connect(&this.slotAboutToShowForwardMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
967 m_historyForwardMenu.triggered.connect(&this.slotOpenActionUrl);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
968 m_historyForward.setMenu(m_historyForwardMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
969 m_navigationBar.addAction(m_historyForward);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
970
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
971 m_stopReload = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
972 m_reloadIcon = style().standardIcon(QStyle.SP_BrowserReload);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
973 m_stopReload.setIcon(m_reloadIcon);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
974
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
975 m_navigationBar.addAction(m_stopReload);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
976
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
977 m_navigationBar.addWidget(m_tabWidget.lineEditStack());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
978
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
979 m_toolbarSearch = new ToolbarSearch(m_navigationBar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
980 m_navigationBar.addWidget(m_toolbarSearch);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
981 m_toolbarSearch.search.connect(&loadUrl);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
982
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
983 m_chaseWidget = new ChaseWidget(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
984 m_navigationBar.addWidget(m_chaseWidget);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
985 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
986
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
987 void updateStatusbarActionText(bool visible)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
988 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
989 m_viewStatusbar.setText(!visible ? tr("Show Status Bar") : tr("Hide Status Bar"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
990 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
991
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
992 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
993
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
994 QToolBar m_navigationBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
995 ToolbarSearch m_toolbarSearch;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
996 BookmarksToolBar m_bookmarksToolbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
997 ChaseWidget m_chaseWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
998 TabWidget m_tabWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
999 AutoSaver m_autoSaver;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1000
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1001 QAction m_historyBack;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1002 QMenu m_historyBackMenu;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1003 QAction m_historyForward;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1004 QMenu m_historyForwardMenu;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1005 QMenu m_windowMenu;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1006
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1007 QAction m_stop;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1008 QAction m_reload;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1009 QAction m_stopReload;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1010 QAction m_viewToolbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1011 QAction m_viewBookmarkBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1012 QAction m_viewStatusbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1013 QAction m_restoreLastSession;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1014 QAction m_addBookmark;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1015
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1016 QIcon m_reloadIcon;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1017 QIcon m_stopIcon;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1018
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1019 QString m_lastSearch;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1020 }