Merge commit 'refs/merge-requests/94' of git://gitorious.org/rekonq/mainline into m94
[rekonq:nikhilms-mainline.git] / src / application.h
1 /* ============================================================
2 *
3 * This file is a part of the rekonq project
4 *
5 * Copyright (C) 2008-2010 by Andrea Diamantini <adjam7 at gmail dot com>
6 * Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com>
7 * Copyright (C) 2009-2010 by Lionel Chauvin <megabigbug@yahoo.fr>
8 *
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of
13 * the License or (at your option) version 3 or any later version
14 * accepted by the membership of KDE e.V. (or its successor approved
15 * by the membership of KDE e.V.), which shall act as a proxy
16 * defined in Section 14 of version 3 of the license.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
25 *
26 * ============================================================ */
27
28
29 #ifndef APPLICATION_H
30 #define APPLICATION_H
31
32
33 // Rekonq Includes
34 #include "rekonq_defines.h"
35
36 // KDE Includes
37 #include <KUniqueApplication>
38 #include <KIcon>
39 #include <ThreadWeaver/Job>
40
41 // Qt Includes
42 #include <QWeakPointer>
43 #include <QList>
44
45 // Forward Declarations
46 class KIcon;
47 class KUrl;
48 class BookmarkProvider;
49 class HistoryManager;
50 class MainWindow;
51 class SessionManager;
52 class AdBlockManager;
53 class WebView;
54
55
56 typedef QList< QWeakPointer<MainWindow> > MainWindowList;
57
58
59 /**
60   *
61   */
62 class REKONQ_TESTS_EXPORT Application : public KUniqueApplication
63 {
64     Q_OBJECT
65
66 public:
67     Application();
68     ~Application();
69     int newInstance();
70     static Application *instance();
71
72     MainWindow *mainWindow();
73     MainWindow *newMainWindow(bool withTab = true);
74     MainWindowList mainWindowList();
75
76     static KIcon icon(const KUrl &url);
77
78     static HistoryManager *historyManager();
79     static BookmarkProvider *bookmarkProvider();
80     static SessionManager *sessionManager();
81     static AdBlockManager *adblockManager();
82
83 public slots:
84     /**
85      * Save application's configuration
86      *
87      * @see ReKonfig::self()->writeConfig();
88      */
89     void saveConfiguration() const;
90
91     void loadUrl(const KUrl& url,
92                  const Rekonq::OpenType& type = Rekonq::CurrentTab
93                 );
94
95     void newWindow();
96     void removeMainWindow(MainWindow *window);
97
98 private slots:
99
100     /**
101      * Any actions that can be delayed until the window is visible
102      */
103     void postLaunch();
104
105     void loadResolvedUrl(ThreadWeaver::Job *);
106
107     void updateConfiguration();
108
109 private:
110     static QWeakPointer<HistoryManager> s_historyManager;
111     static QWeakPointer<BookmarkProvider> s_bookmarkProvider;
112     static QWeakPointer<SessionManager> s_sessionManager;
113     static QWeakPointer<AdBlockManager> s_adblockManager;
114
115     MainWindowList m_mainWindows;
116 };
117
118 #endif // APPLICATION_H