annotate demos/browser/browsermainwindow.d @ 45:71b382c10ef6

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