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