Managing user tab open settings. Step 2
[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
51 namespace Rekonq
52 {
53     /**
54      * @short Open link options
55      * Different modes of opening new tab
56      */
57     enum OpenType
58     {
59         Default,    ///< open url according to users settings
60         New,        ///< open url in new tab and make it current
61         Background  ///< open url in new tab in background
62     };
63 }
64
65
66 /**
67   *
68   */
69 class Application : public KUniqueApplication
70 {
71     Q_OBJECT
72
73 public:
74     Application();
75     ~Application();
76     int newInstance();
77     static Application *instance();
78
79     MainWindow *mainWindow();
80     WebView* newWebView(Rekonq::OpenType type = Rekonq::Default);
81
82     KIcon icon(const KUrl &url) const;
83
84     static HistoryManager *historyManager();
85     static CookieJar *cookieJar();
86     static NetworkAccessManager *networkAccessManager();
87     static DownloadManager *downloadManager();
88     static BookmarkProvider *bookmarkProvider();
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
106 private:
107     static QPointer<HistoryManager> s_historyManager;
108     static QPointer<NetworkAccessManager> s_networkAccessManager;
109     static QPointer<DownloadManager> s_downloadManager;
110     static QPointer<BookmarkProvider> s_bookmarkProvider;
111
112     QPointer<MainWindow> m_mainWindow;
113 };
114
115 #endif // APPLICATION_H