You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
4.3 KiB
203 lines
4.3 KiB
15 years ago
|
/**************************************************************************
|
||
|
copyright : (C) 2005-2007 by Lukáš Lalinský
|
||
|
email : lalinsky@gmail.com
|
||
|
**************************************************************************/
|
||
|
|
||
|
/***************************************************************************
|
||
|
* This library is free software; you can redistribute it and/or modify *
|
||
|
* it under the terms of the GNU Lesser General Public License version *
|
||
|
* 2.1 as published by the Free Software Foundation. *
|
||
|
* *
|
||
|
* This library is distributed in the hope that it will be useful, but *
|
||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
||
|
* Lesser General Public License for more details. *
|
||
|
* *
|
||
|
* You should have received a copy of the GNU Lesser General Public *
|
||
|
* License along with this library; if not, write to the Free Software *
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 *
|
||
|
* USA *
|
||
|
***************************************************************************/
|
||
|
|
||
|
#include "asftag.h"
|
||
|
|
||
|
using namespace TagLib;
|
||
|
|
||
|
class ASF::Tag::TagPrivate
|
||
|
{
|
||
|
public:
|
||
|
String title;
|
||
|
String artist;
|
||
|
String copyright;
|
||
|
String comment;
|
||
|
String rating;
|
||
|
AttributeListMap attributeListMap;
|
||
|
};
|
||
|
|
||
|
ASF::Tag::Tag()
|
||
|
: TagLib::Tag()
|
||
|
{
|
||
|
d = new TagPrivate;
|
||
|
}
|
||
|
|
||
|
ASF::Tag::~Tag()
|
||
|
{
|
||
|
if(d)
|
||
|
delete d;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::title() const
|
||
|
{
|
||
|
return d->title;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::artist() const
|
||
|
{
|
||
|
return d->artist;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::album() const
|
||
|
{
|
||
|
if(d->attributeListMap.contains("WM/AlbumTitle"))
|
||
|
return d->attributeListMap["WM/AlbumTitle"][0].toString();
|
||
|
return String::null;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::copyright() const
|
||
|
{
|
||
|
return d->copyright;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::comment() const
|
||
|
{
|
||
|
return d->comment;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::rating() const
|
||
|
{
|
||
|
return d->rating;
|
||
|
}
|
||
|
|
||
|
unsigned int
|
||
|
ASF::Tag::year() const
|
||
|
{
|
||
|
if(d->attributeListMap.contains("WM/Year"))
|
||
|
return d->attributeListMap["WM/Year"][0].toString().toInt();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
unsigned int
|
||
|
ASF::Tag::track() const
|
||
|
{
|
||
|
if(d->attributeListMap.contains("WM/TrackNumber"))
|
||
|
return d->attributeListMap["WM/TrackNumber"][0].toString().toInt();
|
||
|
if(d->attributeListMap.contains("WM/Track"))
|
||
|
return d->attributeListMap["WM/Track"][0].toUInt();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
String
|
||
|
ASF::Tag::genre() const
|
||
|
{
|
||
|
if(d->attributeListMap.contains("WM/Genre"))
|
||
|
return d->attributeListMap["WM/Genre"][0].toString();
|
||
|
return String::null;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setTitle(const String &value)
|
||
|
{
|
||
|
d->title = value;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setArtist(const String &value)
|
||
|
{
|
||
|
d->artist = value;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setCopyright(const String &value)
|
||
|
{
|
||
|
d->copyright = value;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setComment(const String &value)
|
||
|
{
|
||
|
d->comment = value;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setRating(const String &value)
|
||
|
{
|
||
|
d->rating = value;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setAlbum(const String &value)
|
||
|
{
|
||
|
setAttribute("WM/AlbumTitle", value);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setGenre(const String &value)
|
||
|
{
|
||
|
setAttribute("WM/Genre", value);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setYear(uint value)
|
||
|
{
|
||
|
setAttribute("WM/Year", String::number(value));
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ASF::Tag::setTrack(uint value)
|
||
|
{
|
||
|
setAttribute("WM/TrackNumber", String::number(value));
|
||
|
}
|
||
|
|
||
|
ASF::AttributeListMap&
|
||
|
ASF::Tag::attributeListMap()
|
||
|
{
|
||
|
return d->attributeListMap;
|
||
|
}
|
||
|
|
||
|
void ASF::Tag::removeItem(const String &key)
|
||
|
{
|
||
|
AttributeListMap::Iterator it = d->attributeListMap.find(key);
|
||
|
if(it != d->attributeListMap.end())
|
||
|
d->attributeListMap.erase(it);
|
||
|
}
|
||
|
|
||
|
void ASF::Tag::setAttribute(const String &name, const Attribute &attribute)
|
||
|
{
|
||
|
AttributeList value;
|
||
|
value.append(attribute);
|
||
|
d->attributeListMap.insert(name, value);
|
||
|
}
|
||
|
|
||
|
void ASF::Tag::addAttribute(const String &name, const Attribute &attribute)
|
||
|
{
|
||
|
if(d->attributeListMap.contains(name)) {
|
||
|
d->attributeListMap[name].append(attribute);
|
||
|
}
|
||
|
else {
|
||
|
setAttribute(name, attribute);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool ASF::Tag::isEmpty() const {
|
||
|
return TagLib::Tag::isEmpty() &&
|
||
|
copyright().isEmpty() &&
|
||
|
rating().isEmpty() &&
|
||
|
d->attributeListMap.isEmpty();
|
||
|
}
|