Moving download history management from HistoryManager to Application class
[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
33 // Rekonq Includes
34 #include "rekonq_defines.h"
35
36 // KDE Includes
37 #include <KUniqueApplication>
38 #include <KIcon>
39 #include <ThreadWeaver/Job>
40
41 // Qt Includes
42 #include <QWeakPointer>
43 #include <QList>
44
45 // Forward Declarations
46 class KIcon;
47 class KUrl;
48 class BookmarkProvider;
49 class HistoryManager;
50 class MainWindow;
51 class SessionManager;
52 class AdBlockManager;
53 class WebView;
54
55
56 typedef QList< QWeakPointer<MainWindow> > MainWindowList;
57
58
59 // ---------------------------------------------------------------------------------------------------------------
60
61
62 #include <QDateTime>
63
64
65 class DownloadItem
66 {
67 public:
68     DownloadItem() {}
69     explicit DownloadItem(const QString &srcUrl,
70                           const QString &destUrl,
71                           const QDateTime &d
72                          )
73             : srcUrlString(srcUrl)
74             , destUrlString(destUrl)
75             , dateTime(d)
76     {}
77
78     QString srcUrlString;
79     QString destUrlString;
80     QDateTime dateTime;
81 };
82
83
84 typedef QList<DownloadItem> DownloadList;
85
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     // DOWNLOADS MANAGEMENT METHODS
116     void addDownload(const QString &srcUrl, const QString &destUrl);
117     DownloadList downloads();
118     bool clearDownloadsHistory();
119
120 public slots:
121     /**
122      * Save application's configuration
123      *
124      * @see ReKonfig::self()->writeConfig();
125      */
126     void saveConfiguration() const;
127
128     void loadUrl(const KUrl& url,
129                  const Rekonq::OpenType& type = Rekonq::CurrentTab
130                 );
131
132     void newWindow();
133     void removeMainWindow(MainWindow *window);
134
135 private slots:
136
137     /**
138      * Any actions that can be delayed until the window is visible
139      */
140     void postLaunch();
141
142     void loadResolvedUrl(ThreadWeaver::Job *);
143
144     void updateConfiguration();
145
146 private:
147     static QWeakPointer<HistoryManager> s_historyManager;
148     static QWeakPointer<BookmarkProvider> s_bookmarkProvider;
149     static QWeakPointer<SessionManager> s_sessionManager;
150     static QWeakPointer<AdBlockManager> s_adblockManager;
151
152     MainWindowList m_mainWindows;
153 };
154
155 #endif // APPLICATION_H