summaryrefslogtreecommitdiff
path: root/src/bookmarks/bookmarkmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bookmarks/bookmarkmanager.cpp')
-rw-r--r--src/bookmarks/bookmarkmanager.cpp324
1 files changed, 103 insertions, 221 deletions
diff --git a/src/bookmarks/bookmarkmanager.cpp b/src/bookmarks/bookmarkmanager.cpp
index 1f406a04..b5077111 100644
--- a/src/bookmarks/bookmarkmanager.cpp
+++ b/src/bookmarks/bookmarkmanager.cpp
@@ -12,284 +12,166 @@
* Description: rekonq bookmarks system interface
* ============================================================ */
-// Self Includes
#include "bookmarkmanager.hpp"
-#include "bookmarkowner.h"
-#include "bookmarksmenu.h"
-#include "bookmarkstoolbar.h"
+#include <QCoreApplication>
#include <QFile>
-#include <QStandardPaths>
-#include <memory>
+#include <QMenu>
// ----------------------------------------------------------------------------------------------
+// Constructor and Destructor
-static std::unique_ptr<BookmarkManager> s_bookmarkManager = nullptr;
-
-BookmarkManager *BookmarkManager::self()
+BookmarkManager::BookmarkManager(const QString &bookmarksFile, QObject *parent)
+ : QObject(parent), m_model(new BookmarkModel(this))
{
- if (!s_bookmarkManager) { s_bookmarkManager = new BookmarkManager(qApp); }
- return *s_bookmarkManager;
-}
-
-
-// ----------------------------------------------------------------------------------------------
-
-BookmarkManager::BookmarkManager(QObject *parent) : QObject(parent)
-{
- m_manager = KBookmarkManager::userBookmarksManager();
- const auto bookmarksFile = QStandardPaths::locate(AppLocalDataLocation, QString::fromLatin1("bookmarks.xbel"));
-
- if (!QFile::exists(bookmarksFile))
- {
- kDebug() << "copying of defaultbookmarks.xbel ...";
-
- QString bookmarksDefaultPath = KStandardDirs::locate("appdata" , "defaultbookmarks.xbel");
- KBookmarkManager *tempManager = KBookmarkManager::managerForExternalFile(bookmarksDefaultPath);
-
- copyBookmarkGroup(tempManager->root(), rootGroup());
- m_manager->emitChanged();
- delete tempManager;
+ if (!bookmarksFile.isEmpty()) {
+ QFile bf(bookmarksFile);
+ if (bf.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ m_errors += m_model->load(&bf);
+ bf.close();
}
+ else
+ m_errors +=
+ tr("%1 Bookmarks file '%2' cannot be opened: %3").arg(__PRETTY_FUNCTION__, bookmarksFile, bf.errorString());
+ }
- connect(m_manager, SIGNAL(changed(QString,QString)), this, SLOT(slotBookmarksChanged()));
-
- // setup menu
- m_owner = new BookmarkOwner(m_manager, this);
- connect(m_owner, SIGNAL(openUrl(KUrl,Rekonq::OpenType)), this, SIGNAL(openUrl(KUrl,Rekonq::OpenType)));
-
- // bookmarks loading
- connect(this, SIGNAL(openUrl(KUrl,Rekonq::OpenType)), rApp, SLOT(loadUrl(KUrl,Rekonq::OpenType)));
-}
-
-
-BookmarkManager::~BookmarkManager()
-{
- delete m_manager;
-}
-
-
-void BookmarkManager::registerBookmarkBar(BookmarkToolBar *toolbar)
-{
- if (m_bookmarkToolBars.contains(toolbar))
- return;
-
- m_bookmarkToolBars.append(toolbar);
-}
-
-
-void BookmarkManager::removeBookmarkBar(BookmarkToolBar *toolbar)
-{
- m_bookmarkToolBars.removeOne(toolbar);
-}
-
+ // connect(m_manager, SIGNAL(changed(QString, QString)), this, SLOT(slotBookmarksChanged()));
-QAction* BookmarkManager::actionByName(const QString &name)
-{
- QAction *action = m_actionCollection->action(name);
- if (action)
- return action;
- return new QAction(this);
+ // bookmarks loading
+ // connect(this, SIGNAL(openUrl(KUrl, Rekonq::OpenType)), rApp, SLOT(loadUrl(KUrl, Rekonq::OpenType)));
}
+BookmarkManager::~BookmarkManager() { delete m_model; }
-KBookmarkGroup BookmarkManager::rootGroup()
+// ----------------------------------------------------------------------------------------------
+/*
+QList<Bookmark> BookmarkManager::find(const QString &text)
{
- return m_manager->root();
-}
+ BookmarkGroup list;
+ auto *root = m_model->item();
+ Q_CHECK_PTR(root);
-QList<KBookmark> BookmarkManager::find(const QString &text)
-{
- QList<KBookmark> list;
-
- KBookmarkGroup root = rootGroup();
- if (!root.isNull())
- for (KBookmark bookmark = root.first(); !bookmark.isNull(); bookmark = root.next(bookmark))
- find(&list, bookmark, text);
+ KBookmarkGroup root = rootGroup();
+ if (!root.isNull())
+ for (KBookmark bookmark = root.first(); !bookmark.isNull(); bookmark = root.next(bookmark))
+ find(&list, bookmark, text);
- return list;
+ return list;
}
-
KBookmark BookmarkManager::bookmarkForUrl(const KUrl &url)
{
- KBookmarkGroup root = rootGroup();
- if (root.isNull())
- return KBookmark();
+ KBookmarkGroup root = rootGroup();
+ if (root.isNull()) return KBookmark();
- return bookmarkForUrl(root, url);
+ return bookmarkForUrl(root, url);
}
-
void BookmarkManager::slotBookmarksChanged()
{
- Q_FOREACH(BookmarkToolBar * bookmarkToolBar, m_bookmarkToolBars)
- {
- if (bookmarkToolBar)
- {
- bookmarkToolBar->clear();
- fillBookmarkBar(bookmarkToolBar);
- }
+ Q_FOREACH (BookmarkToolBar *bookmarkToolBar, m_bookmarkToolBars) {
+ if (bookmarkToolBar) {
+ bookmarkToolBar->clear();
+ fillBookmarkBar(bookmarkToolBar);
}
+ }
- // NOTE with this signal, we should (eventual) update about:bookmarks page...
- emit bookmarksUpdated();
+ // NOTE with this signal, we should (eventual) update about:bookmarks page...
+ emit bookmarksUpdated();
}
-
KBookmark BookmarkManager::bookmarkCurrentPage(const KBookmark &bookmark)
{
- return m_owner->bookmarkCurrentPage(bookmark);
+ return m_owner->bookmarkCurrentPage(bookmark);
}
-
void BookmarkManager::fillBookmarkBar(BookmarkToolBar *toolBar)
{
- KBookmarkGroup root = m_manager->toolbar();
- if (root.isNull())
- return;
+ KBookmarkGroup root = m_manager->toolbar();
+ if (root.isNull()) return;
- for (KBookmark bookmark = root.first(); !bookmark.isNull(); bookmark = root.next(bookmark))
- {
- if (bookmark.isGroup())
- {
- KBookmarkActionMenu *menuAction = new KBookmarkActionMenu(bookmark.toGroup(), toolBar);
- menuAction->setDelayed(false);
- BookmarkMenu *bMenu = new BookmarkMenu(m_manager, m_owner, menuAction->menu(), bookmark.address());
- bMenu->setParent(menuAction->menu());
+ for (KBookmark bookmark = root.first(); !bookmark.isNull(); bookmark = root.next(bookmark)) {
+ if (bookmark.isGroup()) {
+ KBookmarkActionMenu *menuAction = new KBookmarkActionMenu(bookmark.toGroup(), toolBar);
+ menuAction->setDelayed(false);
+ BookmarkMenu *bMenu = new BookmarkMenu(m_manager, m_owner, menuAction->menu(), bookmark.address());
+ bMenu->setParent(menuAction->menu());
- connect(menuAction->menu(), SIGNAL(aboutToShow()), toolBar, SLOT(menuDisplayed()));
- connect(menuAction->menu(), SIGNAL(aboutToHide()), toolBar, SLOT(menuHidden()));
+ connect(menuAction->menu(), SIGNAL(aboutToShow()), toolBar, SLOT(menuDisplayed()));
+ connect(menuAction->menu(), SIGNAL(aboutToHide()), toolBar, SLOT(menuHidden()));
- toolBar->addAction(menuAction);
- toolBar->widgetForAction(menuAction)->installEventFilter(toolBar);
- }
- else if (bookmark.isSeparator())
- {
- toolBar->addSeparator();
- }
- else
- {
- KBookmarkAction *action = new KBookmarkAction(bookmark, m_owner, toolBar);
- action->setIcon(IconManager::self()->iconForUrl(KUrl(bookmark.url())));
- toolBar->addAction(action);
- toolBar->widgetForAction(action)->installEventFilter(toolBar);
- }
+ toolBar->addAction(menuAction);
+ toolBar->widgetForAction(menuAction)->installEventFilter(toolBar);
+ }
+ else if (bookmark.isSeparator()) {
+ toolBar->addSeparator();
+ }
+ else {
+ KBookmarkAction *action = new KBookmarkAction(bookmark, m_owner, toolBar);
+ action->setIcon(IconManager::self()->iconForUrl(KUrl(bookmark.url())));
+ toolBar->addAction(action);
+ toolBar->widgetForAction(action)->installEventFilter(toolBar);
}
+ }
}
-
void BookmarkManager::find(QList<KBookmark> *list, const KBookmark &bookmark, const QString &text)
{
- if (bookmark.isGroup())
- {
- KBookmarkGroup group = bookmark.toGroup();
- for (KBookmark bm = group.first(); !bm.isNull(); bm = group.next(bm))
- find(list, bm, text);
- }
- else
- {
- QStringList words = text.split(' ');
- bool matches = true;
- Q_FOREACH(const QString & word, words)
- {
- if (!bookmark.url().url().contains(word, Qt::CaseInsensitive)
- && !bookmark.fullText().contains(word, Qt::CaseInsensitive))
- {
- matches = false;
- break;
- }
- }
- if (matches)
- *list << bookmark;
+ if (bookmark.isGroup()) {
+ KBookmarkGroup group = bookmark.toGroup();
+ for (KBookmark bm = group.first(); !bm.isNull(); bm = group.next(bm)) find(list, bm, text);
+ }
+ else {
+ QStringList words = text.split(' ');
+ bool matches = true;
+ Q_FOREACH (const QString &word, words) {
+ if (!bookmark.url().url().contains(word, Qt::CaseInsensitive) &&
+ !bookmark.fullText().contains(word, Qt::CaseInsensitive)) {
+ matches = false;
+ break;
+ }
}
+ if (matches) *list << bookmark;
+ }
}
-
KBookmark BookmarkManager::bookmarkForUrl(const KBookmark &bookmark, const KUrl &url)
{
- KBookmark found;
-
- if (bookmark.isGroup())
- {
- KBookmarkGroup group = bookmark.toGroup();
- KBookmark bookmark = group.first();
-
- while (!bookmark.isNull() && found.isNull())
- {
- found = bookmarkForUrl(bookmark, url);
- bookmark = group.next(bookmark);
- }
- }
- else if (!bookmark.isSeparator() && bookmark.url() == url)
- {
- found = bookmark;
- }
-
- return found;
-}
+ KBookmark found;
+ if (bookmark.isGroup()) {
+ KBookmarkGroup group = bookmark.toGroup();
+ KBookmark bookmark = group.first();
-void BookmarkManager::copyBookmarkGroup(const KBookmarkGroup &groupToCopy, KBookmarkGroup destGroup)
-{
- KBookmark bookmark = groupToCopy.first();
- while (!bookmark.isNull())
- {
- if (bookmark.isGroup())
- {
- KBookmarkGroup newDestGroup = destGroup.createNewFolder(bookmark.text());
- if (bookmark.toGroup().isToolbarGroup())
- {
- newDestGroup.internalElement().setAttribute("toolbar", "yes");
- newDestGroup.setIcon("bookmark-toolbar");
- }
- copyBookmarkGroup(bookmark.toGroup(), newDestGroup);
- }
- else if (bookmark.isSeparator())
- {
- destGroup.createNewSeparator();
- }
- else
- {
- destGroup.addBookmark(bookmark.text(), bookmark.url());
- }
- bookmark = groupToCopy.next(bookmark);
+ while (!bookmark.isNull() && found.isNull()) {
+ found = bookmarkForUrl(bookmark, url);
+ bookmark = group.next(bookmark);
}
-}
-
-
-void BookmarkManager::slotEditBookmarks()
-{
- m_manager->slotEditBookmarks();
-}
+ }
+ else if (!bookmark.isSeparator() && bookmark.url() == url) {
+ found = bookmark;
+ }
-
-KBookmark BookmarkManager::findByAddress(const QString &address)
-{
- return m_manager->findByAddress(address);
-}
-
-
-void BookmarkManager::openFolderinTabs(const KBookmarkGroup &bm)
-{
- m_owner->openFolderinTabs(bm);
+ return found;
}
+void BookmarkManager::slotEditBookmarks() { m_manager->slotEditBookmarks(); }
-void BookmarkManager::emitChanged()
-{
- m_manager->emitChanged();
+void BookmarkManager::openFolderInTabs(const BookmarkGroup &group) {
+ for(const auto &bookmark : group) {
+ // TODO emit openUrl
+ }
}
-KActionMenu* BookmarkManager::bookmarkActionMenu(QWidget *parent)
+KActionMenu *BookmarkManager::bookmarkActionMenu(QWidget *parent)
{
- KMenu *menu = new KMenu(parent);
- KActionMenu *bookmarkActionMenu = new KActionMenu(menu);
- bookmarkActionMenu->setMenu(menu);
- bookmarkActionMenu->setText(i18n("&Bookmarks"));
- BookmarkMenu *bMenu = new BookmarkMenu(m_manager, m_owner, menu, m_actionCollection);
- bMenu->setParent(menu);
+ auto *menu = new QMenu(parent);
+ KActionMenu *bookmarkActionMenu = new KActionMenu(menu);
+ bookmarkActionMenu->setMenu(menu);
+ bookmarkActionMenu->setText(tr("&Bookmarks"));
+ BookmarkMenu *bMenu = new BookmarkMenu(m_manager, m_owner, menu, m_actionCollection);
+ bMenu->setParent(menu);
- return bookmarkActionMenu;
+ return bookmarkActionMenu;
}
-
+*/