Miam-Player  0.8.0
A nice music player
playlist.h
Go to the documentation of this file.
1 #ifndef PLAYLIST_H
2 #define PLAYLIST_H
3 
4 #include <QMediaPlaylist>
5 #include <QMenu>
6 #include <QTableView>
7 
8 #include "playlistmodel.h"
9 #include "model/trackdao.h"
10 
11 #include <mediaplayer.h>
13 
21 class MIAMTABPLAYLISTS_LIBRARY Playlist : public QTableView
22 {
23  Q_OBJECT
24 
25 private:
26  MediaPlayer *_mediaPlayer;
27 
29  QMenu *_trackProperties;
30 
32  PlaylistModel *_playlistModel;
33 
34  QPoint _dragStartPosition;
35 
37  QModelIndexList _previouslySelectedRows;
38 
40  bool _isDragging;
41 
42  uint _hash;
43 
44  uint _id;
45 
46  Q_ENUMS(Columns)
47 
48 public:
49  enum Columns{COL_TRACK_NUMBER = 0,
50  COL_TITLE = 1,
51  COL_ALBUM = 2,
52  COL_LENGTH = 3,
53  COL_ARTIST = 4,
54  COL_RATINGS = 5,
55  COL_YEAR = 6,
56  COL_ICON = 7,
57  COL_TRACK_DAO = 8};
58 
59  explicit Playlist(MediaPlayer *mediaPlayer, QWidget *parent = nullptr);
60 
61  virtual ~Playlist();
62 
63  inline MediaPlayer *mediaPlayer() const { return _mediaPlayer; }
64 
65  inline MediaPlaylist *mediaPlaylist() const { return _playlistModel->mediaPlaylist(); }
66 
67  uint generateNewHash() const;
68 
69  inline uint id() const { return _id; }
70  bool isModified() const;
71 
72  void insertMedias(int rowIndex, const QList<QMediaContent> &medias);
73 
75  void insertMedias(int rowIndex, const QList<TrackDAO> &tracks);
76 
77  virtual QSize minimumSizeHint() const override;
78 
79  inline void forceDrop(QDropEvent *e) { this->dropEvent(e); }
80 
81  inline uint hash() const { return _hash; }
82  inline void setHash(uint hash) { _hash = hash; }
83  inline void setId(uint id) { _id = id; }
84 
85  inline PlaylistModel *model() const { return _playlistModel; }
86 
87 protected:
88 
90  virtual void contextMenuEvent(QContextMenuEvent *event) override;
91 
92  virtual void dragEnterEvent(QDragEnterEvent *event) override;
93  virtual void dragLeaveEvent(QDragLeaveEvent *event) override;
94  virtual void dragMoveEvent(QDragMoveEvent *event) override;
95  virtual void startDrag(Qt::DropActions) override;
96 
98  virtual void dropEvent(QDropEvent *event) override;
99 
101  virtual void keyPressEvent(QKeyEvent *event) override;
102 
103  virtual void mouseMoveEvent(QMouseEvent *event) override;
104 
106  virtual void mousePressEvent(QMouseEvent *event) override;
107 
109  virtual void paintEvent(QPaintEvent *e) override;
110 
111  virtual int sizeHintForColumn(int column) const override;
112 
113  virtual void showEvent(QShowEvent *event) override;
114 
115  virtual void wheelEvent(QWheelEvent *event) override;
116 
117 private:
118  void autoResize();
119 
120 public slots:
122  void moveTracksDown();
123 
125  void moveTracksUp();
126 
128  void removeSelectedTracks();
129 
130 signals:
131  void aboutToSendToTagEditor(const QList<QUrl> &tracks);
132 
133  void contentHasChanged();
134 
135  void selectionHasChanged(bool isEmpty);
136 };
137 
138 #endif // PLAYLIST_H
unsigned int uint
Definition: taglib.h:68
void setId(uint id)
Definition: playlist.h:83
uint hash() const
Definition: playlist.h:81
void forceDrop(QDropEvent *e)
Definition: playlist.h:79
The Playlist class is used to display tracks in the MainWindow class.
Definition: playlist.h:21
The MediaPlaylist class has been created to have a custom Random mode.
Definition: mediaplaylist.h:16
Columns
Definition: playlist.h:49
MediaPlaylist * mediaPlaylist() const
Definition: playlist.h:65
void setHash(uint hash)
Definition: playlist.h:82
MediaPlaylist * mediaPlaylist() const
Definition: playlistmodel.h:48
uint id() const
Definition: playlist.h:69
MediaPlayer * mediaPlayer() const
Definition: playlist.h:63
PlaylistModel * model() const
Definition: playlist.h:85
The MediaPlayer class is a central class which controls local and remote sources. ...
Definition: mediaplayer.h:22
#define MIAMTABPLAYLISTS_LIBRARY
Definition: miamtabplaylists_global.hpp:8
The PlaylistModel class is the underlying class for Playlist class.
Definition: playlistmodel.h:20