BibleTime
cbookmarkindex.h
Go to the documentation of this file.
1 /*********
2 *
3 * In the name of the Father, and of the Son, and of the Holy Spirit.
4 *
5 * This file is part of BibleTime's source code, https://bibletime.info/
6 *
7 * Copyright 1999-2021 by the BibleTime developers.
8 * The BibleTime source code is licensed under the GNU General Public License
9 * version 2.0.
10 *
11 **********/
12 
13 #pragma once
14 
15 #include <QTimer>
16 #include <QToolTip>
17 #include <QTreeView>
18 #include "../../backend/rendering/btinforendering.h"
19 
20 
21 class BTMimeData;
22 class BtBookmarksModel;
23 class CSwordModuleInfo;
24 class QAction;
25 class QDragLeaveEvent;
26 class QDragMoveEvent;
27 class QDropEvent;
28 class QMenu;
29 class QMouseEvent;
30 class QPaintEvent;
31 
32 /**
33 * The widget which manages all bookmarks.
34 *
35 * \author The BibleTime team
36 */
37 class CBookmarkIndex: public QTreeView {
38 
39  Q_OBJECT
40 
41 public: // types:
42 
43  enum MenuAction {
44  NewFolder = 0,
46 
53 
55 
59  };
60 
61 public: // methods:
62 
63  CBookmarkIndex(QWidget * const parent = nullptr);
64 
65 Q_SIGNALS:
66 
67  /** \brief Emitted when a module should be opened. */
69  void magInfoProvided(Rendering::InfoType const, QString const & data);
70 
71 protected: // methods:
72 
74 
75  void mouseReleaseEvent(QMouseEvent * event) override;
76  void paintEvent(QPaintEvent * event) override;
77  void dragEnterEvent(QDragEnterEvent * event) override;
78  void dragMoveEvent(QDragMoveEvent * event) override;
79  void dropEvent(QDropEvent * event) override;
80  void dragLeaveEvent(QDragLeaveEvent * event) override;
81  void startDrag(Qt::DropActions supportedActions) override;
82  void mouseMoveEvent(QMouseEvent * event) override;
83  void leaveEvent(QEvent * event) override;
84 
85 private: // methods:
86 
87  void deleteEntries();
88  bool enableAction(QModelIndex const & index,
89  MenuAction const type) const;
90 
91  bool hasBookmarksRecursively(QModelIndexList selected) const;
92 
93  void showExtraItem();
94  void hideExtraItem();
95 
96 private: // fields:
97 
99 
101  QTimer m_magTimer;
103  QModelIndex m_previousEventItem;
106  QPersistentModelIndex m_extraItem;
107 
108  /** Pointer to bookmarks model, added for convenience. */
110 
111 };
void createReadDisplayWindow(QList< CSwordModuleInfo * >, QString const &)
Emitted when a module should be opened.
void startDrag(Qt::DropActions supportedActions) override
QPoint m_dragMovementPosition
BtBookmarksModel * m_bookmarksModel
void mouseReleaseEvent(QMouseEvent *event) override
void leaveEvent(QEvent *event) override
QMimeData * dragObject()
int m_mouseReleaseEventModifiers
QPoint m_dragStartPosition
void dragEnterEvent(QDragEnterEvent *event) override
void mouseMoveEvent(QMouseEvent *event) override
void magInfoProvided(Rendering::InfoType const, QString const &data)
QModelIndex m_previousEventItem
void paintEvent(QPaintEvent *event) override
CBookmarkIndex(QWidget *const parent=nullptr)
QAction * m_actions[ActionCount]
void dragLeaveEvent(QDragLeaveEvent *event) override
void dragMoveEvent(QDragMoveEvent *event) override
bool hasBookmarksRecursively(QModelIndexList selected) const
QPersistentModelIndex m_extraItem
void dropEvent(QDropEvent *event) override
bool enableAction(QModelIndex const &index, MenuAction const type) const