Miam-Player  0.8.0
A nice music player
librarytreeview.h
Go to the documentation of this file.
1 #ifndef LIBRARYTREEVIEW_H
2 #define LIBRARYTREEVIEW_H
3 
4 #include <model/trackdao.h>
5 #include <model/sqldatabase.h>
6 #include <filehelper.h>
7 #include <settingsprivate.h>
8 #include <treeview.h>
9 
10 #include "libraryitemdelegate.h"
11 #include "libraryitemmodel.h"
12 
13 #include <QMenu>
14 #include <QSortFilterProxyModel>
15 #include <QStandardItemModel>
16 #include <QTimer>
17 #include "miamlibrary_global.hpp"
18 
20 class JumpToWidget;
23 class ArtistItem;
24 class AlbumItem;
25 class DiscItem;
26 class SeparatorItem;
27 class TrackItem;
28 class YearItem;
29 
37 {
38  Q_OBJECT
39 
40 private:
42  LibraryItemModel *_libraryModel;
43 
45  JumpToWidget *_jumpToWidget;
46 
48  QMap<AlbumItem*, QImage*> _expandedCovers;
49 
51  MiamSortFilterProxyModel *_proxyModel;
52 
53  LibraryItemDelegate *_delegate;
54 
55  QTranslator translator;
56 
57 public:
60  QMenu *properties;
61 
62  explicit LibraryTreeView(QWidget *parent = nullptr);
63 
64  virtual ~LibraryTreeView();
65 
66  const QImage *expandedCover(AlbumItem *album) const;
67 
69  virtual void findAll(const QModelIndex &index, QList<QUrl> *tracks) const override;
70 
71  inline JumpToWidget* jumpToWidget() const { return _jumpToWidget; }
72 
73  inline LibraryItemModel* model() const { return _libraryModel; }
74 
75 protected:
77  virtual void contextMenuEvent(QContextMenuEvent *event) override;
78 
80  virtual void keyboardSearch(const QString &search) override;
81 
82  virtual void keyPressEvent(QKeyEvent *event) override;
83 
84  virtual void keyReleaseEvent(QKeyEvent *event) override;
85 
86  virtual void paintEvent(QPaintEvent *) override;
87 
88 private:
90  int count(const QModelIndex &index) const;
91 
93  virtual int countAll(const QModelIndexList &indexes) const override;
94 
96  virtual void updateSelectedTracks() override;
97 
98 public slots:
100  void changeSortOrder();
101 
103  virtual void reset() override;
104 
105 private slots:
106  void endPopulateTree();
107 
108  void removeExpandedCover(const QModelIndex &index);
109 
110  void scrollToLetter(const QString &letter);
111 
112  void setExpandedCover(const QModelIndex &index);
113 
114  void updateViewProperty(Settings::ViewProperty vp, const QVariant &);
115 };
116 
117 #endif // LIBRARYTREEVIEW_H
The LibraryTreeView class is displaying tracks in a tree.
Definition: librarytreeview.h:36
ViewProperty
Definition: settings.h:32
virtual int countAll(const QModelIndexList &indexes) const =0
virtual void updateSelectedTracks()=0
The SeparatorItem class.
Definition: separatoritem.h:12
The YearItem class.
Definition: yearitem.h:13
The AlbumItem class.
Definition: albumitem.h:12
The LibraryItemDelegate class.
Definition: libraryitemdelegate.h:24
The TreeView class is the base class for displaying trees in the player.
Definition: treeview.h:14
The LibraryItemModel class is used to cache information from the database, in order to increase perfo...
Definition: libraryitemmodel.h:18
The ArtistItem class.
Definition: artistitem.h:12
QMenu * properties
Definition: librarytreeview.h:60
The TrackItem class.
Definition: trackitem.h:12
The JumpToWidget class displays letters which can be clicked to jump to a particular position in your...
Definition: jumptowidget.h:16
JumpToWidget * jumpToWidget() const
Definition: librarytreeview.h:71
#define MIAMLIBRARY_LIBRARY
Definition: miamlibrary_global.hpp:8
LibraryItemModel * model() const
Definition: librarytreeview.h:73
The LibraryFilterLineEdit class.
Definition: libraryfilterlineedit.h:19
The MiamSortFilterProxyModel class provides support for the MiamItemModel class.
Definition: miamsortfilterproxymodel.h:18
The LibraryFilterProxyModel class is used to filter Library by looking in all items.
Definition: libraryfilterproxymodel.h:18
virtual void findAll(const QModelIndex &index, QList< QUrl > *tracks) const =0
The DiscItem class.
Definition: discitem.h:12