diff options
author | aqua <aqua@iserlohn-fortress.net> | 2022-08-15 14:25:29 +0300 |
---|---|---|
committer | aqua <aqua@iserlohn-fortress.net> | 2022-09-14 08:51:09 +0300 |
commit | d9802226e443ecd7a7062fd7a0fb320a183e341f (patch) | |
tree | 1cfd97905fa7ba4de4beca9802ba749d62b5cc4e /src/bookmarks/bookmarkmanager.cpp | |
parent | Import BookmarkModel from poi (diff) | |
download | rekonq-d9802226e443ecd7a7062fd7a0fb320a183e341f.tar.xz |
Migrate BookmarkManager
Diffstat (limited to 'src/bookmarks/bookmarkmanager.cpp')
-rw-r--r-- | src/bookmarks/bookmarkmanager.cpp | 324 |
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; } - +*/ |