activityfw/activitydatabase/s60/src/hsserializer.cpp
changeset 93 82b66994846c
parent 92 782e3408c2ab
child 94 dbb8300717f7
equal deleted inserted replaced
92:782e3408c2ab 93:82b66994846c
    13 *
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 #include "hsserializer.h"
    17 #include "hsserializer.h"
    18 
    18 #include <s32mem.h>
    19 // -----------------------------------------------------------------------------
    19 // -----------------------------------------------------------------------------
    20 //
    20 //
    21 // -----------------------------------------------------------------------------
    21 // -----------------------------------------------------------------------------
    22 //
    22 //
    23 RBuf8 &operator <<(RBuf8 &dst, const QPixmap &src)
    23 RBuf8 &operator <<(RBuf8 &dst, const QPixmap &src)
   104 //
   104 //
   105 // -----------------------------------------------------------------------------
   105 // -----------------------------------------------------------------------------
   106 //
   106 //
   107 QList<QVariantHash>& operator <<(QList<QVariantHash>& dst, const TDesC8 &src)
   107 QList<QVariantHash>& operator <<(QList<QVariantHash>& dst, const TDesC8 &src)
   108 {
   108 {
   109     QByteArray buffer(QByteArray::fromRawData(reinterpret_cast<const char *>(src.Ptr()),
   109     dst.clear();
   110                                               src.Length()));
   110     
   111 
   111     QVariantHash item;
   112     QDataStream stream(&buffer, QIODevice::ReadOnly);
   112     TRAP_IGNORE(
   113     QT_TRYCATCH_LEAVING(stream >> dst);
   113     RDesReadStream srcStream(src);
       
   114     int numOfItems(srcStream.ReadInt32L());
       
   115     int bufferSize;
       
   116     
       
   117     RBuf8 tmpBuff;
       
   118     CleanupClosePushL(tmpBuff);
       
   119     for (int iter(0); iter < numOfItems; ++iter) {
       
   120         bufferSize = srcStream.ReadInt32L();
       
   121         if (tmpBuff.MaxLength() < bufferSize) {
       
   122             tmpBuff.ReAllocL(bufferSize);
       
   123         }
       
   124         item.clear();
       
   125         if (0 < bufferSize) {
       
   126             srcStream.ReadL(tmpBuff, bufferSize);
       
   127             item << tmpBuff;
       
   128         }
       
   129         dst.append(item);
       
   130     }
       
   131     CleanupStack::PopAndDestroy(&tmpBuff));
   114     return dst;
   132     return dst;
   115 }
   133 }