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