1/****************************************************************************
2**
3** Copyright (C) 2007 Urs Wolfer <uwolfer @ kde.org>
4**
5** This file is part of KDE.
6**
7** This program is free software; you can redistribute it and/or modify
8** it under the terms of the GNU General Public License as published by
9** the Free Software Foundation; either version 2 of the License, or
10** (at your option) any later version.
11**
12** This program is distributed in the hope that it will be useful,
13** but WITHOUT ANY WARRANTY; without even the implied warranty of
14** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15** GNU General Public License for more details.
16**
17** You should have received a copy of the GNU General Public License
18** along with this program; see the file COPYING. If not, write to
19** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20** Boston, MA 02110-1301, USA.
21**
22****************************************************************************/
23
24#ifndef BOOKMARKMANAGER_H
25#define BOOKMARKMANAGER_H
26
27#include "core/remoteview.h"
28
29#include <KBookmarkManager>
30
31class KActionCollection;
32class KBookmarkMenu;
33
34class MainWindow;
35
36class BookmarkManager : public QObject, public KBookmarkOwner
37{
38 Q_OBJECT
39
40public:
41 BookmarkManager(KActionCollection *collection, KMenu *menu, MainWindow *parent);
42 ~BookmarkManager();
43
44 virtual QString currentUrl() const;
45 virtual QString currentTitle() const;
46 virtual bool addBookmarkEntry() const;
47 virtual bool editBookmarkEntry() const;
48 virtual bool supportsTabs() const;
49 virtual QList<QPair<QString, QString> > currentBookmarkList() const;
50 void addHistoryBookmark(RemoteView *view);
51 void addManualBookmark(const QString &url, const QString &text);
52 KBookmarkManager* getManager();
53 // removes all bookmarks with url, possibly ignore the history folder and update it's title there if it's set
54 static void removeByUrl(KBookmarkManager *manager, const QString &url, bool ignoreHistory = false, const QString updateTitle = QString());
55 static void updateTitle(KBookmarkManager *manager, const QString &url, const QString &title);
56 // returns a QStringList for all bookmarks that point to this url using KBookmark::address()
57 static const QStringList findBookmarkAddresses(const KBookmarkGroup &group, const QString &url);
58
59signals:
60 void openUrl(const KUrl &url);
61
62private slots:
63 void openBookmark(const KBookmark &bm, Qt::MouseButtons, Qt::KeyboardModifiers);
64 void openFolderinTabs(const KBookmarkGroup &bookmarkGroup);
65
66private:
67 QString urlForView(RemoteView *view) const;
68 QString titleForUrl(const QString &url) const;
69
70 KBookmarkMenu *m_bookmarkMenu;
71 KBookmarkManager *m_manager;
72 KBookmarkGroup m_historyGroup;
73
74 MainWindow *m_mainWindow;
75};
76
77#endif
78