1 /* TagExpression.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 #ifndef TAGEXPRESSION_H 22 #define TAGEXPRESSION_H 23 24 #include "Utils/Pimpl.h" 25 26 class MetaData; 27 28 namespace Tagging 29 { 30 using TagString = QString; 31 using ReplacedString = QString; 32 33 enum TagName 34 { 35 TagNone = 0, 36 TagTitle, 37 TagAlbum, 38 TagArtist, 39 TagTrackNum, 40 TagYear, 41 TagDisc, 42 TagIgnore 43 }; 44 45 QString tagNameToString(TagName tagName); 46 47 /** 48 * @brief The TagExpression class 49 * @ingroup Tagging 50 */ 51 class Expression 52 { 53 PIMPL(Expression) 54 55 private: 56 bool updateTag(const QString& lineEditString, const QString& filepath); 57 58 public: 59 Expression() = delete; 60 Expression(const QString& tagString, const QString& filepath); 61 ~Expression(); 62 63 QMap<Tagging::TagName, QString> capturedTags() const; 64 bool isValid() const; 65 66 bool apply(MetaData& track) const; 67 }; 68 } 69 70 #endif // TAGEXPRESSION_H 71