Sayonara Player
TagEdit.h
1 /* TagEdit.h */
2 
3 /* Copyright (C) 2011-2016 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 
22 
23 #ifndef TAGEDIT_H
24 #define TAGEDIT_H
25 
26 #include "Helper/Settings/SayonaraClass.h"
27 #include "Database/DatabaseHandler.h"
28 #include "Helper/MetaData/MetaDataList.h"
29 
30 #include <QList>
31 #include <QThread>
32 #include <QImage>
33 #include <QMap>
34 
35 class MetaDataList;
44 class TagEdit : public QThread,
45  private SayonaraClass
46 {
47  Q_OBJECT
48 
49 signals:
50  void sig_progress(int);
51  void sig_metadata_received(const MetaDataList&);
52 
53 
54 public:
55  TagEdit(QObject* parent=nullptr);
56  TagEdit(const MetaDataList& v_md, QObject* parent=nullptr);
57  virtual ~TagEdit();
58 
59 
64  void undo(int idx);
65 
69  void undo_all();
70 
71 
77  const MetaData& get_metadata(int idx) const;
78 
79 
84  const MetaDataList& get_all_metadata() const;
85 
86 
91  void add_genre_to_metadata(const QString& genre);
92 
97  void remove_genre_from_metadata(const QString& genre);
98 
99 
104  int get_n_tracks() const;
105 
106 
112  void update_track(int idx, const MetaData& md);
113 
119  void update_cover(int idx, const QImage& cover);
120 
125  void remove_cover(int idx);
126 
132  bool has_cover_replacement(int idx) const;
133 
139  bool is_id3v2_tag(int idx) const;
140 
141 
146  void set_metadata(const MetaDataList& v_md);
147 
148 
153  void set_auto_notify(bool b);
154 
155 public slots:
156 
160  void commit();
161 
162 
163 
164 private:
165  MetaDataList _v_md; // the current metadata
166  MetaDataList _v_md_orig; // the original metadata
167 
168  MetaDataList _v_md_before_change;
169  MetaDataList _v_md_after_change;
170  QList<bool> _changed_md; // indicates if metadata at idx was changed
171  QMap<int, QImage> _cover_map;
172 
173  LibraryDatabase* _ldb=nullptr; // database of LocalLibrary
174  bool _notify;
175 
176 private:
177 
183  void check_for_new_artists_and_albums(QStringList& new_artists, QStringList& new_albums);
184 
189  void insert_new_artists(const QStringList& artists);
190 
195  void insert_new_albums(const QStringList& albums);
196 
197 
201  void apply_artists_and_albums_to_md();
202 
203  void run() override;
204 
205 private slots:
206  void thread_finished();
207 };
208 
209 #endif // TAGEDIT_H
The SayonaraClass class provides access to Settings and notifications.
Definition: SayonaraClass.h:31
The TagEdit class Metadata has to be added using the set_metadata(const MetaDataList&) method...
Definition: TagEdit.h:44
void commit()
Commits changes to db.
void update_track(int idx, const MetaData &md)
writes changes to (changed) metadata for a specific track
Definition: MetaData.h:49
void set_metadata(const MetaDataList &v_md)
initializes the TagEdit object with a MetaDataList
bool is_id3v2_tag(int idx) const
checks, if the tracks&#39; tag is an id3v2 tag
Definition: MetaDataList.h:44
bool has_cover_replacement(int idx) const
does the user want to replace/add a cover
void undo_all()
undo changes for all tracks
void remove_genre_from_metadata(const QString &genre)
Removes genre from all (changed) metadata.
void add_genre_to_metadata(const QString &genre)
Add a genre to all (changed) metdata.
Definition: LibraryDatabase.h:35
void remove_cover(int idx)
remove_cover for a specific track
void set_auto_notify(bool b)
Send notification when finished committing.
void undo(int idx)
undo changes for a specific track
const MetaDataList & get_all_metadata() const
get all (changed) metadata
void update_cover(int idx, const QImage &cover)
update the cover for a specific track.
const MetaData & get_metadata(int idx) const
get the (changed) metadata for a specific index
int get_n_tracks() const
gets the number of tracks