Sayonara Player
LibraryGenreView.h
1 /* LibraryGenreView.h */
2 
3 /* Copyright (C) 2011-2017 Lucio Carreras
4  *
5  * This file is part of sayonara player
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11 
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16 
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef LIBRARYGENREVIEW_H
22 #define LIBRARYGENREVIEW_H
23 
24 #include <QTreeWidget>
25 #include "GUI/Helper/SayonaraWidget/SayonaraWidgetTemplate.h"
26 #include "Helper/Pimpl.h"
27 
28 class MetaDataList;
29 class TagEdit;
30 class TreeDelegate;
31 class QStringList;
32 
33 namespace SP
34 {
35  template<typename T>
36  class Tree;
37 }
38 
39 
41 
43  public SayonaraWidgetTemplate<QTreeWidget>
44 {
45  Q_OBJECT
46  PIMPL(LibraryGenreView)
47 
48 signals:
49  void sig_progress(const QString& message, int progress);
50  void sig_rename(const QString& genre, const QString& new_name);
51  void sig_delete(const QString& genre);
52 
53 public:
54  explicit LibraryGenreView(QWidget* parent=nullptr);
56 
57  QSize sizeHint() const override;
58  void reload_genres();
59  void reload_genres(const QStringList& additional_genres);
60  int get_row_count() const;
61 
62 
63 private:
64  void fill_list(const QStringList& genres);
65  void init_data(const QStringList& genres);
66  void insert_genres(QTreeWidgetItem* parent_item, GenreNode* node);
67  QTreeWidgetItem* find_genre(const QString& genre);
68 
69 private slots:
70  void update_genre_tags_finished();
71  void item_expanded(QTreeWidgetItem* item);
72  void item_collapsed(QTreeWidgetItem* item);
73 
74  void progress_changed(int progress);
75 
76  void new_pressed();
77  void rename_pressed();
78  void delete_pressed();
79 
80  void metadata_changed(const MetaDataList& v_md_old, const MetaDataList& v_md_new);
81  void metadata_deleted(const MetaDataList& v_md_deleted);
82 
83  void tree_action_toggled(bool b);
84 
85  void language_changed();
86 
87 
88 protected:
89  void keyPressEvent(QKeyEvent* e) override;
90  void dragEnterEvent(QDragEnterEvent* e) override;
91  void dragMoveEvent(QDragMoveEvent* e) override;
92  void dragLeaveEvent(QDragLeaveEvent* e) override;
93  void dropEvent(QDropEvent* e) override;
94  void contextMenuEvent(QContextMenuEvent* e) override;
95 };
96 
97 #endif // LIBRARYGENREVIEW_H
The MetaDataList class.
Definition: AbstractPlaylist.h:34
The TagEdit class Metadata has to be added using the set_metadata(const MetaDataList&) method...
Definition: TagEdit.h:41
Definition: LibraryGenreView.h:42
Template for Sayonara Widgets. This template is responsible for holding a reference to the settings a...
Definition: SayonaraWidgetTemplate.h:40
Definition: MetaDataList.h:39
The TreeDelegate class. Only used for size hinting.
Definition: TreeDelegate.h:30
The Tree class.
Definition: LibraryGenreView.h:36