1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the demonstration applications of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL21$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** $QT_END_LICENSE$ 31 ** 32 ****************************************************************************/ 33 34 #ifndef BROWSERAPPLICATION_H 35 #define BROWSERAPPLICATION_H 36 37 #include <QtWidgets/QApplication> 38 39 #include <QtCore/QPointer> 40 #include <QtCore/QUrl> 41 42 #include <QtGui/QIcon> 43 44 QT_BEGIN_NAMESPACE 45 class QLocalServer; 46 QT_END_NAMESPACE 47 48 class BookmarksManager; 49 class BrowserMainWindow; 50 class CookieJar; 51 class DownloadManager; 52 class HistoryManager; 53 class NetworkAccessManager; 54 class BrowserApplication : public QApplication 55 { 56 Q_OBJECT 57 58 public: 59 BrowserApplication(int &argc, char **argv); 60 ~BrowserApplication(); 61 static BrowserApplication *instance(); 62 void loadSettings(); 63 64 bool isTheOnlyBrowser() const; 65 bool isCorrectlyInitialized() const; 66 BrowserMainWindow *mainWindow(); 67 QList<BrowserMainWindow*> mainWindows(); 68 QIcon icon(const QUrl &url) const; 69 70 void saveSession(); 71 bool canRestoreSession() const; 72 73 static HistoryManager *historyManager(); 74 static CookieJar *cookieJar(); 75 static DownloadManager *downloadManager(); 76 static NetworkAccessManager *networkAccessManager(); 77 static BookmarksManager *bookmarksManager(); 78 79 #if defined(Q_OS_OSX) 80 bool event(QEvent *event); 81 #endif 82 83 public slots: 84 BrowserMainWindow *newMainWindow(); 85 void restoreLastSession(); 86 #if defined(Q_OS_OSX) 87 void lastWindowClosed(); 88 void quitBrowser(); 89 #endif 90 91 private slots: 92 void postLaunch(); 93 void openUrl(const QUrl &url); 94 void newLocalSocketConnection(); 95 96 private: 97 void clean(); 98 void installTranslator(const QString &name); 99 100 static HistoryManager *s_historyManager; 101 static DownloadManager *s_downloadManager; 102 static NetworkAccessManager *s_networkAccessManager; 103 static BookmarksManager *s_bookmarksManager; 104 105 QList<QPointer<BrowserMainWindow> > m_mainWindows; 106 QLocalServer *m_localServer; 107 QByteArray m_lastSession; 108 QString m_initialUrl; 109 bool m_correctlyInitialized; 110 111 mutable QIcon m_defaultIcon; 112 }; 113 114 #endif // BROWSERAPPLICATION_H 115 116