Mercurial > projects > qtd
diff demos/browser/browserapplication.d @ 74:37caa90ce503
more porting
author | mandel |
---|---|
date | Fri, 22 May 2009 23:43:58 +0000 |
parents | 71b382c10ef6 |
children | 0654fc9bac95 |
line wrap: on
line diff
--- a/demos/browser/browserapplication.d Fri May 22 10:59:00 2009 +0000 +++ b/demos/browser/browserapplication.d Fri May 22 23:43:58 2009 +0000 @@ -39,14 +39,32 @@ ** ****************************************************************************/ -import QtGui.QApplication; +module browserapplication; + + +import qt.core.QBuffer; +import qt.core.QDir; +import qt.core.QLibraryInfo; +import qt.core.QSettings; +import qt.core.QTextStream; +import qt.core.QTranslator; +import qt.core.QUrl; +import qt.core.QPointer; -import QtCore.QUrl; -import QtCore.QPointer; +import qt.gui.QApplication; +import qt.gui.QIcon; +import qt.gui.QDesktopServices; +import qt.gui.QFileOpenEvent; +import qt.gui.QMessageBox; -import QtGui.QIcon; +import qt.network.QLocalServer; +import qt.network.QLocalSocket; +import qt.network.QNetworkProxy; +import qt.network.QSslSocket; -import browserapplication; +import QtWebKit.QWebSettings; + +import qt.core.QDebug; import bookmarks; import browsermainwindow; @@ -57,451 +75,406 @@ import tabwidget; import webview; -import QtCore.QBuffer; -import QtCore.QDir; -import QtCore.QLibraryInfo; -import QtCore.QSettings; -import QtCore.QTextStream; -import QtCore.QTranslator; - -import QtGui.QDesktopServices; -import QtGui.QFileOpenEvent; -import QtGui.QMessageBox; - -import QtNetwork.QLocalServer; -import QtNetwork.QLocalSocket; -import QtNetwork.QNetworkProxy; -import QtNetwork.QSslSocket; - -import QtWebKit.QWebSettings; - -import QtCore.QDebug; - -DownloadManager *BrowserApplication::s_downloadManager = 0; -HistoryManager *BrowserApplication::s_historyManager = 0; -NetworkAccessManager *BrowserApplication::s_networkAccessManager = 0; -BookmarksManager *BrowserApplication::s_bookmarksManager = 0; - - -/* -QT_BEGIN_NAMESPACE -class QLocalServer; -QT_END_NAMESPACE - -class BookmarksManager; -class BrowserMainWindow; -class CookieJar; -class DownloadManager; -class HistoryManager; -class NetworkAccessManager; -*/ class BrowserApplication : public QApplication { - Q_OBJECT +public: + + this(char[] args) + { + super(args); + m_localServer = 0; + QCoreApplication.setOrganizationName(QLatin1String("Trolltech")); + QCoreApplication.setApplicationName(QLatin1String("demobrowser")); + QCoreApplication.setApplicationVersion(QLatin1String("0.1")); + version(Q_WS_QWS) + { + // Use a different server name for QWS so we can run an X11 + // browser and a QWS browser in parallel on the same machine for + // debugging + QString serverName = QCoreApplication.applicationName() + QLatin1String("_qws"); + } else { + QString serverName = QCoreApplication.applicationName(); + } + QLocalSocket socket; + socket.connectToServer(serverName); + if (socket.waitForConnected(500)) { + auto stream = new QTextStream(&socket); + QStringList args = QCoreApplication.arguments(); + if (args.count() > 1) + stream << args.last(); + else + stream << QString(); + stream.flush(); + socket.waitForBytesWritten(); + return; + } + + version(Q_WS_MAC) { + QApplication.setQuitOnLastWindowClosed(false); + } else { + QApplication.setQuitOnLastWindowClosed(true); + } + + m_localServer = new QLocalServer(this); + m_localServer.newConnection.connect(&this.newLocalSocketConnection); + if (!m_localServer.listen(serverName)) { + if (m_localServer.serverError() == QAbstractSocket.AddressInUseError + && QFile.exists(m_localServer.serverName())) { + QFile.remove(m_localServer.serverName()); + m_localServer.listen(serverName); + } + } + + version(QT_NO_OPENSSL) {} else { + if (!QSslSocket.supportsSsl()) { + QMessageBox.information(0, "Demo Browser", + "This system does not support OpenSSL. SSL websites will not be available."); + } + } + + QDesktopServices.setUrlHandler(QLatin1String("http"), this, "openUrl"); + QString localSysName = QLocale.system().name(); -public: -this(char[] args) -{ - super(args); - m_localServer = 0; - QCoreApplication::setOrganizationName(QLatin1String("Trolltech")); - QCoreApplication::setApplicationName(QLatin1String("demobrowser")); - QCoreApplication::setApplicationVersion(QLatin1String("0.1")); -version(Q_WS_QWS) + installTranslator(QLatin1String("qt_") + localSysName); + + QSettings settings; + settings.beginGroup(QLatin1String("sessions")); + m_lastSession = settings.value(QLatin1String("lastSession")).toByteArray(); + settings.endGroup(); + + version(Q_WS_MAC) { + this.lastWindowClosed.connect(&this.lastWindowClosed); + } + + QTimer.singleShot(0, this, SLOT(postLaunch())); + } + + ~this() + { + delete s_downloadManager; + for (int i = 0; i < m_mainWindows.size(); ++i) { + BrowserMainWindow window = m_mainWindows.at(i); + delete window; + } + delete s_networkAccessManager; + delete s_bookmarksManager; + } + + static BrowserApplication instance() + { + return cast(BrowserApplication) QCoreApplication.instance(); + } + + void loadSettings() + { + QSettings settings; + settings.beginGroup(QLatin1String("websettings")); + + QWebSettings defaultSettings = QWebSettings.globalSettings(); + QString standardFontFamily = defaultSettings.fontFamily(QWebSettings.StandardFont); + int standardFontSize = defaultSettings.fontSize(QWebSettings.DefaultFontSize); + QFont standardFont = QFont(standardFontFamily, standardFontSize); + standardFont = qVariantValue!(QFont)(settings.value(QLatin1String("standardFont"), standardFont)); + defaultSettings.setFontFamily(QWebSettings.StandardFont, standardFont.family()); + defaultSettings.setFontSize(QWebSettings.DefaultFontSize, standardFont.pointSize()); + + QString fixedFontFamily = defaultSettings.fontFamily(QWebSettings.FixedFont); + int fixedFontSize = defaultSettings.fontSize(QWebSettings.DefaultFixedFontSize); + QFont fixedFont = QFont(fixedFontFamily, fixedFontSize); + fixedFont = qVariantValue!(QFont)(settings.value(QLatin1String("fixedFont"), fixedFont)); + defaultSettings.setFontFamily(QWebSettings.FixedFont, fixedFont.family()); + defaultSettings.setFontSize(QWebSettings.DefaultFixedFontSize, fixedFont.pointSize()); + + defaultSettings.setAttribute(QWebSettings.JavascriptEnabled, settings.value(QLatin1String("enableJavascript"), true).toBool()); + defaultSettings.setAttribute(QWebSettings.PluginsEnabled, settings.value(QLatin1String("enablePlugins"), true).toBool()); + + QUrl url = settings.value(QLatin1String("userStyleSheet")).toUrl(); + defaultSettings.setUserStyleSheetUrl(url); + + settings.endGroup(); + } + + bool isTheOnlyBrowser() { - // Use a different server name for QWS so we can run an X11 - // browser and a QWS browser in parallel on the same machine for - // debugging - QString serverName = QCoreApplication::applicationName() + QLatin1String("_qws"); -} else { - QString serverName = QCoreApplication::applicationName(); -} - QLocalSocket socket; - socket.connectToServer(serverName); - if (socket.waitForConnected(500)) { - QTextStream stream(&socket); - QStringList args = QCoreApplication::arguments(); - if (args.count() > 1) - stream << args.last(); - else - stream << QString(); - stream.flush(); - socket.waitForBytesWritten(); - return; - } + return (m_localServer != 0); + } + + BrowserMainWindow mainWindow() + { + clean(); + if (m_mainWindows.isEmpty()) + newMainWindow(); + return m_mainWindows[0]; + } + + BrowserMainWindow[] mainWindows() + { + clean(); + BrowserMainWindow[] list; + for (int i = 0; i < m_mainWindows.count(); ++i) + list ~= m_mainWindows.at(i); + return list; + } + + QIcon icon(QUrl url) + { + QIcon icon = QWebSettings.iconForUrl(url); + if (!icon.isNull()) + return icon.pixmap(16, 16); + if (m_defaultIcon.isNull()) + m_defaultIcon = QIcon(QLatin1String(":defaulticon.png")); + return m_defaultIcon.pixmap(16, 16); + } + + void saveSession() + { + QWebSettings globalSettings = QWebSettings.globalSettings(); + if (globalSettings.testAttribute(QWebSettings.PrivateBrowsingEnabled)) + return; + + clean(); + + QSettings settings; + settings.beginGroup(QLatin1String("sessions")); + + QByteArray data; + auto buffer = new QBuffer(&data); + auto stream = new QDataStream(&buffer); + buffer.open(QIODevice.ReadWrite); + + stream << m_mainWindows.count(); + for (int i = 0; i < m_mainWindows.count(); ++i) + stream << m_mainWindows.at(i).saveState(); + settings.setValue(QLatin1String("lastSession"), data); + settings.endGroup(); + } + + bool canRestoreSession() + { + return !m_lastSession.isEmpty(); + } -version(Q_WS_MAC) { - QApplication::setQuitOnLastWindowClosed(false); -} else { - QApplication::setQuitOnLastWindowClosed(true); -} + static HistoryManager historyManager() + { + if (!s_historyManager) { + s_historyManager = new HistoryManager(); + QWebHistoryInterface.setDefaultInterface(s_historyManager); + } + return s_historyManager; + } + + static CookieJar cookieJar() + { + return cast(CookieJar) networkAccessManager().cookieJar(); + } + + static DownloadManager downloadManager() + { + if (!s_downloadManager) { + s_downloadManager = new DownloadManager(); + } + return s_downloadManager; + } + + static NetworkAccessManager networkAccessManager() + { + if (!s_networkAccessManager) { + s_networkAccessManager = new NetworkAccessManager(); + s_networkAccessManager.setCookieJar(new CookieJar); + } + return s_networkAccessManager; + } + - m_localServer = new QLocalServer(this); - connect(m_localServer, SIGNAL(newConnection()), - this, SLOT(newLocalSocketConnection())); - if (!m_localServer->listen(serverName)) { - if (m_localServer->serverError() == QAbstractSocket::AddressInUseError - && QFile::exists(m_localServer->serverName())) { - QFile::remove(m_localServer->serverName()); - m_localServer->listen(serverName); - } - } + static BookmarksManager bookmarksManager() + { + if (!s_bookmarksManager) { + s_bookmarksManager = new BookmarksManager; + } + return s_bookmarksManager; + } + -#ifndef QT_NO_OPENSSL - if (!QSslSocket::supportsSsl()) { - QMessageBox::information(0, "Demo Browser", - "This system does not support OpenSSL. SSL websites will not be available."); - } +version(Q_WS_MAC) +{ + bool event(QEvent event) + { + switch (event.type()) { + case QEvent.ApplicationActivate: { + clean(); + if (!m_mainWindows.isEmpty()) { + BrowserMainWindow mw = mainWindow(); + if (mw && !mw.isMinimized()) { + mainWindow().show(); + } + return true; + } + } + case QEvent.FileOpen: + if (!m_mainWindows.isEmpty()) { + mainWindow().loadPage(cast(QFileOpenEvent) event.file()); + return true; + } + default: + break; + } + return QApplication.event(event); + } } - QDesktopServices::setUrlHandler(QLatin1String("http"), this, "openUrl"); - QString localSysName = QLocale::system().name(); - - installTranslator(QLatin1String("qt_") + localSysName); +public: - QSettings settings; - settings.beginGroup(QLatin1String("sessions")); - m_lastSession = settings.value(QLatin1String("lastSession")).toByteArray(); - settings.endGroup(); - -version(Q_WS_MAC) { - connect(this, SIGNAL(lastWindowClosed()), - this, SLOT(lastWindowClosed())); -} + BrowserMainWindow newMainWindow() + { + BrowserMainWindow browser = new BrowserMainWindow(); + m_mainWindows.prepend(browser); + browser.show(); + return browser; + } - QTimer::singleShot(0, this, SLOT(postLaunch())); -} - - ~this() -{ - delete s_downloadManager; - for (int i = 0; i < m_mainWindows.size(); ++i) { - BrowserMainWindow *window = m_mainWindows.at(i); - delete window; - } - delete s_networkAccessManager; - delete s_bookmarksManager; -} - - static BrowserApplication *instance() -{ - return (static_cast<BrowserApplication *>(QCoreApplication::instance())); -} - + void restoreLastSession() + { + QByteArray[] windows; + auto buffer = new QBuffer(&m_lastSession); + auto stream = new QDataStream(&buffer); + buffer.open(QIODevice.ReadOnly); + int windowCount; + stream >> windowCount; + for (int i = 0; i < windowCount; ++i) { + QByteArray windowState; + stream >> windowState; + windows ~= windowState; + } + for (int i = 0; i < windows.count(); ++i) { + BrowserMainWindow newWindow = 0; + if (m_mainWindows.count() == 1 && mainWindow().tabWidget().count() == 1 + && mainWindow().currentTab().url() == QUrl()) { + newWindow = mainWindow(); + } else { + newWindow = newMainWindow(); + } + newWindow.restoreState(windows.at(i)); + } + } - void loadSettings() +version(Q_WS_MAC) { - QSettings settings; - settings.beginGroup(QLatin1String("websettings")); - - QWebSettings *defaultSettings = QWebSettings::globalSettings(); - QString standardFontFamily = defaultSettings->fontFamily(QWebSettings::StandardFont); - int standardFontSize = defaultSettings->fontSize(QWebSettings::DefaultFontSize); - QFont standardFont = QFont(standardFontFamily, standardFontSize); - standardFont = qVariantValue<QFont>(settings.value(QLatin1String("standardFont"), standardFont)); - defaultSettings->setFontFamily(QWebSettings::StandardFont, standardFont.family()); - defaultSettings->setFontSize(QWebSettings::DefaultFontSize, standardFont.pointSize()); - - QString fixedFontFamily = defaultSettings->fontFamily(QWebSettings::FixedFont); - int fixedFontSize = defaultSettings->fontSize(QWebSettings::DefaultFixedFontSize); - QFont fixedFont = QFont(fixedFontFamily, fixedFontSize); - fixedFont = qVariantValue<QFont>(settings.value(QLatin1String("fixedFont"), fixedFont)); - defaultSettings->setFontFamily(QWebSettings::FixedFont, fixedFont.family()); - defaultSettings->setFontSize(QWebSettings::DefaultFixedFontSize, fixedFont.pointSize()); - - defaultSettings->setAttribute(QWebSettings::JavascriptEnabled, settings.value(QLatin1String("enableJavascript"), true).toBool()); - defaultSettings->setAttribute(QWebSettings::PluginsEnabled, settings.value(QLatin1String("enablePlugins"), true).toBool()); + import qt.gui.QMessageBox; + + void quitBrowser() + { + clean(); + int tabCount = 0; + for (int i = 0; i < m_mainWindows.count(); ++i) { + tabCount =+ m_mainWindows.at(i).tabWidget().count(); + } - QUrl url = settings.value(QLatin1String("userStyleSheet")).toUrl(); - defaultSettings->setUserStyleSheetUrl(url); - - settings.endGroup(); -} - - bool isTheOnlyBrowser() const -{ - return (m_localServer != 0); -} + if (tabCount > 1) { + int ret = QMessageBox.warning(mainWindow(), QString(), + tr("There are %1 windows and %2 tabs open\n" + "Do you want to quit anyway?").arg(m_mainWindows.count()).arg(tabCount), + QMessageBox.Yes | QMessageBox.No, + QMessageBox.No); + if (ret == QMessageBox.No) + return; + } - BrowserMainWindow *mainWindow() -{ - clean(); - if (m_mainWindows.isEmpty()) - newMainWindow(); - return m_mainWindows[0]; -} - - QList<BrowserMainWindow*> mainWindows() -{ - clean(); - QList<BrowserMainWindow*> list; - for (int i = 0; i < m_mainWindows.count(); ++i) - list.append(m_mainWindows.at(i)); - return list; + exit(0); + } + + void lastWindowClosed() + { + clean(); + BrowserMainWindow mw = new BrowserMainWindow; + mw.slotHome(); + m_mainWindows.prepend(mw); + } } - QIcon icon(const QUrl &url) const -{ - QIcon icon = QWebSettings::iconForUrl(url); - if (!icon.isNull()) - return icon.pixmap(16, 16); - if (m_defaultIcon.isNull()) - m_defaultIcon = QIcon(QLatin1String(":defaulticon.png")); - return m_defaultIcon.pixmap(16, 16); -} - - void saveSession() -{ - QWebSettings *globalSettings = QWebSettings::globalSettings(); - if (globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled)) - return; - - clean(); - - QSettings settings; - settings.beginGroup(QLatin1String("sessions")); +private: - QByteArray data; - QBuffer buffer(&data); - QDataStream stream(&buffer); - buffer.open(QIODevice::ReadWrite); - - stream << m_mainWindows.count(); - for (int i = 0; i < m_mainWindows.count(); ++i) - stream << m_mainWindows.at(i)->saveState(); - settings.setValue(QLatin1String("lastSession"), data); - settings.endGroup(); -} - - bool canRestoreSession() const -{ - return !m_lastSession.isEmpty(); -} - - static HistoryManager *historyManager() -{ - if (!s_historyManager) { - s_historyManager = new HistoryManager(); - QWebHistoryInterface::setDefaultInterface(s_historyManager); - } - return s_historyManager; -} + /*! + Any actions that can be delayed until the window is visible + */ + void postLaunch() + { + QString directory = QDesktopServices.storageLocation(QDesktopServices.DataLocation); + if (directory.isEmpty()) + directory = QDir.homePath() ~ QLatin1String("/.") ~ QCoreApplication.applicationName(); + QWebSettings.setIconDatabasePath(directory); - static CookieJar *cookieJar() -{ - return (CookieJar*)networkAccessManager()->cookieJar(); -} - static DownloadManager *downloadManager() -{ - if (!s_downloadManager) { - s_downloadManager = new DownloadManager(); - } - return s_downloadManager; -} - + setWindowIcon(QIcon(QLatin1String(":browser.svg"))); - static NetworkAccessManager *networkAccessManager() -{ - if (!s_networkAccessManager) { - s_networkAccessManager = new NetworkAccessManager(); - s_networkAccessManager->setCookieJar(new CookieJar); - } - return s_networkAccessManager; -} - - - static BookmarksManager *bookmarksManager() -{ - if (!s_bookmarksManager) { - s_bookmarksManager = new BookmarksManager; - } - return s_bookmarksManager; -} - + loadSettings(); -version(Q_WS_MAC) { -bool event(QEvent* event) -{ - switch (event->type()) { - case QEvent::ApplicationActivate: { - clean(); - if (!m_mainWindows.isEmpty()) { - BrowserMainWindow *mw = mainWindow(); - if (mw && !mw->isMinimized()) { - mainWindow()->show(); - } - return true; - } - } - case QEvent::FileOpen: - if (!m_mainWindows.isEmpty()) { - mainWindow()->loadPage(static_cast<QFileOpenEvent *>(event)->file()); - return true; - } - default: - break; - } - return QApplication::event(event); -} -} - -public slots: - BrowserMainWindow *newMainWindow() -{ - BrowserMainWindow *browser = new BrowserMainWindow(); - m_mainWindows.prepend(browser); - browser->show(); - return browser; -} + // newMainWindow() needs to be called in main() for this to happen + if (m_mainWindows.count() > 0) { + QStringList args = QCoreApplication.arguments(); + if (args.count() > 1) + mainWindow().loadPage(args.last()); + else + mainWindow().slotHome(); + } + BrowserApplication.historyManager(); + } - void restoreLastSession() -{ - QList<QByteArray> windows; - QBuffer buffer(&m_lastSession); - QDataStream stream(&buffer); - buffer.open(QIODevice::ReadOnly); - int windowCount; - stream >> windowCount; - for (int i = 0; i < windowCount; ++i) { - QByteArray windowState; - stream >> windowState; - windows.append(windowState); - } - for (int i = 0; i < windows.count(); ++i) { - BrowserMainWindow *newWindow = 0; - if (m_mainWindows.count() == 1 - && mainWindow()->tabWidget()->count() == 1 - && mainWindow()->currentTab()->url() == QUrl()) { - newWindow = mainWindow(); - } else { - newWindow = newMainWindow(); - } - newWindow->restoreState(windows.at(i)); - } -} - - -version(Q_WS_MAC) { -import QtGui.QMessageBox; -void BrowserApplication::quitBrowser() -{ - clean(); - int tabCount = 0; - for (int i = 0; i < m_mainWindows.count(); ++i) { - tabCount =+ m_mainWindows.at(i)->tabWidget()->count(); - } - - if (tabCount > 1) { - int ret = QMessageBox::warning(mainWindow(), QString(), - tr("There are %1 windows and %2 tabs open\n" - "Do you want to quit anyway?").arg(m_mainWindows.count()).arg(tabCount), - QMessageBox::Yes | QMessageBox::No, - QMessageBox::No); - if (ret == QMessageBox::No) - return; - } - - exit(0); -} -} + void openUrl( QUrl url) + { + mainWindow().loadPage(url.toString()); + } -version(Q_WS_MAC) { -void lastWindowClosed() -{ - clean(); - BrowserMainWindow *mw = new BrowserMainWindow; - mw->slotHome(); - m_mainWindows.prepend(mw); -} -} - - -private slots: - -/*! - Any actions that can be delayed until the window is visible - */ -void postLaunch() -{ - QString directory = QDesktopServices::storageLocation(QDesktopServices::DataLocation); - if (directory.isEmpty()) - directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName(); - QWebSettings::setIconDatabasePath(directory); - - setWindowIcon(QIcon(QLatin1String(":browser.svg"))); - - loadSettings(); - - // newMainWindow() needs to be called in main() for this to happen - if (m_mainWindows.count() > 0) { - QStringList args = QCoreApplication::arguments(); - if (args.count() > 1) - mainWindow()->loadPage(args.last()); - else - mainWindow()->slotHome(); - } - BrowserApplication::historyManager(); -} - - void openUrl(const QUrl &url) -{ - mainWindow()->loadPage(url.toString()); -} - - void newLocalSocketConnection(); -{ - QLocalSocket *socket = m_localServer->nextPendingConnection(); - if (!socket) - return; - socket->waitForReadyRead(1000); - QTextStream stream(socket); - QString url; - stream >> url; - if (!url.isEmpty()) { - QSettings settings; - settings.beginGroup(QLatin1String("general")); - int openLinksIn = settings.value(QLatin1String("openLinksIn"), 0).toInt(); - settings.endGroup(); - if (openLinksIn == 1) - newMainWindow(); - else - mainWindow()->tabWidget()->newTab(); - openUrl(url); - } - delete socket; - mainWindow()->raise(); - mainWindow()->activateWindow(); -} + void newLocalSocketConnection() + { + QLocalSocket socket = m_localServer.nextPendingConnection(); + if (!socket) + return; + socket.waitForReadyRead(1000); + QTextStream stream(socket); + QString url; + stream >> url; + if (!url.isEmpty()) { + QSettings settings; + settings.beginGroup(QLatin1String("general")); + int openLinksIn = settings.value(QLatin1String("openLinksIn"), 0).toInt(); + settings.endGroup(); + if (openLinksIn == 1) + newMainWindow(); + else + mainWindow().tabWidget().newTab(); + openUrl(url); + } + delete socket; + mainWindow().raise(); + mainWindow().activateWindow(); + } private: - void clean() -{ - // cleanup any deleted main windows first - for (int i = m_mainWindows.count() - 1; i >= 0; --i) - if (m_mainWindows.at(i).isNull()) - m_mainWindows.removeAt(i); -} + + void clean() + { + // cleanup any deleted main windows first + for (int i = m_mainWindows.count() - 1; i >= 0; --i) + if (m_mainWindows.at(i).isNull()) + m_mainWindows.removeAt(i); + } -void installTranslator(const QString &name) -{ - QTranslator *translator = new QTranslator(this); - translator->load(name, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - QApplication::installTranslator(translator); + void installTranslator(QString name) + { + QTranslator translator = new QTranslator(this); + translator.load(name, QLibraryInfo.location(QLibraryInfo.TranslationsPath)); + QApplication.installTranslator(translator); + } + + static HistoryManager s_historyManager; + static DownloadManager s_downloadManager; + static NetworkAccessManager s_networkAccessManager; + static BookmarksManager s_bookmarksManager; + + QPointer!(BrowserMainWindow)[] m_mainWindows; + QLocalServer m_localServer; + QByteArray m_lastSession; + QIcon m_defaultIcon; } - - static HistoryManager *s_historyManager; - static DownloadManager *s_downloadManager; - static NetworkAccessManager *s_networkAccessManager; - static BookmarksManager *s_bookmarksManager; - - QList<QPointer<BrowserMainWindow> > m_mainWindows; - QLocalServer *m_localServer; - QByteArray m_lastSession; - mutable QIcon m_defaultIcon; -}; - -} -