/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef BROWSERAPPLICATION_H #define BROWSERAPPLICATION_H #include #include #include #include #include QT_BEGIN_NAMESPACE class QLocalServer; class QNetworkAccessManager; class QNetworkProxy; class QNetworkReply; class QWebEngineProfile; QT_END_NAMESPACE class BookmarksManager; class BrowserMainWindow; class CookieJar; class DownloadManager; class HistoryManager; class BrowserApplication : public QApplication { Q_OBJECT public: BrowserApplication(int &argc, char **argv); ~BrowserApplication(); static BrowserApplication *instance(); void loadSettings(); bool isTheOnlyBrowser() const; BrowserMainWindow *mainWindow(); QList mainWindows(); QIcon icon(const QUrl &url) const; QIcon defaultIcon() const; void saveSession(); bool canRestoreSession() const; bool privateBrowsing() const { return m_privateBrowsing; } void setLastAuthenticator(QAuthenticator *); void setLastProxyAuthenticator(QAuthenticator *); // TODO: Remove these functions (QTBUG-47967) static QByteArray authenticationKey(const QUrl &, const QString &); static QByteArray proxyAuthenticationKey(const QNetworkProxy &, const QString &); static QByteArray proxyAuthenticationKey(const QString &, const QString &, const QString &); static HistoryManager *historyManager(); static CookieJar *cookieJar(); static DownloadManager *downloadManager(); static QNetworkAccessManager *networkAccessManager(); static BookmarksManager *bookmarksManager(); #if defined(Q_OS_OSX) bool event(QEvent *event); #endif public slots: BrowserMainWindow *newMainWindow(); void restoreLastSession(); void lastWindowClosed(); void quitBrowser(); void setPrivateBrowsing(bool); void authenticationRequired(QNetworkReply *, QAuthenticator *); void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *); signals: void privateBrowsingChanged(bool); private slots: void postLaunch(); void openUrl(const QUrl &url); void newLocalSocketConnection(); private: void clean(); void installTranslator(const QString &name); static HistoryManager *s_historyManager; static DownloadManager *s_downloadManager; static QNetworkAccessManager *s_networkAccessManager; static BookmarksManager *s_bookmarksManager; QList > m_mainWindows; QLocalServer *m_localServer; QByteArray m_lastSession; QWebEngineProfile *m_privateProfile; bool m_privateBrowsing; mutable QIcon m_defaultIcon; QAuthenticator m_lastAuthenticator; QAuthenticator m_lastProxyAuthenticator; }; #endif // BROWSERAPPLICATION_H