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