]> granicus.if.org Git - taglib/commitdiff
Switch to using a list of genres and checking for membership in there to avoid repeat...
authorScott Wheeler <wheeler@kde.org>
Sun, 1 Apr 2007 20:54:13 +0000 (20:54 +0000)
committerScott Wheeler <wheeler@kde.org>
Sun, 1 Apr 2007 20:54:13 +0000 (20:54 +0000)
Based on a patch from Xavier Duret.

BUG:141679

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648998 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

taglib/mpeg/id3v2/id3v2tag.cpp

index 6e7a3b9231e2d37047c65bf500268d1ce58222c3..333e5f60a26ecdeab2a8c6e268de3e21120aff1b 100644 (file)
@@ -141,10 +141,9 @@ String ID3v2::Tag::genre() const
 
   StringList fields = f->fieldList();
 
-  String genreString;
-  bool hasNumber = false;
+  StringList genres;
 
-  for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) {
+  for(StringList::Iterator it = fields.begin(); it != fields.end(); ++it) {
 
     bool isNumber = true;
 
@@ -155,22 +154,17 @@ String ID3v2::Tag::genre() const
       isNumber = *charIt >= '0' && *charIt <= '9';
     }
 
-    if(!genreString.isEmpty())
-      genreString.append(' ');
-
     if(isNumber) {
       int number = (*it).toInt();
-      if(number >= 0 && number <= 255) {
-        hasNumber = true;
-        genreString.append(ID3v1::genre(number));
-      }
-    }
-    else {
-      genreString.append(*it);
+      if(number >= 0 && number <= 255)
+        *it = ID3v1::genre(number);
     }
+
+    if(std::find(genres.begin(), genres.end(), *it) == genres.end())
+      genres.append(*it);
   }
 
-  return genreString;
+  return genres.toString();
 }
 
 TagLib::uint ID3v2::Tag::year() const