start moving things..
[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 3, 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 // KDE Includes
27 #include <KUniqueApplication>
28 #include <KCmdLineArgs>
29 #include <KIcon>
30 #include <KUrl>
31 #include <KJob>
32 #include <kio/job.h>
33 #include <kio/jobclasses.h>
34
35 // Qt Includes
36 #include <QPointer>
37
38 // Forward Declarations
39 class KIcon;
40 class KUrl;
41 class BookmarkProvider;
42 class CookieJar;
43 class HistoryManager;
44 class MainWindow;
45 class NetworkAccessManager;
46 class WebView;
47
48
49 namespace Rekonq
50 {
51     /**
52      * @short Open link options
53      * Different modes of opening new tab
54      */
55     enum OpenType
56     {
57         Default,    ///< open url according to users settings
58         New,        ///< open url in new tab and make it current
59         Background  ///< open url in new tab in background
60     };
61
62     enum Notify
63     {
64         Success,    ///< url successfully (down)loaded
65         Error,      ///< url failed to (down)load
66         Download    ///< downloading url
67     }
68 }
69
70
71 /**
72   *
73   */
74 class Application : public KUniqueApplication
75 {
76     Q_OBJECT
77
78 public:
79     Application();
80     ~Application();
81     int newInstance();
82     static Application *instance();
83
84     MainWindow *mainWindow();
85     WebView *newWebView(Rekonq::OpenType type = Rekonq::Default);
86
87     KIcon icon(const KUrl &url) const;
88
89     void notify(const QString &msg, Rekonq::Notify status);
90
91     static KUrl guessUrlFromString(const QString &url);
92
93     static HistoryManager *historyManager();
94     static CookieJar *cookieJar();
95     static NetworkAccessManager *networkAccessManager();
96     static BookmarkProvider *bookmarkProvider();
97
98 public slots:
99     /**
100      * Save application's configuration
101      * @see ReKonfig::self()->writeConfig();
102      */
103     void slotSaveConfiguration() const;
104
105
106 private slots:
107
108     /**
109      * Any actions that can be delayed until the window is visible
110      */
111     void postLaunch();
112
113
114 private:
115     static QPointer<HistoryManager> s_historyManager;
116     static QPointer<NetworkAccessManager> s_networkAccessManager;
117     static QPointer<BookmarkProvider> s_bookmarkProvider;
118
119     QPointer<MainWindow> m_mainWindow;
120 };
121
122 #endif // APPLICATION_H