]> granicus.if.org Git - taglib/commitdiff
Fix up the stuff here for appending values to an APE::Item and round out the API...
authorScott Wheeler <wheeler@kde.org>
Sat, 28 Jan 2006 15:18:31 +0000 (15:18 +0000)
committerScott Wheeler <wheeler@kde.org>
Sat, 28 Jan 2006 15:18:31 +0000 (15:18 +0000)
Based on Michael's patch...

BUG:120256

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

ape/apeitem.cpp
ape/apeitem.h
ape/apetag.cpp

index 03e61597e0dc0b14b2c5865128f1d9fa0a341d8b..e45761acf4da729a8495f908794c2bd8770a2ffe 100644 (file)
@@ -102,9 +102,37 @@ String APE::Item::key() const
 
 ByteVector APE::Item::value() const
 {
+  // This seems incorrect as it won't be actually rendering the value to keep it
+  // up to date.
+
   return d->value;
 }
 
+void APE::Item::setKey(const String &key)
+{
+    d->key = key;
+}
+
+void APE::Item::setValue(const String &value)
+{
+    d->text = value;
+}
+
+void APE::Item::setValues(const StringList &value)
+{
+    d->text = value;
+}
+
+void APE::Item::appendValue(const String &value)
+{
+    d->text.append(value);
+}
+
+void APE::Item::appendValues(const StringList &values)
+{
+    d->text.append(values);
+}
+
 int APE::Item::size() const
 {
   return 8 + d->key.size() + 1 + d->value.size();
index 634876559a78d642de6f46238b5e4fd5714ad968..dd9fa298f7a6ef11727e62875b66d2fa2d8b65d9 100644 (file)
@@ -86,9 +86,47 @@ namespace TagLib {
 
       /*!
        * Returns the binary value.
+       *
+       * \deprecated This will be removed in the next binary incompatible version
+       * as it is not kept in sync with the things that are set using setValue()
+       * and friends.
        */
       ByteVector value() const;
 
+      /*!
+       * Sets the key for the item to \a key.
+       */
+      void setKey(const String &key);
+
+      /*!
+       * Sets the value of the item to \a value and clears any previous contents.
+       *
+       * \see toString()
+       */
+      void setValue(const String &value);
+
+      /*!
+       * Sets the value of the item to the list of values in \a value and clears
+       * any previous contents.
+       *
+       * \see toStringList()
+       */
+      void setValues(const StringList &values);
+
+      /*!
+       * Appends \a value to create (or extend) the current list of values.
+       *
+       * \see toString()
+       */
+      void appendValue(const String &value);
+
+      /*!
+       * Appends \a values to extend the current list of values.
+       *
+       * \see toStringList()
+       */
+      void appendValues(const StringList &values);
+
       /*!
        * Returns the size of the full item.
        */
index 3fecad8ba990deb1c137ac2122639e0eb6e1cc9c..58ca1389ed0b362c4f096fc2f26430f1311e2b17 100644 (file)
@@ -186,7 +186,7 @@ void APE::Tag::addValue(const String &key, const String &value, bool replace)
     removeItem(key);
   if(!value.isEmpty()) {
     if(d->itemListMap.contains(key) || !replace)
-      d->itemListMap[key.upper()].toStringList().append(value);
+      d->itemListMap[key.upper()].appendValue(value);
     else
       setItem(key, Item(key, value));
   }