1 /*************************************************************************** 2 copyright : (C) 2008 by Lukas Lalinsky 3 email : [email protected] 4 ***************************************************************************/ 5 6 /*************************************************************************** 7 * This library is free software; you can redistribute it and/or modify * 8 * it under the terms of the GNU Lesser General Public License version * 9 * 2.1 as published by the Free Software Foundation. * 10 * * 11 * This library is distributed in the hope that it will be useful, but * 12 * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 * Lesser General Public License for more details. * 15 * * 16 * You should have received a copy of the GNU Lesser General Public * 17 * License along with this library; if not, write to the Free Software * 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 * 02110-1301 USA * 20 * * 21 * Alternatively, this file is available under the Mozilla Public * 22 * License Version 1.1. You may obtain a copy of the License at * 23 * http://www.mozilla.org/MPL/ * 24 ***************************************************************************/ 25 26 #ifndef TAGLIB_POPULARIMETERFRAME_H 27 #define TAGLIB_POPULARIMETERFRAME_H 28 29 #include "id3v2frame.h" 30 #include "taglib_export.h" 31 32 namespace TagLib { 33 34 namespace ID3v2 { 35 36 //! An implementation of ID3v2 "popularimeter" 37 38 /*! 39 * This implements the ID3v2 popularimeter (POPM frame). It consists of 40 * an email, a rating and an optional counter. 41 */ 42 43 class TAGLIB_EXPORT PopularimeterFrame : public Frame 44 { 45 friend class FrameFactory; 46 47 public: 48 /*! 49 * Construct an empty popularimeter frame. 50 */ 51 explicit PopularimeterFrame(); 52 53 /*! 54 * Construct a popularimeter based on the data in \a data. 55 */ 56 explicit PopularimeterFrame(const ByteVector &data); 57 58 /*! 59 * Destroys this PopularimeterFrame instance. 60 */ 61 virtual ~PopularimeterFrame(); 62 63 /*! 64 * Returns the text of this popularimeter. 65 * 66 * \see text() 67 */ 68 virtual String toString() const; 69 70 /*! 71 * Returns the email. 72 * 73 * \see setEmail() 74 */ 75 String email() const; 76 77 /*! 78 * Set the email. 79 * 80 * \see email() 81 */ 82 void setEmail(const String &email); 83 84 /*! 85 * Returns the rating. 86 * 87 * \see setRating() 88 */ 89 int rating() const; 90 91 /*! 92 * Set the rating. 93 * 94 * \see rating() 95 */ 96 void setRating(int rating); 97 98 /*! 99 * Returns the counter. 100 * 101 * \see setCounter() 102 */ 103 unsigned int counter() const; 104 105 /*! 106 * Set the counter. 107 * 108 * \see counter() 109 */ 110 void setCounter(unsigned int counter); 111 112 protected: 113 // Reimplementations. 114 115 virtual void parseFields(const ByteVector &data); 116 virtual ByteVector renderFields() const; 117 118 private: 119 /*! 120 * The constructor used by the FrameFactory. 121 */ 122 PopularimeterFrame(const ByteVector &data, Header *h); 123 PopularimeterFrame(const PopularimeterFrame &); 124 PopularimeterFrame &operator=(const PopularimeterFrame &); 125 126 class PopularimeterFramePrivate; 127 PopularimeterFramePrivate *d; 128 }; 129 130 } 131 } 132 #endif 133