Miam-Player  0.8.0
A nice music player
playlistdialog.h
Go to the documentation of this file.
1 #ifndef PLAYLISTDIALOG_H
2 #define PLAYLISTDIALOG_H
3 
4 #include <QDialog>
5 #include <QStackedLayout>
6 #include <QStandardItem>
7 
8 #include "ui_playlistdialog.h"
9 
10 #include <model/sqldatabase.h>
11 #include <tabplaylist.h>
12 
14 
21 {
22  Q_OBJECT
23 
24 private:
25  QLabel *_labelEmptyPreview;
26 
28  QStackedLayout *_stackLayout;
29 
31  QStandardItemModel *_unsavedPlaylistModel, *_savedPlaylistModel;
32 
33  QList<Playlist*> _playlists;
34  QMap<QStandardItem*, Playlist*> _unsaved;
35  QMap<QStandardItem*, PlaylistDAO> _saved;
36 
37  Q_ENUMS(PlaylistRoles)
38 
39 public:
40  enum PlaylistRoles { PlaylistID = Qt::UserRole + 1,
41  PlaylistModified = Qt::UserRole + 2};
42 
43  explicit PlaylistDialog(QWidget *parent = nullptr);
44 
45  inline void setPlaylists(const QList<Playlist*> &playlists) { _playlists = playlists; }
46 
48  virtual bool eventFilter(QObject *obj, QEvent *event) override;
49 
50 private:
51  void clearPreview(bool aboutToInsertItems = true);
52 
54  static QString convertNameToValidFileName(const QString &name);
55 
56 public slots:
58  virtual int exec() override;
59 
60 private slots:
62  void deleteSavedPlaylists();
63 
64  void dropAutoSavePlaylists(const QModelIndex &, int start, int);
65 
67  void exportSelectedPlaylist();
68 
70  void loadSelectedPlaylists();
71 
72  void populatePreviewFromSaved(const QItemSelection &, const QItemSelection &);
73 
74  void populatePreviewFromUnsaved(const QItemSelection &, const QItemSelection &);
75 
76  void renameItem(QStandardItem *item);
77 
79  void updatePlaylists();
80 
81 signals:
82  void aboutToLoadPlaylist(uint playlistId);
83  void aboutToSavePlaylist(Playlist *playlist, bool overwrite);
84  void aboutToRenamePlaylist(Playlist *playlist);
85  void aboutToRenameTab(const PlaylistDAO &dao);
86  void aboutToDeletePlaylist(uint playlistId);
87 };
88 
89 #endif // PLAYLISTDIALOG_H
The PlaylistDialog class can save, load and export playlists in m3u format.
Definition: playlistdialog.h:20
The Playlist class is used to display tracks in the MainWindow class.
Definition: playlist.h:21
Definition: ui_playlistdialog.h:188
The PlaylistDAO class is a simple wrapper which contains basic informations about a playlist...
Definition: playlistdao.h:12
PlaylistRoles
Definition: playlistdialog.h:40
void setPlaylists(const QList< Playlist *> &playlists)
Definition: playlistdialog.h:45
#define MIAMTABPLAYLISTS_LIBRARY
Definition: miamtabplaylists_global.hpp:8