1 #pragma once
2 
3 #include <QDragEnterEvent>
4 #include <QDropEvent>
5 #include <QMouseEvent>
6 
7 #include "preferences/usersettings.h"
8 #include "track/track_decl.h"
9 #include "track/trackid.h"
10 #include "util/parented_ptr.h"
11 #include "widget/trackdroptarget.h"
12 #include "widget/wlabel.h"
13 
14 class TrackCollectionManager;
15 class WTrackMenu;
16 
17 class WTrackText : public WLabel, public TrackDropTarget {
18     Q_OBJECT
19   public:
20     WTrackText(
21             QWidget* pParent,
22             UserSettingsPointer pConfig,
23             TrackCollectionManager* pTrackCollectionManager,
24             const QString& group);
25     ~WTrackText() override;
26 
27   signals:
28     void trackDropped(const QString& fileName, const QString& group) override;
29     void cloneDeck(const QString& sourceGroup, const QString& targetGroup) override;
30 
31   public slots:
32     void slotTrackLoaded(TrackPointer track);
33     void slotLoadingTrack(TrackPointer pNewTrack, TrackPointer pOldTrack);
34 
35   protected:
36     void contextMenuEvent(QContextMenuEvent* event) override;
37 
38   private slots:
39     void slotTrackChanged(TrackId);
40 
41   private:
42     void dragEnterEvent(QDragEnterEvent *event) override;
43     void dropEvent(QDropEvent *event) override;
44     void mouseMoveEvent(QMouseEvent *event) override;
45     void mouseDoubleClickEvent(QMouseEvent* event) override;
46 
47     void updateLabel();
48 
49     const QString m_group;
50     UserSettingsPointer m_pConfig;
51     TrackPointer m_pCurrentTrack;
52     const parented_ptr<WTrackMenu> m_pTrackMenu;
53 };
54