File indexing completed on 2024-04-28 15:51:41

0001 /*
0002     SPDX-FileCopyrightText: 2006 Pino Toscano <pino@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef BOOKMARKLIST_H
0008 #define BOOKMARKLIST_H
0009 
0010 #include <qwidget.h>
0011 
0012 #include "core/observer.h"
0013 
0014 class QAction;
0015 class QCheckBox;
0016 class QToolButton;
0017 class QTreeWidget;
0018 class QTreeWidgetItem;
0019 class KTreeWidgetSearchLine;
0020 class QUrl;
0021 class BookmarkItem;
0022 class FileItem;
0023 
0024 namespace Okular
0025 {
0026 class Document;
0027 }
0028 
0029 class BookmarkList : public QWidget, public Okular::DocumentObserver
0030 {
0031     Q_OBJECT
0032 
0033 public:
0034     explicit BookmarkList(Okular::Document *document, QWidget *parent = nullptr);
0035     ~BookmarkList() override;
0036 
0037     // inherited from DocumentObserver
0038     void notifySetup(const QVector<Okular::Page *> &pages, int setupFlags) override;
0039 
0040     void setAddBookmarkAction(QAction *addBookmarkAction);
0041 
0042 private Q_SLOTS:
0043     void slotShowAllBookmarks(bool);
0044     void slotExecuted(QTreeWidgetItem *item);
0045     void slotChanged(QTreeWidgetItem *item);
0046     void slotContextMenu(const QPoint p);
0047     void slotBookmarksChanged(const QUrl &url);
0048 
0049 private:
0050     void rebuildTree(bool showAll);
0051     void goTo(BookmarkItem *item);
0052     void selectiveUrlUpdate(const QUrl &url, QTreeWidgetItem *&item);
0053     QTreeWidgetItem *itemForUrl(const QUrl &url) const;
0054     void contextMenuForBookmarkItem(const QPoint p, BookmarkItem *bmItem);
0055     void contextMenuForFileItem(const QPoint p, FileItem *fItem);
0056 
0057     Okular::Document *m_document;
0058     QTreeWidget *m_tree;
0059     KTreeWidgetSearchLine *m_searchLine;
0060     QCheckBox *m_showForAllDocumentsCheckbox;
0061     QTreeWidgetItem *m_currentDocumentItem;
0062     QToolButton *m_showAllToolButton;
0063 };
0064 
0065 #endif