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 <QVector>
31 #include <QThread>
32 
33 class MetaDataList;
38 class TagEdit : public QThread,
39  private SayonaraClass
40 {
41  Q_OBJECT
42 
43 signals:
44  void sig_progress(int);
45  void sig_metadata_received(const MetaDataList&);
46 
47 
48 public:
49  TagEdit(QObject* parent=nullptr);
50  TagEdit(const MetaDataList& v_md, QObject* parent=nullptr);
51  virtual ~TagEdit();
52 
53 
58  void undo(int idx);
59 
63  void undo_all();
64 
65 
71  const MetaData& get_metadata(int idx) const;
72 
73 
78  const MetaDataList& get_all_metadata() const;
79 
80 
85  void add_genre_to_metadata(const QString& genre);
86 
91  void remove_genre_from_metadata(const QString& genre);
92 
93 
98  int get_n_tracks() const;
99 
100 
106  void update_track(int idx, const MetaData& md);
107 
108 
113  void set_metadata(const MetaDataList& v_md);
114 
115 
120  void set_auto_notify(bool b);
121 
122 public slots:
123 
127  void commit();
128 
129 
130 
131 private:
132  MetaDataList _v_md; // the current metadata
133  MetaDataList _v_md_orig; // the original metadata
134  QVector<bool> _changed_md; // indicates if metadata at idx was changed
135 
136  LibraryDatabase* _ldb=nullptr; // database of LocalLibrary
137  bool _notify;
138 
139 private:
140 
146  void check_for_new_artists_and_albums(QStringList& new_artists, QStringList& new_albums);
147 
152  void insert_new_artists(const QStringList& artists);
153 
158  void insert_new_albums(const QStringList& albums);
159 
160 
164  void apply_artists_and_albums_to_md();
165 
166 
167  void run() override;
168 
169 private slots:
170  void thread_finished();
171 };
172 
173 #endif // TAGEDIT_H
The SayonaraClass class provides access to Settings and notifications.
Definition: SayonaraClass.h:31
The TagEdit class.
Definition: TagEdit.h:38
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
Definition: MetaDataList.h:46
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 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
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