annotate demos/browser/browsermainwindow.d @ 73:7bfd46c330dc

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents 71b382c10ef6
children 37caa90ce503
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 ****************************************************************************/
73
7bfd46c330dc more porting
mandel
parents: 45
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
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
90 this(QWidget parent = null, Qt.WindowFlags flags = 0);
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
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
168 static QUrl guessUrlFromString(QString &string)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
169 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
170 QString urlStr = string.trimmed();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
171 QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
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 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
221 int version = 2;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
222 QByteArray data;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
223 QDataStream stream(&data, QIODevice.WriteOnly);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
224
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
225 stream << qint32(BrowserMainWindowMagic);
7bfd46c330dc more porting
mandel
parents: 45
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;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
244 QDataStream stream(&sd, QIODevice.ReadOnly);
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
292
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
293 void slotHome()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
294 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
295 QSettings settings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
296 settings.beginGroup(QLatin1String("MainWindow"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
297 QString home = settings.value(QLatin1String("home"), QLatin1String("http://qtsoftware.com/")).toString();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
298 loadPage(home);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
299 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
300
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
301 protected:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
302
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
303 void closeEvent(QCloseEvent event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
304 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
305 if (m_tabWidget.count() > 1) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
306 int ret = QMessageBox.warning(this, QString(),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
307 tr("Are you sure you want to close the window?"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
308 " There are %1 tab open").arg(m_tabWidget.count()),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
309 QMessageBox.Yes | QMessageBox.No,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
310 QMessageBox.No);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
311 if (ret == QMessageBox.No) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
312 event.ignore();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
313 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
314 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
315 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
316 event.accept();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
317 deleteLater();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
318 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
319
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
320 private:
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
321
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
322 void save()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
323 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
324 BrowserApplication.instance().saveSession();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
325
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
326 QSettings settings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
327 settings.beginGroup(QLatin1String("BrowserMainWindow"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
328 QByteArray data = saveState(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
329 settings.setValue(QLatin1String("defaultState"), data);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
330 settings.endGroup();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
331 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
332
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
333 void slotLoadProgress(int progress)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
334 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
335 if (progress < 100 && progress > 0) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
336 m_chaseWidget.setAnimated(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
337 m_stopReload.triggered.disconnect(&m_reload.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
338 if (m_stopIcon.isNull())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
339 m_stopIcon = style().standardIcon(QStyle.SP_BrowserStop);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
340 m_stopReload.setIcon(m_stopIcon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
341 m_stopReload.triggered.connect(&m_stop.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
342 m_stopReload.setToolTip(tr("Stop loading the current page"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
343 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
344 m_chaseWidget.setAnimated(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
345 m_stopReload.triggered.disconnect(m_stop.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
346 m_stopReload.setIcon(m_reloadIcon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
347 m_stopReload.triggered.connect(&m_reload.trigger);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
348 m_stopReload.setToolTip(tr("Reload the current page"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
349 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
350 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
351
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
352 void slotUpdateStatusbar(QString &string);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
353 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
354 statusBar().showMessage(string, 2000);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
355 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
356
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
357 void slotUpdateWindowTitle(QString &title = QString())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
358 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
359 if (title.isEmpty()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
360 setWindowTitle(tr("Qt Demo Browser"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
361 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
362 version(Q_WS_MAC)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
363 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
364 setWindowTitle(title);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
365 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
366 setWindowTitle(tr("%1 - Qt Demo Browser", "Page title and Browser name").arg(title));
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 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
370
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
371 void loadUrl(QUrl &url);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
372 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
373 if (!currentTab() || !url.isValid())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
374 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
375
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
376 m_tabWidget.currentLineEdit().setText(QString.fromUtf8(url.toEncoded()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
377 m_tabWidget.loadUrlInCurrentTab(url);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
378 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
379
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
380 void slotPreferences()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
381 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
382 SettingsDialog s = new SettingsDialog(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
383 s.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
384 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
385
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
386 void slotFileNew()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
387 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
388 BrowserApplication.instance().newMainWindow();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
389 BrowserMainWindow mw = BrowserApplication.instance().mainWindow();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
390 mw.slotHome();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
391 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
392
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
393 void slotFileOpen()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
394 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
395 QString file = QFileDialog.getOpenFileName(this, tr("Open Web Resource"), QString(),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
396 tr("Web Resources (*.html *.htm *.svg *.png *.gif *.svgz);;All files (*.*)"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
397
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
398 if (file.isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
399 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
400
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
401 loadPage(file);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
402 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
403
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
404 void slotFilePrintPreview();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
405 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
406 version(QT_NO_PRINTER)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
407 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
408 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
409 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
410 QPrintPreviewDialog dialog = new QPrintPreviewDialog(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
411 dialog.paintRequested.connect(&currentTab.print);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
412 dialog.exec();
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
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
416 void slotFilePrint()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
417 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
418 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
419 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
420 printRequested(currentTab().page().mainFrame());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
421 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
422
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
423 void slotPrivateBrowsing()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
424 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
425 QWebSettings settings = QWebSettings.globalSettings();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
426 bool pb = settings.testAttribute(QWebSettings.PrivateBrowsingEnabled);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
427 if (!pb) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
428 QString title = tr("Are you sure you want to turn on private browsing?");
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
429 QString text = tr("<b>%1</b><br><br>When private browsing in turned on,"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
430 " webpages are not added to the history,"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
431 " items are automatically removed from the Downloads window," \
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
432 " new cookies are not stored, current cookies can't be accessed," \
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
433 " site icons wont be stored, session wont be saved, " \
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
434 " and searches are not addded to the pop-up menu in the Google search box." \
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
435 " Until you close the window, you can still click the Back and Forward buttons" \
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
436 " to return to the webpages you have opened.").arg(title);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
437
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
438 QMessageBox.StandardButton button = QMessageBox.question(this, QString(), text,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
439 QMessageBox.Ok | QMessageBox.Cancel,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
440 QMessageBox.Ok);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
441 if (button == QMessageBox.Ok) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
442 settings.setAttribute(QWebSettings.PrivateBrowsingEnabled, true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
443 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
444 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
445 settings.setAttribute(QWebSettings.PrivateBrowsingEnabled, false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
446
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
447 QList<BrowserMainWindow*> windows = BrowserApplication.instance().mainWindows();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
448 for (int i = 0; i < windows.count(); ++i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
449 BrowserMainWindow window = windows.at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
450 window.m_lastSearch = QString.null;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
451 window.tabWidget().clear();
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
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
456 void slotFileSaveAs()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
457 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
458 BrowserApplication.downloadManager().download(currentTab().url(), true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
459 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
460
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
461 void slotEditFind()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
462 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
463 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
464 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
465 bool ok;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
466 QString search = QInputDialog.getText(this, tr("Find"),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
467 tr("Text:"), QLineEdit.Normal, m_lastSearch, &ok);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
468 if (ok && !search.isEmpty()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
469 m_lastSearch = search;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
470 if (!currentTab().findText(m_lastSearch))
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
471 slotUpdateStatusbar(tr("\"%1\" not found.").arg(m_lastSearch));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
472 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
473 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
474
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
475 void slotEditFindNext()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
476 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
477 if (!currentTab() && !m_lastSearch.isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
478 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
479 currentTab().findText(m_lastSearch);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
480 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
481
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
482 void slotEditFindPrevious()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
483 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
484 if (!currentTab() && !m_lastSearch.isEmpty())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
485 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
486 currentTab().findText(m_lastSearch, QWebPage.FindBackward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
487 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
488
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
489
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
490 void slotShowBookmarksDialog();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
491 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
492 BookmarksDialog dialog = new BookmarksDialog(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
493 dialog.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
494 dialog.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
495 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
496
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
497 void slotAddBookmark()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
498 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
499 WebView webView = currentTab();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
500 QString url = webView.url().toString();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
501 QString title = webView.title();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
502 AddBookmarkDialog dialog(url, title);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
503 dialog.exec();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
504 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
505
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
506 void slotViewZoomIn()
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
507 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
508 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
509 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
510 currentTab().setZoomFactor(currentTab().zoomFactor() + 0.1);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
511 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
512
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
513 void BslotViewZoomOut()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
514 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
515 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
516 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
517 currentTab().setZoomFactor(currentTab().zoomFactor() - 0.1);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
518 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
519
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
520 void slotViewResetZoom()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
521 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
522 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
523 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
524 currentTab().setZoomFactor(1.0);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
525 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
526
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
527 void slotViewZoomTextOnly(bool enable)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
528 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
529 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
530 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
531 currentTab().page().settings().setAttribute(QWebSettings.ZoomTextOnly, enable);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
532 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
533
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
534 void slotViewToolbar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
535 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
536 if (m_navigationBar.isVisible()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
537 updateToolbarActionText(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
538 m_navigationBar.close();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
539 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
540 updateToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
541 m_navigationBar.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
542 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
543 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
544 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
545
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
546
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
547 void slotViewBookmarksBar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
548 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
549 if (m_bookmarksToolbar.isVisible()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
550 updateBookmarksToolbarActionText(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
551 m_bookmarksToolbar.close();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
552 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
553 updateBookmarksToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
554 m_bookmarksToolbar.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
555 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
556 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
557 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
558
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
559 void slotViewStatusbar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
560 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
561 if (statusBar().isVisible()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
562 updateStatusbarActionText(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
563 statusBar().close();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
564 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
565 updateStatusbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
566 statusBar().show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
567 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
568 m_autoSaver.changeOccurred();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
569 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
570
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
571 void slotViewPageSource()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
572 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
573 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
574 return;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
575
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
576 QString markup = currentTab().page().mainFrame().toHtml();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
577 QPlainTextEdit view = new QPlainTextEdit(markup);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
578 view.setWindowTitle(tr("Page Source of %1").arg(currentTab().title()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
579 view.setMinimumWidth(640);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
580 view.setAttribute(Qt.WA_DeleteOnClose);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
581 view.show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
582 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
583
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
584
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
585 void slotViewFullScreen(bool makeFullScreen)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
586 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
587 if (makeFullScreen) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
588 showFullScreen();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
589 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
590 if (isMinimized())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
591 showMinimized();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
592 else if (isMaximized())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
593 showMaximized();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
594 else showNormal();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
595 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
596 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
597
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
598 void slotWebSearch()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
599 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
600 m_toolbarSearch.lineEdit().selectAll();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
601 m_toolbarSearch.lineEdit().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
602 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
603
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
604 void slotToggleInspector(bool enable);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
605 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
606 QWebSettings.globalSettings().setAttribute(QWebSettings.DeveloperExtrasEnabled, enable);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
607 if (enable) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
608 int result = QMessageBox.question(this, tr("Web Inspector"),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
609 tr("The web inspector will only work correctly for pages that were loaded after enabling.\n"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
610 "Do you want to reload all pages?"),
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
611 QMessageBox.Yes | QMessageBox.No);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
612 if (result == QMessageBox.Yes) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
613 m_tabWidget.reloadAllTabs();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
614 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
615 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
616 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
617
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
618 void slotAboutApplication()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
619 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
620 QMessageBox.about(this, tr("About"), tr(
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
621 "Version %1"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
622 "<p>This demo demonstrates Qt's "
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
623 "webkit facilities in action, providing an example "
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
624 "browser for you to experiment with.<p>"
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
625 "<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
626 ).arg(QCoreApplication.applicationVersion()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
627 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
628
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
629 void slotDownloadManager()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
630 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
631 BrowserApplication.downloadManager().show();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
632 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
633
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
634 void slotSelectLineEdit();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
635 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
636 m_tabWidget.currentLineEdit().selectAll();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
637 m_tabWidget.currentLineEdit().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
638 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
639
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
640 void slotAboutToShowBackMenu();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
641 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
642 m_historyBackMenu.clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
643 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
644 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
645 QWebHistory history = currentTab().history();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
646 int historyCount = history.count();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
647 for (int i = history.backItems(historyCount).count() - 1; i >= 0; --i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
648 QWebHistoryItem item = history.backItems(history.count()).at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
649 QAction action = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
650 action.setData(-1*(historyCount-i-1));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
651 QIcon icon = BrowserApplication.instance().icon(item.url());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
652 action.setIcon(icon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
653 action.setText(item.title());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
654 m_historyBackMenu.addAction(action);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
655 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
656 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
657
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
658
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
659 void slotAboutToShowForwardMenu();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
660 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
661 m_historyForwardMenu.clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
662 if (!currentTab())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
663 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
664 QWebHistory history = currentTab().history();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
665 int historyCount = history.count();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
666 for (int i = 0; i < history.forwardItems(history.count()).count(); ++i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
667 QWebHistoryItem item = history.forwardItems(historyCount).at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
668 QAction action = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
669 action.setData(historyCount-i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
670 QIcon icon = BrowserApplication.instance().icon(item.url());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
671 action.setIcon(icon);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
672 action.setText(item.title());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
673 m_historyForwardMenu.addAction(action);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
674 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
675 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
676
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
677 void slotAboutToShowWindowMenu()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
678 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
679 m_windowMenu.clear();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
680 m_windowMenu.addAction(m_tabWidget.nextTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
681 m_windowMenu.addAction(m_tabWidget.previousTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
682 m_windowMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
683 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
684
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
685 m_windowMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
686 QList<BrowserMainWindow*> windows = BrowserApplication.instance().mainWindows();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
687 for (int i = 0; i < windows.count(); ++i) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
688 BrowserMainWindow window = windows.at(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
689 QAction action = m_windowMenu.addAction(window.windowTitle(), this, SLOT(slotShowWindow()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
690 action.setData(i);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
691 action.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
692 if (window == this)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
693 action.setChecked(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
694 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
695 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
696
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
697 void slotOpenActionUrl(QAction action)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
698 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
699 int offset = action.data().toInt();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
700 QWebHistory history = currentTab().history();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
701 if (offset < 0)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
702 history.goToItem(history.backItems(-1*offset).first()); // back
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
703 else if (offset > 0)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
704 history.goToItem(history.forwardItems(history.count() - offset + 1).back()); // forward
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
705 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
706
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
707 void slotShowWindow()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
708 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
709 if (QAction action = qobject_cast<QAction*>(sender())) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
710 QVariant v = action.data();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
711 if (v.canConvert<int>()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
712 int offset = qvariant_cast<int>(v);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
713 QList<BrowserMainWindow*> windows = BrowserApplication.instance().mainWindows();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
714 windows.at(offset).activateWindow();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
715 windows.at(offset).currentTab().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
716 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
717 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
718 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
719
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
720 void slotSwapFocus()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
721 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
722 if (currentTab().hasFocus())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
723 m_tabWidget.currentLineEdit().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
724 else
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
725 currentTab().setFocus();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
726 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
727
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
728 void printRequested(QWebFrame frame)
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
729 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
730 version(QT_NO_PRINTER)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
731 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
732 QPrinter printer;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
733 QPrintDialog dialog = new QPrintDialog(&printer, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
734 dialog.setWindowTitle(tr("Print Document"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
735 if (dialog.exec() != QDialog.Accepted)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
736 return;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
737 frame.print(&printer);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
738 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
739 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
740
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
741 void geometryChangeRequested(QRect &geometry)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
742 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
743 setGeometry(geometry);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
744 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
745
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
746
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
747 void updateToolbarActionText(bool visible)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
748 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
749 m_viewToolbar.setText(!visible ? tr("Show Toolbar") : tr("Hide Toolbar"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
750 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
751
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
752 void updateBookmarksToolbarActionText(bool visible)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
753 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
754 m_viewBookmarkBar.setText(!visible ? tr("Show Bookmarks bar") : tr("Hide Bookmarks bar"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
755 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
756
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
757 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
758
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
759 void loadDefaultState()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
760 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
761 QSettings settings;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
762 settings.beginGroup(QLatin1String("BrowserMainWindow"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
763 QByteArray data = settings.value(QLatin1String("defaultState")).toByteArray();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
764 restoreState(data);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
765 settings.endGroup();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
766 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
767
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
768 void setupMenu();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
769 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
770 new QShortcut(QKeySequence(Qt.Key_F6), this, SLOT(slotSwapFocus()));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
771
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
772 // File
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
773 QMenu fileMenu = menuBar().addMenu(tr("&File"));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
774
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
775 fileMenu.addAction(tr("&New Window"), this, SLOT(slotFileNew()), QKeySequence.New);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
776 fileMenu.addAction(m_tabWidget.newTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
777 fileMenu.addAction(tr("&Open File..."), this, SLOT(slotFileOpen()), QKeySequence.Open);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
778 fileMenu.addAction(tr("Open &Location..."), this, SLOT(slotSelectLineEdit()), QKeySequence(Qt.ControlModifier + Qt.Key_L));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
779 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
780 fileMenu.addAction(m_tabWidget.closeTabAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
781 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
782 fileMenu.addAction(tr("&Save As..."), this, SLOT(slotFileSaveAs()), QKeySequence(QKeySequence.Save));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
783 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
784 BookmarksManager bookmarksManager = BrowserApplication.bookmarksManager();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
785 fileMenu.addAction(tr("&Import Bookmarks..."), bookmarksManager, SLOT(importBookmarks()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
786 fileMenu.addAction(tr("&Export Bookmarks..."), bookmarksManager, SLOT(exportBookmarks()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
787 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
788 fileMenu.addAction(tr("P&rint Preview..."), this, SLOT(slotFilePrintPreview()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
789 fileMenu.addAction(tr("&Print..."), this, SLOT(slotFilePrint()), QKeySequence.Print);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
790 fileMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
791 QAction action = fileMenu.addAction(tr("Private &Browsing..."), this, SLOT(slotPrivateBrowsing()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
792 action.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
793 fileMenu.addSeparator();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
794
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
795 version(Q_WS_MAC) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
796 fileMenu.addAction(tr("&Quit"), BrowserApplication.instance(), SLOT(quitBrowser()), QKeySequence(Qt.CTRL | Qt.Key_Q));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
797 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
798 fileMenu.addAction(tr("&Quit"), this, SLOT(close()), QKeySequence(Qt.CTRL | Qt.Key_Q));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
799 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
800
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
801 // Edit
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
802 QMenu editMenu = menuBar().addMenu(tr("&Edit"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
803 QAction m_undo = editMenu.addAction(tr("&Undo"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
804 m_undo.setShortcuts(QKeySequence.Undo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
805 m_tabWidget.addWebAction(m_undo, QWebPage.Undo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
806 QAction m_redo = editMenu.addAction(tr("&Redo"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
807 m_redo.setShortcuts(QKeySequence.Redo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
808 m_tabWidget.addWebAction(m_redo, QWebPage.Redo);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
809 editMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
810 QAction m_cut = editMenu.addAction(tr("Cu&t"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
811 m_cut.setShortcuts(QKeySequence.Cut);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
812 m_tabWidget.addWebAction(m_cut, QWebPage.Cut);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
813 QAction m_copy = editMenu.addAction(tr("&Copy"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
814 m_copy.setShortcuts(QKeySequence.Copy);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
815 m_tabWidget.addWebAction(m_copy, QWebPage.Copy);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
816 QAction m_paste = editMenu.addAction(tr("&Paste"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
817 m_paste.setShortcuts(QKeySequence.Paste);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
818 m_tabWidget.addWebAction(m_paste, QWebPage.Paste);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
819 editMenu.addSeparator();
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_find = editMenu.addAction(tr("&Find"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
822 m_find.setShortcuts(QKeySequence.Find);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
823 m_find.triggered().connect(&this.slotEditFind);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
824 new QShortcut(QKeySequence(Qt.Key_Slash), this, SLOT(slotEditFind()));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
825
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
826 QAction m_findNext = editMenu.addAction(tr("&Find Next"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
827 m_findNext.setShortcuts(QKeySequence.FindNext);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
828 m_findNext.triggered().connect(&this.slotEditFindNext);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
829
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
830 QAction m_findPrevious = editMenu.addAction(tr("&Find Previous"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
831 m_findPrevious.setShortcuts(QKeySequence.FindPrevious);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
832 m_findPrevious.triggered().connect(&this.slotEditFindPrevious);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
833
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
834 editMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
835 editMenu.addAction(tr("&Preferences"), this, SLOT(slotPreferences()), tr("Ctrl+,"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
836
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
837 // View
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
838 QMenu viewMenu = menuBar().addMenu(tr("&View"));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
839
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
840 m_viewBookmarkBar = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
841 updateBookmarksToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
842 m_viewBookmarkBar.setShortcut(tr("Shift+Ctrl+B"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
843 m_viewBookmarkBar.triggered().connect(&this.slotViewBookmarksBar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
844 viewMenu.addAction(m_viewBookmarkBar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
845
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
846 m_viewToolbar = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
847 updateToolbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
848 m_viewToolbar.setShortcut(tr("Ctrl+|"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
849 m_viewToolbar.triggered().connect(&this.slotViewToolbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
850 viewMenu.addAction(m_viewToolbar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
851
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
852 m_viewStatusbar = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
853 updateStatusbarActionText(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
854 m_viewStatusbar.setShortcut(tr("Ctrl+/"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
855 m_viewStatusbar.triggered().connect(&this.slotViewStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
856 viewMenu.addAction(m_viewStatusbar);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
857
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
858 viewMenu.addSeparator();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
859
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
860 m_stop = viewMenu.addAction(tr("&Stop"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
861 QList<QKeySequence> shortcuts;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
862 shortcuts.append(QKeySequence(Qt.CTRL | Qt.Key_Period));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
863 shortcuts.append(Qt.Key_Escape);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
864 m_stop.setShortcuts(shortcuts);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
865 m_tabWidget.addWebAction(m_stop, QWebPage.Stop);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
866
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
867 m_reload = viewMenu.addAction(tr("Reload Page"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
868 m_reload.setShortcuts(QKeySequence.Refresh);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
869 m_tabWidget.addWebAction(m_reload, QWebPage.Reload);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
870
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
871 viewMenu.addAction(tr("Zoom &In"), this, SLOT(slotViewZoomIn()), QKeySequence(Qt.CTRL | Qt.Key_Plus));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
872 viewMenu.addAction(tr("Zoom &Out"), this, SLOT(slotViewZoomOut()), QKeySequence(Qt.CTRL | Qt.Key_Minus));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
873 viewMenu.addAction(tr("Reset &Zoom"), this, SLOT(slotViewResetZoom()), QKeySequence(Qt.CTRL | Qt.Key_0));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
874 QAction zoomTextOnlyAction = viewMenu.addAction(tr("Zoom &Text Only"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
875 zoomTextOnlyAction.toggled().connect(&this.slotViewZoomTextOnly);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
876 zoomTextOnlyAction.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
877 zoomTextOnlyAction.setChecked(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
878
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
879 viewMenu.addSeparator();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
880 viewMenu.addAction(tr("Page S&ource"), this, SLOT(slotViewPageSource()), tr("Ctrl+Alt+U"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
881 QAction a = viewMenu.addAction(tr("&Full Screen"), this, SLOT(slotViewFullScreen(bool)), Qt.Key_F11);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
882 a.setCheckable(true);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
883
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
884 // History
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
885 HistoryMenu historyMenu = new HistoryMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
886 historyMenu.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
887 historyMenu.hovered.connect(&this.slotUpdateStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
888 historyMenu.setTitle(tr("Hi&story"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
889 menuBar().addMenu(historyMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
890 QList<QAction> historyActions;
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_historyBack = new QAction(tr("Back"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
893 m_tabWidget.addWebAction(m_historyBack, QWebPage.Back);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
894 m_historyBack.setShortcuts(QKeySequence.Back);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
895 m_historyBack.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 m_historyForward = new QAction(tr("Forward"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
898 m_tabWidget.addWebAction(m_historyForward, QWebPage.Forward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
899 m_historyForward.setShortcuts(QKeySequence.Forward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
900 m_historyForward.setIconVisibleInMenu(false);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
901
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
902 QAction m_historyHome = new QAction(tr("Home"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
903 m_historyHome.triggered().connect(&this.slotHome);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
904 m_historyHome.setShortcut(QKeySequence(Qt.CTRL | Qt.SHIFT | Qt.Key_H));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
905
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
906 m_restoreLastSession = new QAction(tr("Restore Last Session"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
907 m_restoreLastSession.triggered().connect(BrowserApplication.instance().restoreLastSession);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
908 m_restoreLastSession.setEnabled(BrowserApplication.instance().canRestoreSession());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
909
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
910 historyActions.append(m_historyBack);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
911 historyActions.append(m_historyForward);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
912 historyActions.append(m_historyHome);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
913 historyActions.append(m_tabWidget.recentlyClosedTabsAction());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
914 historyActions.append(m_restoreLastSession);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
915 historyMenu.setInitialActions(historyActions);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
916
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
917 // Bookmarks
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
918 BookmarksMenu bookmarksMenu = new BookmarksMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
919 bookmarksMenu.openUrl.connect(&m_tabWidget.loadUrlInCurrentTab);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
920 bookmarksMenu.hovered.connect(&this.slotUpdateStatusbar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
921 bookmarksMenu.setTitle(tr("&Bookmarks"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
922 menuBar().addMenu(bookmarksMenu);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
923
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
924 QList<QAction> bookmarksActions;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
925
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
926 QAction showAllBookmarksAction = new QAction(tr("Show All Bookmarks"), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
927 showAllBookmarksAction.triggered().connect(&this.slotShowBookmarksDialog);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
928 m_addBookmark = new QAction(QIcon(QLatin1String(":addbookmark.png")), tr("Add Bookmark..."), this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
929 m_addBookmark.setIconVisibleInMenu(false);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
930
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
931 m_addBookmark.triggered().connect(&this.slotAddBookmark);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
932 m_addBookmark.setShortcut(QKeySequence(Qt.CTRL | Qt.Key_D));
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
933
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
934 bookmarksActions.append(showAllBookmarksAction);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
935 bookmarksActions.append(m_addBookmark);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
936 bookmarksMenu.setInitialActions(bookmarksActions);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
937
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
938 // Window
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
939 m_windowMenu = menuBar().addMenu(tr("&Window"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
940 m_windowMenu.aboutToShow().connect(&this.slotAboutToShowWindowMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
941 slotAboutToShowWindowMenu();
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
942
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
943 QMenu toolsMenu = menuBar().addMenu(tr("&Tools"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
944 toolsMenu.addAction(tr("Web &Search"), this, SLOT(slotWebSearch()), QKeySequence(tr("Ctrl+K", "Web Search")));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
945 version(Q_CC_MINGW)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
946 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
947 a = toolsMenu.addAction(tr("Enable Web &Inspector"), this, SLOT(slotToggleInspector(bool)));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
948 a.setCheckable(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
949 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
950
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
951 QMenu helpMenu = menuBar().addMenu(tr("&Help"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
952 helpMenu.addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
953 helpMenu.addAction(tr("About &Demo Browser"), this, SLOT(slotAboutApplication()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
954 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
955
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
956 void setupToolBar()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
957 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
958 setUnifiedTitleAndToolBarOnMac(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
959 m_navigationBar = addToolBar(tr("Navigation"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
960 m_navigationBar.toggleViewAction().toggled.connect(&this.updateToolbarActionText);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
961
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
962 m_historyBack.setIcon(style().standardIcon(QStyle.SP_ArrowBack, 0, this));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
963 m_historyBackMenu = new QMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
964 m_historyBack.setMenu(m_historyBackMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
965 m_historyBackMenu.aboutToShow().connect(&this.slotAboutToShowBackMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
966 m_historyBackMenu.triggered.connect(&this.slotOpenActionUrl);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
967 m_navigationBar.addAction(m_historyBack);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
968
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
969 m_historyForward.setIcon(style().standardIcon(QStyle.SP_ArrowForward, 0, this));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
970 m_historyForwardMenu = new QMenu(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
971 m_historyForwardMenu.aboutToShow.connect(&this.slotAboutToShowForwardMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
972 m_historyForwardMenu.triggered.connect(&this.slotOpenActionUrl);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
973 m_historyForward.setMenu(m_historyForwardMenu);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
974 m_navigationBar.addAction(m_historyForward);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
975
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
976 m_stopReload = new QAction(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
977 m_reloadIcon = style().standardIcon(QStyle.SP_BrowserReload);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
978 m_stopReload.setIcon(m_reloadIcon);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
979
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
980 m_navigationBar.addAction(m_stopReload);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
981
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
982 m_navigationBar.addWidget(m_tabWidget.lineEditStack());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
983
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
984 m_toolbarSearch = new ToolbarSearch(m_navigationBar);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
985 m_navigationBar.addWidget(m_toolbarSearch);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
986 m_toolbarSearch.search.connect(&loadUrl);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
987
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
988 m_chaseWidget = new ChaseWidget(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
989 m_navigationBar.addWidget(m_chaseWidget);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
990 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
991
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
992 void updateStatusbarActionText(bool visible)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
993 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
994 m_viewStatusbar.setText(!visible ? tr("Show Status Bar") : tr("Hide Status Bar"));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
995 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
996
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
997 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
998
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
999 QToolBar m_navigationBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1000 ToolbarSearch m_toolbarSearch;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1001 BookmarksToolBar m_bookmarksToolbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1002 ChaseWidget m_chaseWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1003 TabWidget m_tabWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1004 AutoSaver m_autoSaver;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1005
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1006 QAction m_historyBack;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1007 QMenu m_historyBackMenu;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1008 QAction m_historyForward;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1009 QMenu m_historyForwardMenu;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1010 QMenu m_windowMenu;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1011
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1012 QAction m_stop;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1013 QAction m_reload;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1014 QAction m_stopReload;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1015 QAction m_viewToolbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1016 QAction m_viewBookmarkBar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1017 QAction m_viewStatusbar;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1018 QAction m_restoreLastSession;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1019 QAction m_addBookmark;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1020
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1021 QIcon m_reloadIcon;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1022 QIcon m_stopIcon;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1023
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
1024 QString m_lastSearch;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1025 }