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