mpcfile.h
Go to the documentation of this file.
1 /***************************************************************************
2  copyright : (C) 2004 by Allan Sandfeld Jensen
3  email : kde@carewolf.org
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_MPCFILE_H
27 #define TAGLIB_MPCFILE_H
28 
29 #include "taglib_export.h"
30 #include "tfile.h"
31 
32 #include "mpcproperties.h"
33 
34 namespace TagLib {
35 
36  class Tag;
37 
38  namespace ID3v1 { class Tag; }
39  namespace APE { class Tag; }
40 
42 
51  namespace MPC {
52 
54 
64  {
65  public:
70  enum TagTypes {
72  NoTags = 0x0000,
74  ID3v1 = 0x0001,
76  ID3v2 = 0x0002,
78  APE = 0x0004,
80  AllTags = 0xffff
81  };
82 
88  File(FileName file, bool readProperties = true,
89  Properties::ReadStyle propertiesStyle = Properties::Average);
90 
94  virtual ~File();
95 
100  virtual TagLib::Tag *tag() const;
101 
106  virtual Properties *audioProperties() const;
107 
111  virtual bool save();
112 
125  ID3v1::Tag *ID3v1Tag(bool create = false);
126 
139  APE::Tag *APETag(bool create = false);
140 
150  void strip(int tags = AllTags);
151 
156  void remove(int tags = AllTags);
157 
158 
159  private:
160  File(const File &);
161  File &operator=(const File &);
162 
163  void read(bool readProperties, Properties::ReadStyle propertiesStyle);
164  void scan();
165  long findAPE();
166  long findID3v1();
167  long findID3v2();
168 
169  class FilePrivate;
170  FilePrivate *d;
171  };
172  }
173 }
174 
175 #endif