summaryrefslogtreecommitdiff
path: root/src/panels/bookmarkspanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/panels/bookmarkspanel.cpp')
-rw-r--r--src/panels/bookmarkspanel.cpp179
1 files changed, 17 insertions, 162 deletions
diff --git a/src/panels/bookmarkspanel.cpp b/src/panels/bookmarkspanel.cpp
index 57796a23..ee7ae717 100644
--- a/src/panels/bookmarkspanel.cpp
+++ b/src/panels/bookmarkspanel.cpp
@@ -1,170 +1,25 @@
/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2009 by Nils Weigel <nehlsen at gmail dot com>
-* Copyright (C) 2010-2013 by Andrea Diamantini <adjam7 at gmail dot com>
-* Copyright (C) 2010 by Yoann Laissus <yoann dot laissus at gmail dot com>
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
+ * The rekonq project
+ * ============================================================
+ * SPDX-License-Identifier: GPL-3.0-only
+ * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net>
+ * ============================================================ */
+#include "bookmarkspanel.hpp"
+#include "bookmarks/bookmarkstreemodel.hpp"
-// Self Includes
-#include "bookmarkspanel.h"
-#include "bookmarkspanel.moc"
-
-// Auto Includes
-#include "rekonq.h"
-
-// Local Includes
-#include "bookmarkmanager.h"
-#include "bookmarkstreemodel.h"
-#include "bookmarkscontextmenu.h"
-#include "bookmarkowner.h"
-
-#include "paneltreeview.h"
-#include "urlfilterproxymodel.h"
-
-
-BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags)
- : UrlPanel(title, parent, flags)
- , _bkTreeModel(new BookmarksTreeModel(this))
- , _loadingState(false)
-{
- setObjectName("bookmarksPanel");
- setVisible(ReKonfig::showBookmarksPanel());
-
- panelTreeView()->setDragEnabled(true);
- panelTreeView()->setAcceptDrops(true);
- connect(_bkTreeModel, SIGNAL(bookmarksUpdated()), this, SLOT(loadFoldedState()));
-}
-
-
-BookmarksPanel::~BookmarksPanel()
-{
- ReKonfig::setShowBookmarksPanel(!isHidden());
-}
-
-
-void BookmarksPanel::loadFoldedState()
-{
- _loadingState = true;
- loadFoldedState(QModelIndex());
- _loadingState = false;
-}
-
-
-void BookmarksPanel::contextMenu(const QPoint &pos)
-{
- if (_loadingState)
- return;
-
- BookmarksContextMenu menu(bookmarkForIndex(panelTreeView()->indexAt(pos)),
- BookmarkManager::self()->manager(),
- BookmarkManager::self()->owner()
- );
-
- menu.exec(panelTreeView()->mapToGlobal(pos));
-}
-
-
-void BookmarksPanel::deleteBookmark()
-{
- QModelIndex index = panelTreeView()->currentIndex();
- if (_loadingState || !index.isValid())
- return;
-
- BookmarkManager::self()->owner()->deleteBookmark(bookmarkForIndex(index));
-}
-
-
-void BookmarksPanel::onCollapse(const QModelIndex &index)
-{
- if (_loadingState)
- return;
-
- bookmarkForIndex(index).internalElement().setAttribute("folded", "yes");
- emit expansionChanged();
-}
-
-
-void BookmarksPanel::onExpand(const QModelIndex &index)
+BookmarksPanel::BookmarksPanel(QWidget *parent) : QTreeView(parent)
{
- if (_loadingState)
- return;
-
- bookmarkForIndex(index).internalElement().setAttribute("folded", "no");
- emit expansionChanged();
-}
-
-
-void BookmarksPanel::setup()
-{
- UrlPanel::setup();
-
- connect(panelTreeView(), SIGNAL(delKeyPressed()), this, SLOT(deleteBookmark()));
- connect(panelTreeView(), SIGNAL(collapsed(QModelIndex)), this, SLOT(onCollapse(QModelIndex)));
- connect(panelTreeView(), SIGNAL(expanded(QModelIndex)), this, SLOT(onExpand(QModelIndex)));
-
- loadFoldedState();
+ connect(this, &QTreeView::activated, this, [this](const QModelIndex &index) {
+ auto *item = model()->item(index);
+ const auto url = item->data(BookmarksTreeItem::Href).toUrl();
+ emit loadUrl(url, rekonq::CurrentTab);
+ });
}
-
-void BookmarksPanel::loadFoldedState(const QModelIndex &root)
-{
- QAbstractItemModel *model = panelTreeView()->model();
- if (!model)
- return;
-
- int count = model->rowCount(root);
- QModelIndex index;
-
- for (int i = 0; i < count; ++i)
- {
- index = model->index(i, 0, root);
- if (index.isValid())
- {
- KBookmark bm = bookmarkForIndex(index);
- if (bm.isGroup())
- {
- panelTreeView()->setExpanded(index, bm.toGroup().isOpen());
- loadFoldedState(index);
- }
- }
- }
-}
-
-
-KBookmark BookmarksPanel::bookmarkForIndex(const QModelIndex &index)
-{
- if (!index.isValid())
- return KBookmark();
-
- const UrlFilterProxyModel *proxyModel = static_cast<const UrlFilterProxyModel*>(index.model());
- QModelIndex originalIndex = proxyModel->mapToSource(index);
-
- BtmItem *node = static_cast<BtmItem*>(originalIndex.internalPointer());
- return node->getBkm();
-}
-
-
-QAbstractItemModel* BookmarksPanel::model()
+BookmarkModel *BookmarksPanel::model() const
{
- return _bkTreeModel;
+ auto *m = qobject_cast<BookmarkModel *>(QTreeView::model());
+ Q_CHECK_PTR(m);
+ return m;
}