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

more porting
author mandel
date Fri, 22 May 2009 10:59:00 +0000
parents 71b382c10ef6
children 37caa90ce503
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1 /****************************************************************************
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
2 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
5 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
6 ** This file is part of the demonstration applications of the Qt Toolkit.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
7 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
8 ** $QT_BEGIN_LICENSE:LGPL$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
9 ** Commercial Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
10 ** Licensees holding valid Qt Commercial licenses may use this file in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
11 ** accordance with the Qt Commercial License Agreement provided with the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
12 ** Software or, alternatively, in accordance with the terms contained in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
13 ** a written agreement between you and Nokia.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
14 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
15 ** GNU Lesser General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
17 ** General Public License version 2.1 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
19 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
22 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
23 ** In addition, as a special exception, Nokia gives you certain
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
24 ** additional rights. These rights are described in the Nokia Qt LGPL
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
26 ** package.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
27 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
28 ** GNU General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
29 ** Alternatively, this file may be used under the terms of the GNU
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
30 ** General Public License version 3.0 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
31 ** Foundation and appearing in the file LICENSE.GPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
32 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
33 ** ensure the GNU General Public License version 3.0 requirements will be
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
34 ** met: http://www.gnu.org/copyleft/gpl.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
35 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
36 ** If you are unsure which license is appropriate for your use, please
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
37 ** contact the sales department at qt-sales@nokia.com.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
38 ** $QT_END_LICENSE$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
39 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
40 ****************************************************************************/
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.QApplication;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
43
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 import QtCore.QPointer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
46
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
47 import QtGui.QIcon;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
48
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
49 import browserapplication;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
50
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
51 import bookmarks;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
52 import browsermainwindow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
53 import cookiejar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
54 import downloadmanager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
55 import history;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
56 import networkaccessmanager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
57 import tabwidget;
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.QBuffer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
61 import QtCore.QDir;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
62 import QtCore.QLibraryInfo;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
63 import QtCore.QSettings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
64 import QtCore.QTextStream;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
65 import QtCore.QTranslator;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
66
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
67 import QtGui.QDesktopServices;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
68 import QtGui.QFileOpenEvent;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
71 import QtNetwork.QLocalServer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
72 import QtNetwork.QLocalSocket;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
73 import QtNetwork.QNetworkProxy;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
74 import QtNetwork.QSslSocket;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
75
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
76 import QtWebKit.QWebSettings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
77
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
78 import QtCore.QDebug;
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 DownloadManager *BrowserApplication::s_downloadManager = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
81 HistoryManager *BrowserApplication::s_historyManager = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
82 NetworkAccessManager *BrowserApplication::s_networkAccessManager = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
83 BookmarksManager *BrowserApplication::s_bookmarksManager = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
84
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
85
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
86 /*
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
87 QT_BEGIN_NAMESPACE
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
88 class QLocalServer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
89 QT_END_NAMESPACE
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 class BookmarksManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
92 class BrowserMainWindow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
93 class CookieJar;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
94 class DownloadManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
95 class HistoryManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
96 class NetworkAccessManager;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
99 class BrowserApplication : public QApplication
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 Q_OBJECT
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
102
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
103 public:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
104 this(char[] args)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
105 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
106 super(args);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
107 m_localServer = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
108 QCoreApplication::setOrganizationName(QLatin1String("Trolltech"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
109 QCoreApplication::setApplicationName(QLatin1String("demobrowser"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
110 QCoreApplication::setApplicationVersion(QLatin1String("0.1"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
111 version(Q_WS_QWS)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
112 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
113 // Use a different server name for QWS so we can run an X11
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
114 // browser and a QWS browser in parallel on the same machine for
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
115 // debugging
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
116 QString serverName = QCoreApplication::applicationName() + QLatin1String("_qws");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
117 } else {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
118 QString serverName = QCoreApplication::applicationName();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
119 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
120 QLocalSocket socket;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
121 socket.connectToServer(serverName);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
122 if (socket.waitForConnected(500)) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
123 QTextStream stream(&socket);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
124 QStringList args = QCoreApplication::arguments();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
125 if (args.count() > 1)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
126 stream << args.last();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
127 else
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
128 stream << QString();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
129 stream.flush();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
130 socket.waitForBytesWritten();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
131 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
132 }
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 version(Q_WS_MAC) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
135 QApplication::setQuitOnLastWindowClosed(false);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
136 } else {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
137 QApplication::setQuitOnLastWindowClosed(true);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
138 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
139
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
140 m_localServer = new QLocalServer(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
141 connect(m_localServer, SIGNAL(newConnection()),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
142 this, SLOT(newLocalSocketConnection()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
143 if (!m_localServer->listen(serverName)) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
144 if (m_localServer->serverError() == QAbstractSocket::AddressInUseError
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
145 && QFile::exists(m_localServer->serverName())) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
146 QFile::remove(m_localServer->serverName());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
147 m_localServer->listen(serverName);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
148 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
149 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
150
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
151 #ifndef QT_NO_OPENSSL
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
152 if (!QSslSocket::supportsSsl()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
153 QMessageBox::information(0, "Demo Browser",
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
154 "This system does not support OpenSSL. SSL websites will not be available.");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
155 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
156 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
157
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
158 QDesktopServices::setUrlHandler(QLatin1String("http"), this, "openUrl");
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
159 QString localSysName = QLocale::system().name();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
160
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
161 installTranslator(QLatin1String("qt_") + localSysName);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
162
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
163 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
164 settings.beginGroup(QLatin1String("sessions"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
165 m_lastSession = settings.value(QLatin1String("lastSession")).toByteArray();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
166 settings.endGroup();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
167
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
168 version(Q_WS_MAC) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
169 connect(this, SIGNAL(lastWindowClosed()),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
170 this, SLOT(lastWindowClosed()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
171 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
172
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
173 QTimer::singleShot(0, this, SLOT(postLaunch()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
174 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
175
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
176 ~this()
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 delete s_downloadManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
179 for (int i = 0; i < m_mainWindows.size(); ++i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
180 BrowserMainWindow *window = m_mainWindows.at(i);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
181 delete window;
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 delete s_networkAccessManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
184 delete s_bookmarksManager;
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 static BrowserApplication *instance()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
188 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
189 return (static_cast<BrowserApplication *>(QCoreApplication::instance()));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
190 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
191
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
192
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 void loadSettings()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
195 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
196 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
197 settings.beginGroup(QLatin1String("websettings"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
198
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
199 QWebSettings *defaultSettings = QWebSettings::globalSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
200 QString standardFontFamily = defaultSettings->fontFamily(QWebSettings::StandardFont);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
201 int standardFontSize = defaultSettings->fontSize(QWebSettings::DefaultFontSize);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
202 QFont standardFont = QFont(standardFontFamily, standardFontSize);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
203 standardFont = qVariantValue<QFont>(settings.value(QLatin1String("standardFont"), standardFont));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
204 defaultSettings->setFontFamily(QWebSettings::StandardFont, standardFont.family());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
205 defaultSettings->setFontSize(QWebSettings::DefaultFontSize, standardFont.pointSize());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
206
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
207 QString fixedFontFamily = defaultSettings->fontFamily(QWebSettings::FixedFont);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
208 int fixedFontSize = defaultSettings->fontSize(QWebSettings::DefaultFixedFontSize);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
209 QFont fixedFont = QFont(fixedFontFamily, fixedFontSize);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
210 fixedFont = qVariantValue<QFont>(settings.value(QLatin1String("fixedFont"), fixedFont));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
211 defaultSettings->setFontFamily(QWebSettings::FixedFont, fixedFont.family());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
212 defaultSettings->setFontSize(QWebSettings::DefaultFixedFontSize, fixedFont.pointSize());
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 defaultSettings->setAttribute(QWebSettings::JavascriptEnabled, settings.value(QLatin1String("enableJavascript"), true).toBool());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
215 defaultSettings->setAttribute(QWebSettings::PluginsEnabled, settings.value(QLatin1String("enablePlugins"), true).toBool());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
216
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
217 QUrl url = settings.value(QLatin1String("userStyleSheet")).toUrl();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
218 defaultSettings->setUserStyleSheetUrl(url);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
219
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
220 settings.endGroup();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
221 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
222
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
223 bool isTheOnlyBrowser() const
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
224 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
225 return (m_localServer != 0);
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 BrowserMainWindow *mainWindow()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
229 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
230 clean();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
231 if (m_mainWindows.isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
232 newMainWindow();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
233 return m_mainWindows[0];
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
234 }
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 QList<BrowserMainWindow*> mainWindows()
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 clean();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
239 QList<BrowserMainWindow*> list;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
240 for (int i = 0; i < m_mainWindows.count(); ++i)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
241 list.append(m_mainWindows.at(i));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
242 return list;
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
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 QIcon icon(const QUrl &url) const
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 QIcon icon = QWebSettings::iconForUrl(url);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
249 if (!icon.isNull())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
250 return icon.pixmap(16, 16);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
251 if (m_defaultIcon.isNull())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
252 m_defaultIcon = QIcon(QLatin1String(":defaulticon.png"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
253 return m_defaultIcon.pixmap(16, 16);
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
256 void saveSession()
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 QWebSettings *globalSettings = QWebSettings::globalSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
259 if (globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled))
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
260 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
261
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
262 clean();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
263
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
264 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
265 settings.beginGroup(QLatin1String("sessions"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
266
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
267 QByteArray data;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
268 QBuffer buffer(&data);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
269 QDataStream stream(&buffer);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
270 buffer.open(QIODevice::ReadWrite);
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 stream << m_mainWindows.count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
273 for (int i = 0; i < m_mainWindows.count(); ++i)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
274 stream << m_mainWindows.at(i)->saveState();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
275 settings.setValue(QLatin1String("lastSession"), data);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
276 settings.endGroup();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
279 bool canRestoreSession() const
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
280 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
281 return !m_lastSession.isEmpty();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
282 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
283
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
284 static HistoryManager *historyManager()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
285 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
286 if (!s_historyManager) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
287 s_historyManager = new HistoryManager();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
288 QWebHistoryInterface::setDefaultInterface(s_historyManager);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
289 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
290 return s_historyManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
291 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
292
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
293 static CookieJar *cookieJar()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
294 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
295 return (CookieJar*)networkAccessManager()->cookieJar();
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 static DownloadManager *downloadManager()
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 if (!s_downloadManager) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
300 s_downloadManager = new DownloadManager();
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 return s_downloadManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
303 }
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
306 static NetworkAccessManager *networkAccessManager()
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 (!s_networkAccessManager) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
309 s_networkAccessManager = new NetworkAccessManager();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
310 s_networkAccessManager->setCookieJar(new CookieJar);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
311 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
312 return s_networkAccessManager;
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
316 static BookmarksManager *bookmarksManager()
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 if (!s_bookmarksManager) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
319 s_bookmarksManager = new BookmarksManager;
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 return s_bookmarksManager;
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
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 version(Q_WS_MAC) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
326 bool event(QEvent* event)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
327 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
328 switch (event->type()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
329 case QEvent::ApplicationActivate: {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
330 clean();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
331 if (!m_mainWindows.isEmpty()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
332 BrowserMainWindow *mw = mainWindow();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
333 if (mw && !mw->isMinimized()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
334 mainWindow()->show();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
335 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
336 return true;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
337 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
338 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
339 case QEvent::FileOpen:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
340 if (!m_mainWindows.isEmpty()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
341 mainWindow()->loadPage(static_cast<QFileOpenEvent *>(event)->file());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
342 return true;
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 default:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
345 break;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
346 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
347 return QApplication::event(event);
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 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
350
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
351 public slots:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
352 BrowserMainWindow *newMainWindow()
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 BrowserMainWindow *browser = new BrowserMainWindow();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
355 m_mainWindows.prepend(browser);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
356 browser->show();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
357 return browser;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
358 }
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 void restoreLastSession()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
361 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
362 QList<QByteArray> windows;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
363 QBuffer buffer(&m_lastSession);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
364 QDataStream stream(&buffer);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
365 buffer.open(QIODevice::ReadOnly);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
366 int windowCount;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
367 stream >> windowCount;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
368 for (int i = 0; i < windowCount; ++i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
369 QByteArray windowState;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
370 stream >> windowState;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
371 windows.append(windowState);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
372 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
373 for (int i = 0; i < windows.count(); ++i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
374 BrowserMainWindow *newWindow = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
375 if (m_mainWindows.count() == 1
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
376 && mainWindow()->tabWidget()->count() == 1
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
377 && mainWindow()->currentTab()->url() == QUrl()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
378 newWindow = mainWindow();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
379 } else {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
380 newWindow = newMainWindow();
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 newWindow->restoreState(windows.at(i));
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
387 version(Q_WS_MAC) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
388 import QtGui.QMessageBox;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
389 void BrowserApplication::quitBrowser()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
390 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
391 clean();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
392 int tabCount = 0;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
393 for (int i = 0; i < m_mainWindows.count(); ++i) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
394 tabCount =+ m_mainWindows.at(i)->tabWidget()->count();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
395 }
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 if (tabCount > 1) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
398 int ret = QMessageBox::warning(mainWindow(), QString(),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
399 tr("There are %1 windows and %2 tabs open\n"
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
400 "Do you want to quit anyway?").arg(m_mainWindows.count()).arg(tabCount),
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
401 QMessageBox::Yes | QMessageBox::No,
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
402 QMessageBox::No);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
403 if (ret == QMessageBox::No)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
404 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
405 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
406
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
407 exit(0);
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 }
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 version(Q_WS_MAC) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
412 void lastWindowClosed()
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 clean();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
415 BrowserMainWindow *mw = new BrowserMainWindow;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
416 mw->slotHome();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
417 m_mainWindows.prepend(mw);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
418 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
419 }
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 private slots:
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 /*!
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
425 Any actions that can be delayed until the window is visible
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 void postLaunch()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
428 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
429 QString directory = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
430 if (directory.isEmpty())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
431 directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
432 QWebSettings::setIconDatabasePath(directory);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
433
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
434 setWindowIcon(QIcon(QLatin1String(":browser.svg")));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
435
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
436 loadSettings();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
437
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
438 // newMainWindow() needs to be called in main() for this to happen
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
439 if (m_mainWindows.count() > 0) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
440 QStringList args = QCoreApplication::arguments();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
441 if (args.count() > 1)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
442 mainWindow()->loadPage(args.last());
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
443 else
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
444 mainWindow()->slotHome();
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 BrowserApplication::historyManager();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
447 }
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 void openUrl(const QUrl &url)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
450 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
451 mainWindow()->loadPage(url.toString());
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 newLocalSocketConnection();
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 QLocalSocket *socket = m_localServer->nextPendingConnection();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
457 if (!socket)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
458 return;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
459 socket->waitForReadyRead(1000);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
460 QTextStream stream(socket);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
461 QString url;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
462 stream >> url;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
463 if (!url.isEmpty()) {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
464 QSettings settings;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
465 settings.beginGroup(QLatin1String("general"));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
466 int openLinksIn = settings.value(QLatin1String("openLinksIn"), 0).toInt();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
467 settings.endGroup();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
468 if (openLinksIn == 1)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
469 newMainWindow();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
470 else
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
471 mainWindow()->tabWidget()->newTab();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
472 openUrl(url);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
473 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
474 delete socket;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
475 mainWindow()->raise();
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
476 mainWindow()->activateWindow();
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
479 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
480 void clean()
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
481 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
482 // cleanup any deleted main windows first
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
483 for (int i = m_mainWindows.count() - 1; i >= 0; --i)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
484 if (m_mainWindows.at(i).isNull())
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
485 m_mainWindows.removeAt(i);
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
488 void installTranslator(const QString &name)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
489 {
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
490 QTranslator *translator = new QTranslator(this);
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
491 translator->load(name, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
492 QApplication::installTranslator(translator);
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
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
495 static HistoryManager *s_historyManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
496 static DownloadManager *s_downloadManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
497 static NetworkAccessManager *s_networkAccessManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
498 static BookmarksManager *s_bookmarksManager;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
499
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
500 QList<QPointer<BrowserMainWindow> > m_mainWindows;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
501 QLocalServer *m_localServer;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
502 QByteArray m_lastSession;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
503 mutable QIcon m_defaultIcon;
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