--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPViewData.cpp Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2005-2007 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 FILES
+#include <CxSPViewData.h>
+
+// System includes
+#include <s32mem.h>
+
+
+/// Unnamed namespace for local definitions
+namespace {
+
+/**
+ * Stream buffer which counts number of bytes written to it.
+ */
+class TCalcLengthStreamBuf : public MStreamBuf
+ {
+ public: // Construction
+
+ /**
+ * Constructor.
+ */
+ inline TCalcLengthStreamBuf() :
+ iBytesWritten( 0 )
+ {
+ }
+
+ /**
+ * Returns the number of bytes written.
+ *
+ * @return Number of bytes written.
+ */
+ inline TInt BytesWritten() const
+ {
+ return iBytesWritten;
+ }
+
+ private: // From MStreamBuf
+
+ void DoWriteL( const TAny* /*aPtr*/, TInt aLength )
+ {
+ // Just count the bytes
+ iBytesWritten += aLength;
+ }
+
+ private: // Data
+ /// Ref: Count of bytes written to this streambuf
+ TInt iBytesWritten;
+ };
+
+
+} /// namespace
+
+
+
+
+CxSPViewData::CxSPViewData() :
+ iEComId( 0 ),
+ iOriginalViewId( KErrNotFound ),
+ iIconId( KErrNotFound ),
+ iMaskId( KErrNotFound )
+ {
+ }
+
+CxSPViewData::~CxSPViewData()
+ {
+ delete iIconFile;
+ delete iViewName;
+ }
+
+EXPORT_C CxSPViewData* CxSPViewData::NewL()
+ {
+ CxSPViewData* self = new ( ELeave ) CxSPViewData;
+ return self;
+ }
+
+EXPORT_C CxSPViewData* CxSPViewData::NewL( const TDesC8& aBuf )
+ {
+ CxSPViewData* self = new ( ELeave ) CxSPViewData;
+ CleanupStack::PushL( self );
+ self->ConstructL( aBuf );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+void CxSPViewData::ConstructL( const TDesC8& aBuf )
+ {
+ UnpackL( aBuf );
+ }
+
+
+EXPORT_C TUint32 CxSPViewData::EComId() const
+ {
+ return iEComId;
+ }
+
+EXPORT_C TInt32 CxSPViewData::OriginalViewId() const
+ {
+ return iOriginalViewId;
+ }
+
+EXPORT_C TInt32 CxSPViewData::IconId() const
+ {
+ return iIconId;
+ }
+
+EXPORT_C TInt32 CxSPViewData::MaskId() const
+ {
+ return iMaskId;
+ }
+
+EXPORT_C const TDesC& CxSPViewData::IconFile() const
+ {
+ if( iIconFile )
+ {
+ return *iIconFile;
+ }
+ else
+ {
+ return KNullDesC();
+ }
+ }
+
+EXPORT_C const TDesC& CxSPViewData::ViewName() const
+ {
+ if( iViewName )
+ {
+ return *iViewName;
+ }
+ else
+ {
+ return KNullDesC();
+ }
+ }
+
+EXPORT_C void CxSPViewData::SetEComId( TUint32 aEComId )
+ {
+ iEComId = aEComId;
+ }
+
+EXPORT_C void CxSPViewData::SetOriginalViewId( TInt32 aOriginalViewId )
+ {
+ iOriginalViewId = aOriginalViewId;
+ }
+
+EXPORT_C void CxSPViewData::SetIconId( TInt32 aIconId )
+ {
+ iIconId = aIconId;
+ }
+
+EXPORT_C void CxSPViewData::SetMaskId( TInt32 aMaskId )
+ {
+ iMaskId = aMaskId;
+ }
+
+EXPORT_C void CxSPViewData::SetIconFileL( const TDesC& aIconFile )
+ {
+ delete iIconFile;
+ iIconFile = NULL;
+ iIconFile = aIconFile.AllocL();
+ }
+
+EXPORT_C void CxSPViewData::SetViewNameL( const TDesC& aViewName )
+ {
+ {
+ delete iViewName;
+ iViewName = NULL;
+ iViewName = aViewName.AllocL();
+ }
+ }
+
+EXPORT_C void CxSPViewData::Reset()
+ {
+ iEComId = 0;
+ iOriginalViewId = KErrNotFound;
+ iIconId = KErrNotFound;
+ iMaskId = KErrNotFound;
+ delete iIconFile;
+ iIconFile = NULL;
+ delete iViewName;
+ iViewName = NULL;
+ }
+
+EXPORT_C HBufC8* CxSPViewData::PackL() const
+ {
+ // Calculate needed buffer size using TCalcLengthStreamBuf
+ TCalcLengthStreamBuf countBuf;
+ RWriteStream countStream( &countBuf );
+ // This can't leave because we are using TCalcLengthStreamBuf
+ ExternalizeL( countStream );
+
+ // Allocate a buffer and a stream
+ HBufC8* buf = HBufC8::NewLC( countBuf.BytesWritten() );
+ TPtr8 bufPtr = buf->Des();
+ RDesWriteStream stream( bufPtr );
+ stream.PushL();
+
+ // Write this object to buf through stream
+ ExternalizeL( stream );
+
+ stream.CommitL();
+ CleanupStack::PopAndDestroy(); // stream
+ CleanupStack::Pop(); // buf
+ return buf;
+ }
+
+EXPORT_C void CxSPViewData::UnpackL( const TDesC8& aPack )
+ {
+ RDesReadStream stream( aPack );
+ stream.PushL();
+ InternalizeL( stream );
+ CleanupStack::PopAndDestroy(); // stream
+ }
+
+void CxSPViewData::ExternalizeL( RWriteStream& aStream ) const
+ {
+ aStream.WriteUint32L( iEComId );
+ aStream.WriteInt32L( iOriginalViewId );
+ aStream.WriteInt32L( iIconId );
+ aStream.WriteInt32L( iMaskId );
+
+ if( iIconFile )
+ {
+ aStream.WriteUint16L( iIconFile->Length() );
+ aStream.WriteL( *iIconFile );
+ }
+ else
+ {
+ aStream.WriteUint16L( KNullDesC().Length() );
+ aStream.WriteL( KNullDesC() );
+ }
+
+ if( iViewName )
+ {
+ aStream.WriteUint16L( iViewName->Length() );
+ aStream.WriteL( *iViewName );
+ }
+ else
+ {
+ aStream.WriteUint16L( KNullDesC().Length() );
+ aStream.WriteL( KNullDesC() );
+ }
+ }
+
+void CxSPViewData::InternalizeL( RReadStream& aStream )
+ {
+ Reset();
+
+ iEComId = aStream.ReadUint32L();
+ iOriginalViewId = aStream.ReadInt32L();
+ iIconId = aStream.ReadInt32L();
+ iMaskId = aStream.ReadInt32L();
+
+ TInt length = aStream.ReadUint16L();
+ iIconFile = HBufC::NewL( length );
+ TPtr iconFilePtr = iIconFile->Des();
+ aStream.ReadL( iconFilePtr, length );
+
+ length = aStream.ReadUint16L();
+ iViewName = HBufC::NewL( length );
+ TPtr viewNamePtr = iViewName->Des();
+ aStream.ReadL( viewNamePtr, length );
+ }
+
+// End of File