Merge commit 'refs/merge-requests/2250' of git://gitorious.org/rekonq/mainline into...
[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 // Local Includes
33 #include "rekonqprivate_export.h"
34
35 // KDE Includes
36 #include <KUniqueApplication>
37 #include <KIcon>
38 #include <kio/job.h>
39 #include <kio/jobclasses.h>
40 #include <ThreadWeaver/Job>
41
42 // Qt Includes
43 #include <QWeakPointer>
44 #include <QList>
45
46 // Forward Declarations
47 class KIcon;
48 class KUrl;
49 class BookmarkProvider;
50 class HistoryManager;
51 class MainWindow;
52 class SessionManager;
53 class AdBlockManager;
54 class WebView;
55
56
57 typedef QList< QWeakPointer<MainWindow> > MainWindowList;
58
59
60 namespace Rekonq
61 {
62     /**
63      * @short notifying message status
64      * Different message status
65      */
66
67     enum Notify
68     {
69         Success,    ///< url successfully (down)loaded
70         Error,      ///< url failed to (down)load
71         Download,   ///< downloading url
72         Info        ///< information, (default)
73     };
74
75     /**
76      * @short Open link options
77      * Different modes of opening new tab
78      */
79     enum OpenType
80     {
81         CurrentTab,     ///< open url in current tab
82         SettingOpenTab, ///< open url according to users settings
83         NewCurrentTab,  ///< open url in new tab and make it current
84         NewBackTab,     ///< open url in new tab in background
85         NewWindow       ///< open url in new window
86     };
87
88 }
89
90
91 /**
92   *
93   */
94 class REKONQ_TESTS_EXPORT Application : public KUniqueApplication
95 {
96     Q_OBJECT
97
98 public:
99     Application();
100     ~Application();
101     int newInstance();
102     static Application *instance();
103
104     MainWindow *mainWindow();
105     MainWindow *newMainWindow(bool withTab = true);
106     MainWindowList mainWindowList();
107     
108     static KIcon icon(const KUrl &url);
109
110     static HistoryManager *historyManager();
111     static BookmarkProvider *bookmarkProvider();
112     static SessionManager *sessionManager();
113     static AdBlockManager *adblockManager();
114     
115 public slots:
116     /**
117      * Save application's configuration
118      *
119      * @see ReKonfig::self()->writeConfig();
120      */
121     void saveConfiguration() const;
122
123     void loadUrl( const KUrl& url,
124                   const Rekonq::OpenType& type = Rekonq::CurrentTab
125                 );
126
127     void newWindow();
128     void removeMainWindow(MainWindow *window);
129
130 private slots:
131
132     /**
133      * Any actions that can be delayed until the window is visible
134      */
135     void postLaunch();
136
137     void loadResolvedUrl(ThreadWeaver::Job *);
138     
139 private:
140     static QWeakPointer<HistoryManager> s_historyManager;
141     static QWeakPointer<BookmarkProvider> s_bookmarkProvider;
142     static QWeakPointer<SessionManager> s_sessionManager;
143     static QWeakPointer<AdBlockManager> s_adblockManager;
144     
145     MainWindowList m_mainWindows;
146 };
147
148 #endif // APPLICATION_H