1 #pragma once
2 
3 #include <QBasicTimer>
4 #include <QContextMenuEvent>
5 #include <QDragEnterEvent>
6 #include <QDragMoveEvent>
7 #include <QKeyEvent>
8 #include <QModelIndex>
9 #include <QPoint>
10 #include <QTimerEvent>
11 #include <QTreeView>
12 #include <QEvent>
13 
14 #include "widget/wbasewidget.h"
15 
16 class WLibrarySidebar : public QTreeView, public WBaseWidget {
17     Q_OBJECT
18   public:
19     explicit WLibrarySidebar(QWidget* parent = nullptr);
20 
21     void contextMenuEvent(QContextMenuEvent * event) override;
22     void dragMoveEvent(QDragMoveEvent * event) override;
23     void dragEnterEvent(QDragEnterEvent * event) override;
24     void dropEvent(QDropEvent * event) override;
25     void keyPressEvent(QKeyEvent* event) override;
26     void timerEvent(QTimerEvent* event) override;
27     void toggleSelectedItem();
28     bool isLeafNodeSelected();
29 
30   public slots:
31     void selectIndex(const QModelIndex&);
32     void slotSetFont(const QFont& font);
33 
34   signals:
35     void rightClicked(const QPoint&, const QModelIndex&);
36 
37   protected:
38     bool event(QEvent* pEvent) override;
39 
40   private:
41     QBasicTimer m_expandTimer;
42     QModelIndex m_hoverIndex;
43 };
44