[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdesupport/taglib/mpeg
From: Scott Wheeler <wheeler () kde ! org>
Date: 2005-07-21 17:33:38
Message-ID: 1121967218.451497.27212.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 437380 by wheeler:
Continuing going through my pile-o-patches:
Make it possible to save files using the save() with a tag mask
without stripping the tags that do not fit the mask. I still need
to do a little testing on this to make sure that the offsets are
still computed correctly.
BUG:96460
M +13 -7 mpegfile.cpp
M +12 -0 mpegfile.h
--- trunk/kdesupport/taglib/mpeg/mpegfile.cpp #437379:437380
@@ -263,12 +263,17 @@
bool MPEG::File::save(int tags)
{
- if(tags == NoTags)
+ return save(tags, true);
+}
+
+bool MPEG::File::save(int tags, bool stripOthers)
+{
+ if(tags == NoTags && stripOthers)
return strip(AllTags);
if(!d->ID3v2Tag && !d->ID3v1Tag && !d->APETag) {
- if(d->hasID3v1 || d->hasID3v2 || d->hasAPE)
+ if((d->hasID3v1 || d->hasID3v2 || d->hasAPE) && stripOthers)
return strip(AllTags);
return true;
@@ -299,10 +304,10 @@
insert(d->ID3v2Tag->render(), d->ID3v2Location, d->ID3v2OriginalSize);
}
- else
+ else if(stripOthers)
success = strip(ID3v2, false) && success;
}
- else if(d->hasID3v2)
+ else if(d->hasID3v2 && stripOthers)
success = strip(ID3v2) && success;
if(ID3v1 & tags) {
@@ -311,13 +316,14 @@
seek(offset, End);
writeBlock(d->ID3v1Tag->render());
}
- else
+ else if(stripOthers)
success = strip(ID3v1) && success;
}
- else if(d->hasID3v1)
+ else if(d->hasID3v1 && stripOthers)
success = strip(ID3v1, false) && success;
// Dont save an APE-tag unless one has been created
+
if((APE & tags) && d->APETag) {
if(d->hasAPE)
insert(d->APETag->render(), d->APELocation, d->APEOriginalSize);
@@ -338,7 +344,7 @@
}
}
}
- else if(d->hasAPE)
+ else if(d->hasAPE && stripOthers)
success = strip(APE, false) && success;
return success;
--- trunk/kdesupport/taglib/mpeg/mpegfile.h #437379:437380
@@ -145,6 +145,18 @@
bool save(int tags);
/*!
+ * Save the file. This will attempt to save all of the tag types that are
+ * specified by OR-ing together TagTypes values. The save() method above
+ * uses AllTags. This returns true if saving was successful.
+ *
+ * If \a stripOthers is true this strips all tags not included in the mask,
+ * but does not modify them in memory, so later calls to save() which make
+ * use of these tags will remain valid. This also strips empty tags.
+ */
+ // BIC: combine with the above method
+ bool save(int tags, bool stripOthers);
+
+ /*!
* Returns a pointer to the ID3v2 tag of the file.
*
* If \a create is false (the default) this will return a null pointer
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic