1 /* GenreFetcher.h */ 2 3 /* Copyright (C) 2011-2020 Michael Lugmair (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 GENREFETCHER_H 24 #define GENREFETCHER_H 25 26 #include <QObject> 27 #include "Utils/Pimpl.h" 28 #include "Utils/SetFwd.h" 29 30 class LocalLibrary; 31 class Genre; 32 33 namespace Tagging 34 { 35 class Editor; 36 class UserOperations; 37 } 38 39 class GenreFetcher : 40 public QObject 41 { 42 Q_OBJECT 43 PIMPL(GenreFetcher) 44 45 signals: 46 void sigGenresFetched(); 47 void sigProgress(int progress); 48 void sigFinished(); 49 50 public: 51 explicit GenreFetcher(QObject* parent=nullptr); 52 ~GenreFetcher() override; 53 54 Util::Set<Genre> genres() const; 55 56 void applyGenreToMetadata(const MetaDataList& v_md, const Genre& genre); 57 void createGenre(const Genre& genre); 58 void deleteGenre(const Genre& genre); 59 void deleteGenres(const Util::Set<Genre>& genres); 60 void renameGenre(const Genre& oldGenre, const Genre& newGenre); 61 62 void set_local_library(LocalLibrary* local_library); 63 64 public slots: 65 void reloadGenres(); 66 67 private: 68 Tagging::UserOperations* initTagging(); 69 70 }; 71 72 #endif // GENREFETCHER_H 73