summaryrefslogtreecommitdiff
path: root/src/panels
diff options
context:
space:
mode:
authoraqua <aqua@iserlohn-fortress.net>2022-09-10 16:47:56 +0300
committeraqua <aqua@iserlohn-fortress.net>2022-09-14 08:51:10 +0300
commit3d8255c70e71e3d4d23a7c798c94b16ab7e970f6 (patch)
treef191d578d39640a7c01b8c0df974c453272ede55 /src/panels
parentMigrate BookmarkManager (diff)
downloadrekonq-3d8255c70e71e3d4d23a7c798c94b16ab7e970f6.tar.xz
Add Bookmarks panel
Diffstat (limited to 'src/panels')
-rw-r--r--src/panels/bookmarkspanel.cpp179
-rw-r--r--src/panels/bookmarkspanel.h93
-rw-r--r--src/panels/bookmarkspanel.hpp27
3 files changed, 44 insertions, 255 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;
}
diff --git a/src/panels/bookmarkspanel.h b/src/panels/bookmarkspanel.h
deleted file mode 100644
index 8c827c65..00000000
--- a/src/panels/bookmarkspanel.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* ============================================================
-*
-* 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/>.
-*
-* ============================================================ */
-
-
-#ifndef BOOKMARKS_PANEL_H
-#define BOOKMARKS_PANEL_H
-
-
-// Rekonq Includes
-#include "rekonq_defines.h"
-
-// Local Includes
-#include "urlpanel.h"
-
-// Forward Declarations
-class BookmarksTreeModel;
-
-class KBookmark;
-class QModelIndex;
-
-
-class REKONQ_TESTS_EXPORT BookmarksPanel : public UrlPanel
-{
- Q_OBJECT
-
-public:
- explicit BookmarksPanel(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0);
- ~BookmarksPanel();
-
-public Q_SLOTS:
- void loadFoldedState();
-
-Q_SIGNALS:
- void expansionChanged();
-
-private Q_SLOTS:
- void contextMenu(const QPoint &pos);
-
- virtual void contextMenuItem(const QPoint &pos)
- {
- contextMenu(pos);
- }
- virtual void contextMenuGroup(const QPoint &pos)
- {
- contextMenu(pos);
- }
- virtual void contextMenuEmpty(const QPoint &pos)
- {
- contextMenu(pos);
- }
-
- void deleteBookmark();
- void onCollapse(const QModelIndex &index);
- void onExpand(const QModelIndex &index);
-
-private:
- virtual void setup();
-
- void loadFoldedState(const QModelIndex &root);
-
- KBookmark bookmarkForIndex(const QModelIndex &index);
-
- virtual QAbstractItemModel* model();
-
- BookmarksTreeModel *_bkTreeModel;
- bool _loadingState;
-};
-
-#endif // BOOKMARKS_PANEL_H
diff --git a/src/panels/bookmarkspanel.hpp b/src/panels/bookmarkspanel.hpp
new file mode 100644
index 00000000..5961af7d
--- /dev/null
+++ b/src/panels/bookmarkspanel.hpp
@@ -0,0 +1,27 @@
+/* ============================================================
+ * The rekonq project
+ * ============================================================
+ * SPDX-License-Identifier: GPL-3.0-only
+ * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net>
+ * ============================================================ */
+
+#pragma once
+
+#include "rekonq.hpp"
+#include <QTreeView>
+
+class BookmarkModel;
+
+class BookmarksPanel : public QTreeView {
+ Q_OBJECT
+
+public:
+ explicit BookmarksPanel(QWidget *parent = nullptr);
+ ~BookmarksPanel() = default;
+
+signals:
+ void loadUrl(const QUrl &url, rekonq::OpenType type);
+
+private:
+ [[nodiscard]] BookmarkModel *model() const;
+};