diff -r 9b022b1f357c -r e0aa398e6810 activityfw/storage/s60/src/afentry.cpp --- a/activityfw/storage/s60/src/afentry.cpp Tue Jul 06 14:37:10 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,461 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#include "afentry.h" -#include - -// ----------------------------------------------------------------------------- -/** - * Two-phase constructor. Create and initialize instance - * @return entry instance - */ -CAfEntry* CAfEntry::NewL() -{ - CAfEntry *self = CAfEntry::NewLC(); - CleanupStack::Pop(self); - return self; -} - -// ----------------------------------------------------------------------------- -/** - * Two-phase constructor. Create, initialize and push instance into cleanup stack - * @return entry instance - */ -CAfEntry* CAfEntry::NewLC() -{ - CAfEntry *self = new (ELeave)CAfEntry(); - CleanupStack::PushL(self); - return self; -} - -// ----------------------------------------------------------------------------- -/** - * Two-phase constructor. Create and initialize instance - * @param flags - entry flags - * @param applicationId - application unique identifier - * @param activityId - activity unique identifier - * @param imgSrc - thumbanail source - * @param privateData - privated application data - * @param publicData - public activity data - * @return entry instance - */ -CAfEntry* CAfEntry::NewL(TInt flags, - TInt applicationId, - const TDesC &activityId, - const TDesC &imgSrc, - const TDesC8 &privateData, - const TDesC8 &publicData) -{ - CAfEntry* self = CAfEntry::NewLC(flags, - applicationId, - activityId, - imgSrc, - privateData, - publicData); - CleanupStack::Pop(self); - return self; -} - -// ----------------------------------------------------------------------------- -/** - * Two-phase constructor. Create, initialize and push instance into cleanup stack - * @param flags - entry flags - * @param applicationId - application unique identifier - * @param activityId - activity unique identifier - * @param imgSrc - thumbanail source - * @param privateData - privated application data - * @param publicData - public activity data - * @return entry instance - */ -CAfEntry* CAfEntry::NewLC(TInt flags, - TInt applicationId, - const TDesC &activityId, - const TDesC &imgSrc, - const TDesC8 &privateData, - const TDesC8 &publicData) -{ - CAfEntry *self = CAfEntry::NewLC(); - self->ConstructL(flags, - applicationId, - activityId, - imgSrc, - privateData, - publicData); - return self; -} - -// ----------------------------------------------------------------------------- -CAfEntry* CAfEntry::NewLC(const RMessage2& msg, int offset) -{ - CAfEntry* self = CAfEntry::NewLC(); - RBuf8 serializedEntry; - CleanupClosePushL(serializedEntry); - ReallocL(serializedEntry, msg.GetDesMaxLength(offset)); - msg.ReadL(offset, serializedEntry); - RDesReadStream entryReader(serializedEntry); - CleanupClosePushL(entryReader); - entryReader >> (*self); - CleanupStack::PopAndDestroy(&entryReader); - CleanupStack::PopAndDestroy(&serializedEntry); - return self; -} -// ----------------------------------------------------------------------------- -/** - * First phase constructor - */ -CAfEntry::CAfEntry() -{ -} - -// ----------------------------------------------------------------------------- -/** - * Second phase constructor. Initialize instance - * @param flags - entry flags - * @param applicationId - application unique identifier - * @param activityId - activity unique identifier - * @param imgSrc - thumbanail source - * @param privateData - privated application data - * @param publicData - public activity data - */ -void CAfEntry::ConstructL(TInt flags, - TInt applicationId, - const TDesC &activityId, - const TDesC &imgSrc, - const TDesC8 &privateData, - const TDesC8 &publicData) -{ - mFlags = flags; - mAppId = applicationId; - CopyL(mActivityId, activityId); - CopyL(mImgSrc, imgSrc); - CopyL(mPrivateData, privateData); - CopyL(mPublicData, publicData); -} - -// ----------------------------------------------------------------------------- -/** - * Destructor. Release allocated resources - */ -CAfEntry::~CAfEntry() -{ - mActivityId.Close(); - mPrivateData.Close(); - mPublicData.Close(); - mImgSrc.Close(); -} - -// ----------------------------------------------------------------------------- -/** - * Provide size of serialized entry - * @return size of serialized entry instance - */ -TInt CAfEntry::Size() const -{ - return (sizeof(TInt) * 3) + //flags + appId + actId size info - mActivityId.Size() + //actId content size - DataSize(); //data size - -} - -// ----------------------------------------------------------------------------- -/** - * Provide size of serialized entry - * @return size of serialized entry instance - */ -TInt CAfEntry::DataSize() const -{ - return (sizeof(TInt) * 3) + //privData size info + pubData size info + imgSrc size info - mImgSrc.Size() + //imgSize content size - mPrivateData.Size() + //privData content size - mPublicData.Size(); //pubData content size -} -// ----------------------------------------------------------------------------- -/** - * Serialize entry content into output stream. - * @param stream - output stream - */ -void CAfEntry::ExternalizeL(RWriteStream &stream) const -{ - stream.WriteInt32L(mFlags); - stream.WriteInt32L(mAppId); - ExternalizeL(stream, mActivityId); - ExternalizeDataOnlyL(stream); -} - -// ----------------------------------------------------------------------------- -/** - * Deserialize entry content from input stream - * @param stream - input stream - */ -void CAfEntry::InternalizeL(RReadStream &stream) -{ - mFlags = stream.ReadInt32L(); - mAppId = stream.ReadInt32L(); - InternalizeL(mActivityId, stream); - InternalizeDataOnlyL(stream); -} - -// ----------------------------------------------------------------------------- -/** - * Serialize entry content into output stream. - * @param stream - output stream - */ -void CAfEntry::ExternalizeDataOnlyL(RWriteStream &stream) const -{ - ExternalizeL(stream, mImgSrc); - ExternalizeL(stream, mPrivateData); - ExternalizeL(stream, mPublicData); -} - -// ----------------------------------------------------------------------------- -/** - * Deserialize entry content from input stream - * @param stream - input stream - */ -void CAfEntry::InternalizeDataOnlyL(RReadStream &stream) -{ - - InternalizeL(mImgSrc, stream); - InternalizeL(mPrivateData, stream); - InternalizeL(mPublicData, stream); - -} - -// ----------------------------------------------------------------------------- -/** - * Provide access to activity flags - * @return activity flags - */ -TInt CAfEntry::Flags() const -{ - return mFlags; -} - -// ----------------------------------------------------------------------------- -/** - * Provide access to activity identifier. - * @return activity identifier - */ -TInt CAfEntry::ApplicationId() const -{ - return mAppId; -} - -// ----------------------------------------------------------------------------- -/** - * Provide access to activity identifier. - * @return activity identifier - */ -const TDesC& CAfEntry::ActivityId() const -{ - return mActivityId; -} - -// ----------------------------------------------------------------------------- -/** - * Provide access to activity data. - * @param rights - type of requested data - * @return activity data - */ -const TDesC8& CAfEntry::Data(CAfEntry::AccessRights rights) const -{ - return Private == rights ? mPrivateData : mPublicData; -} - -// ----------------------------------------------------------------------------- -/** - * Provide access to activity data. - * @param rights - type of requested data - * @return activity data - */ -void CAfEntry::SetDataL(const TDesC8& src, CAfEntry::AccessRights rights) -{ - CopyL(Private == rights ? mPrivateData : mPublicData, src); -} - -// ----------------------------------------------------------------------------- -/** - * Provide access to activity thumbail path - * @return path to activity thumbnail - */ -const TDesC& CAfEntry::ImageSrc() const -{ - return mImgSrc; -} - -// ----------------------------------------------------------------------------- -/** - * Set new value of image source - */ -void CAfEntry::SetImageSrcL(const TDesC& src) -{ - CopyL(mImgSrc, src); -} - -// ----------------------------------------------------------------------------- -/** - * Reallocate blob buffer to requested size - * @param dst - destination buffer - * @param length - requested length - */ -void CAfEntry::ReallocL(RBuf8 &dst,TInt length) -{ - if (0 < length) { - if (dst.MaxLength() < length) { - dst.ReAllocL(length); - } - } else { - dst.Close(); - } -} - -// ----------------------------------------------------------------------------- -/** - * Reallocate text buffer to requested size - * @param dst - destination buffer - * @param length - requested length - */ -void CAfEntry::ReallocL(RBuf &dst,TInt length) -{ - if (0 < length) { - if (dst.MaxLength() < length) { - dst.ReAllocL(length); - } - } else { - dst.Close(); - } -} -// ----------------------------------------------------------------------------- -/** - * Copy blob content from input stream - * @param dst - destination buffer - * @param src - source buffer - */ -void CAfEntry::CopyL(RBuf8 &dst,const TDesC8 &src) -{ - ReallocL(dst, src.Length()); - if(0 < src.Length()) { - dst.Copy(src); - } -} - -// ----------------------------------------------------------------------------- -/** - * Copy text content from input buffer - * @param dst - destination buffer - * @param src - source buffer - */ -void CAfEntry::CopyL(RBuf &dst,const TDesC &src) -{ - ReallocL(dst, src.Length()); - if(0 < src.Length()) { - dst.Copy(src); - } -} - -// ----------------------------------------------------------------------------- -/** - * Deserialize blob content from input stream - * @param dst - destination buffer - * @param src - input stream - */ -void CAfEntry::InternalizeL(RBuf8 &dst, RReadStream &src) -{ - const TInt length(src.ReadInt32L()); - ReallocL(dst, length); - if (0 < length) { - src.ReadL(dst, length); - } -} - -// ----------------------------------------------------------------------------- -/** - * Deserialize text content from input stream - * @param dst - destination buffer - * @param src - input stream - */ -void CAfEntry::InternalizeL(RBuf &dst, RReadStream &src) -{ - const TInt length(src.ReadInt32L()); - ReallocL(dst, length); - if (0 < length) { - src.ReadL(dst, length); - } -} - -// ----------------------------------------------------------------------------- -/** - * Serialize blob content into output stream - * @param dst - destination stream - * @param src - input buffer - */ -void CAfEntry::ExternalizeL(RWriteStream &dst,const TDesC8 & src) -{ - dst.WriteInt32L(src.Length()); - if (src.Length()) { - dst.WriteL(src, src.Length()); - } -} - -// ----------------------------------------------------------------------------- -/** - * Serialize text content into output stream - * @param dst - destination stream - * @param src - input buffer - */ -void CAfEntry::ExternalizeL(RWriteStream &dst,const TDesC& src) -{ - dst.WriteInt32L(src.Length()); - if (src.Length()) { - dst.WriteL(src, src.Length()); - } -} - -// ----------------------------------------------------------------------------- -RPointerArray& operator <<(RPointerArray& dst, const TDesC8 &src) -{ - dst.ResetAndDestroy(); - RDesReadStream srcStream(src); - CleanupClosePushL(srcStream); - int numOfItems(srcStream.ReadInt32L()); - for (int i(0); i < numOfItems; ++i) { - CAfEntry *entry = CAfEntry::NewLC(); - srcStream >> (*entry); - dst.AppendL(entry); - CleanupStack::Pop(entry); - } - CleanupStack::PopAndDestroy(&srcStream); - return dst; -} - -// ----------------------------------------------------------------------------- -RBuf8& operator <<(RBuf8 &dst, const RPointerArray& src) -{ - int iter(0), - requiredSize(sizeof(int)); - for(iter =0; iter< src.Count(); ++iter) { - requiredSize += src[iter]->Size(); - } - CAfEntry::ReallocL(dst, requiredSize); - RDesWriteStream dstStream(dst); - CleanupClosePushL(dstStream); - dstStream.WriteInt32L(src.Count()); - for (iter =0; iter < src.Count(); ++iter) { - dstStream << *(src[iter]); - } - CleanupStack::PopAndDestroy(&dstStream); - return dst; -}