Some changes ported for merge to mainline (bookmarks & links handling related)
[rekonq:nikhilms-mainline.git] / src / application.h
1 /* ============================================================
2 *
3 * This file is a part of the rekonq project
4 *
5 * Copyright (C) 2008 by Andrea Diamantini <adjam7 at gmail dot com>
6 * Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com>
7 *
8 *
9 * This program is free software; you can redistribute it
10 * and/or modify it under the terms of the GNU General
11 * Public License as published by the Free Software Foundation;
12 * either version 2, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * ============================================================ */
20
21
22
23 #ifndef APPLICATION_H
24 #define APPLICATION_H
25
26 // Qt Includes
27 #include <QPointer>
28
29 // KDE Includes
30 #include <KUniqueApplication>
31 #include <KCmdLineArgs>
32 #include <KIcon>
33 #include <KUrl>
34 #include <KJob>
35 #include <kio/job.h>
36 #include <kio/jobclasses.h>
37
38
39 // Forward Declarations
40 class KIcon;
41 class KUrl;
42 class BookmarkProvider;
43 class CookieJar;
44 class DownloadManager;
45 class HistoryManager;
46 class MainWindow;
47 class NetworkAccessManager;
48 class WebView;
49
50 namespace Rekonq {
51     /**
52      * @short Open link options
53      * Defferent modes of opening new tab
54      */
55     enum OpenType {
56         Default,    ///< open url according to users settings
57         Current,    ///< open url in current tab
58         New,        ///< open url in new tab and make it current
59         Background  ///< open url in new tab in background
60     };
61 }
62
63 /**
64   *
65   */
66 class Application : public KUniqueApplication
67 {
68     Q_OBJECT
69
70 public:
71     Application();
72     ~Application();
73     int newInstance();
74     static Application *instance();
75
76     MainWindow *mainWindow();
77     WebView* newWebView(bool makeCurrent = true);
78
79     KIcon icon(const KUrl &url) const;
80
81     static HistoryManager *historyManager();
82     static CookieJar *cookieJar();
83     static NetworkAccessManager *networkAccessManager();
84     static DownloadManager *downloadManager();
85     static BookmarkProvider *bookmarkProvider();
86
87 signals:
88     void openUrl(const KUrl &url, Rekonq::OpenType type=Rekonq::Current);
89
90 public slots:
91     /**
92      * Save application's configuration
93      * @see ReKonfig::self()->writeConfig();
94      */
95     void slotSaveConfiguration() const;
96
97
98 private slots:
99
100     /**
101      * Any actions that can be delayed until the window is visible
102      */
103     void postLaunch();
104
105 private:
106     static QPointer<HistoryManager> s_historyManager;
107     static QPointer<NetworkAccessManager> s_networkAccessManager;
108     static QPointer<DownloadManager> s_downloadManager;
109     static QPointer<BookmarkProvider> s_bookmarkProvider;
110
111     QPointer<MainWindow> m_mainWindow;
112 };
113
114 #endif // APPLICATION_H