Permalink
Browse files

Ok, think I've got this all sorted out a bit. Code is much simpler now,

though much of this could be moved into the base class as there's a lot
of copy-paste action going on.


git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@768992 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
  • Loading branch information...
1 parent 6f6ec8d commit 37e2d6293f6312fb1fa7383d42726dc10e733a27 @scotchi scotchi committed Jan 31, 2008
View
@@ -227,26 +227,18 @@ ID3v2::Tag *FLAC::File::ID3v2Tag(bool create)
if(!create || d->tag[ID3v2Index])
return static_cast<ID3v2::Tag *>(d->tag[ID3v2Index]);
- d->tag.setTag(ID3v2Index, new ID3v2::Tag);
+ d->tag.set(ID3v2Index, new ID3v2::Tag);
return static_cast<ID3v2::Tag *>(d->tag[ID3v2Index]);
}
ID3v1::Tag *FLAC::File::ID3v1Tag(bool create)
{
- if(!create || d->tag[ID3v1Index])
- return static_cast<ID3v1::Tag *>(d->tag[ID3v1Index]);
-
- d->tag.setTag(ID3v1Index, new ID3v1::Tag);
- return static_cast<ID3v1::Tag *>(d->tag[ID3v1Index]);
+ return d->tag.access<ID3v1::Tag>(ID3v1Index, create);
}
Ogg::XiphComment *FLAC::File::xiphComment(bool create)
{
- if(!create || d->tag[XiphIndex])
- return static_cast<Ogg::XiphComment *>(d->tag[XiphIndex]);
-
- d->tag.setTag(XiphIndex, new Ogg::XiphComment);
- return static_cast<Ogg::XiphComment *>(d->tag[XiphIndex]);
+ return d->tag.access<Ogg::XiphComment>(XiphIndex, create);
}
void FLAC::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory)
@@ -267,12 +259,12 @@ void FLAC::File::read(bool readProperties, Properties::ReadStyle propertiesStyle
if(d->ID3v2Location >= 0) {
- d->tag.setTag(ID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory));
+ d->tag.set(ID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory));
d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize();
if(ID3v2Tag()->header()->tagSize() <= 0)
- d->tag.setTag(ID3v2Index, 0);
+ d->tag.set(ID3v2Index, 0);
else
d->hasID3v2 = true;
}
@@ -282,7 +274,7 @@ void FLAC::File::read(bool readProperties, Properties::ReadStyle propertiesStyle
d->ID3v1Location = findID3v1();
if(d->ID3v1Location >= 0) {
- d->tag.setTag(ID3v1Index, new ID3v1::Tag(this, d->ID3v1Location));
+ d->tag.set(ID3v1Index, new ID3v1::Tag(this, d->ID3v1Location));
d->hasID3v1 = true;
}
@@ -294,9 +286,9 @@ void FLAC::File::read(bool readProperties, Properties::ReadStyle propertiesStyle
return;
if(d->hasXiphComment)
- d->tag.setTag(XiphIndex, new Ogg::XiphComment(xiphCommentData()));
+ d->tag.set(XiphIndex, new Ogg::XiphComment(xiphCommentData()));
else
- d->tag.setTag(XiphIndex, new Ogg::XiphComment);
+ d->tag.set(XiphIndex, new Ogg::XiphComment);
if(readProperties)
d->properties = new Properties(streamInfoData(), streamLength(), propertiesStyle);
View
@@ -1,175 +0,0 @@
-/***************************************************************************
- copyright : (C) 2004 by Allan Sandfeld Jensen
- email : kde@carewolf.org
- ***************************************************************************/
-
-/***************************************************************************
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
- * USA *
- * *
- * Alternatively, this file is available under the Mozilla Public *
- * License Version 1.1. You may obtain a copy of the License at *
- * http://www.mozilla.org/MPL/ *
- ***************************************************************************/
-
-#ifndef DO_NOT_DOCUMENT // Tell Doxygen not to document this header
-
-#ifndef TAGLIB_COMBINEDTAG_H
-#define TAGLIB_COMBINEDTAG_H
-
-////////////////////////////////////////////////////////////////////////////////
-// Note that this header is not installed.
-////////////////////////////////////////////////////////////////////////////////
-
-#include <tag.h>
-
-namespace TagLib {
-
- /*!
- * A union of two TagLib::Tags.
- */
- class CombinedTag : public TagLib::Tag
- {
- public:
- CombinedTag(Tag *tag1 = 0, Tag *tag2 = 0)
- : TagLib::Tag(),
- tag1(tag1), tag2(tag2) {}
-
- virtual String title() const {
- if(tag1 && !tag1->title().isEmpty())
- return tag1->title();
-
- if(tag2)
- return tag2->title();
-
- return String::null;
- }
-
- virtual String artist() const {
- if(tag1 && !tag1->artist().isEmpty())
- return tag1->artist();
-
- if(tag2)
- return tag2->artist();
-
- return String::null;
- }
-
- virtual String album() const {
- if(tag1 && !tag1->album().isEmpty())
- return tag1->album();
-
- if(tag2)
- return tag2->album();
-
- return String::null;
- }
-
- virtual String comment() const {
- if(tag1 && !tag1->comment().isEmpty())
- return tag1->comment();
-
- if(tag2)
- return tag2->comment();
-
- return String::null;
- }
-
- virtual String genre() const {
- if(tag1 && !tag1->genre().isEmpty())
- return tag1->genre();
-
- if(tag2)
- return tag2->genre();
-
- return String::null;
- }
-
- virtual uint year() const {
- if(tag1 && tag1->year() > 0)
- return tag1->year();
-
- if(tag2)
- return tag2->year();
-
- return 0;
- }
-
- virtual uint track() const {
- if(tag1 && tag1->track() > 0)
- return tag1->track();
-
- if(tag2)
- return tag2->track();
-
- return 0;
- }
-
- virtual void setTitle(const String &s) {
- if(tag1)
- tag1->setTitle(s);
- if(tag2)
- tag2->setTitle(s);
- }
-
- virtual void setArtist(const String &s) {
- if(tag1)
- tag1->setArtist(s);
- if(tag2)
- tag2->setArtist(s);
- }
-
- virtual void setAlbum(const String &s) {
- if(tag1)
- tag1->setAlbum(s);
- if(tag2)
- tag2->setAlbum(s);
- }
-
- virtual void setComment(const String &s) {
- if(tag1)
- tag1->setComment(s);
- if(tag2)
- tag2->setComment(s);
- }
-
- virtual void setGenre(const String &s) {
- if(tag1)
- tag1->setGenre(s);
- if(tag2)
- tag2->setGenre(s);
- }
-
- virtual void setYear(uint i) {
- if(tag1)
- tag1->setYear(i);
- if(tag2)
- tag2->setYear(i);
- }
-
- virtual void setTrack(uint i) {
- if(tag1)
- tag1->setTrack(i);
- if(tag2)
- tag2->setTrack(i);
- }
-
- private:
- Tag *tag1;
- Tag *tag2;
- };
-}
-
-#endif
-#endif
Oops, something went wrong.

0 comments on commit 37e2d62

Please sign in to comment.