diff -r 000000000000 -r 72b543305e3a mobilemessaging/postcard/postcardsrc/PostcardCenRep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/postcard/postcardsrc/PostcardCenRep.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2006 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: +* Postcard application's interface central repository +* +*/ + + + +// Include files + +#include +#include + +#include "PostcardCenRep.h" +#include "PostcardPanic.h" + +// Static constant data + +// True if corresponding key refers to string data +const TInt8 CPostcardCenRep::iIsStringType[KPocaKeyCount] = + { + ETrue, // KPocaKeyServiceProvider + EFalse, // KPocaKeyMandatoryFields + EFalse, // KPocaKeyMaxGreetingLength + EFalse, // KPocaKeyMaxNameLength + EFalse, // KPocaKeyMaxInfoLength + EFalse, // KPocaKeyMaxStreetLength + EFalse, // KPocaKeyMaxZipLength + EFalse, // KPocaKeyMaxCityLength + EFalse, // KPocaKeyMaxStateLength + EFalse, // KPocaKeyMaxCountryLength + ETrue, // KPocaKeyServiceSpecialFormat + ETrue, // KPocaKeyServiceSeparator + ETrue // KPocaKeyServiceReplaceString + }; + +// Member functions + +// --------------------------------------------------------- +// Two-phased constructor +// --------------------------------------------------------- +CPostcardCenRep* CPostcardCenRep::NewL() + { + CPostcardCenRep* self = new (ELeave) CPostcardCenRep(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// Default destructor +// --------------------------------------------------------- +CPostcardCenRep::~CPostcardCenRep() + { + for(TInt i = 0; i < KPocaKeyCount; i++) + { + if (iIsStringType[i]) + { + delete iData[i].asString; + } + } + } + +// --------------------------------------------------------- +// CPostcardCenRep +// --------------------------------------------------------- +CPostcardCenRep::CPostcardCenRep() + { + } + +// --------------------------------------------------------- +// ConstructL +// --------------------------------------------------------- +void CPostcardCenRep::ConstructL() + { + // Read data from Postcard repository + CRepository* cenrep = CRepository::NewLC(KCRUidPostcard); + + for(TInt i = 0; i < KPocaKeyCount; i++) + { + TUint32 key = KPocaKeyServiceProvider + i; + if (iIsStringType[i]) + { + HBufC* buf = iData[i].asString = HBufC::NewL(KCRPocaMaxString); + TPtr des = buf->Des(); + User::LeaveIfError(cenrep->Get(key, des)); + iData[i].asString = buf->ReAllocL(buf->Length()); + } + else + { + User::LeaveIfError(cenrep->Get(key, iData[i].asInt)); + } + } + CleanupStack::PopAndDestroy( cenrep); // cenrep + + // Read data from Muiu variation repository + cenrep = CRepository::NewLC(KCRUidMuiuVariation); + User::LeaveIfError(cenrep->Get(KMuiuPostcardFeatures, iFeatureBits)); + CleanupStack::PopAndDestroy( cenrep ); // cenrep + } + + +// --------------------------------------------------------- +// Get +// --------------------------------------------------------- +TInt CPostcardCenRep::Get(TUint32 aKey) const + { + TInt i = aKey - KPocaKeyServiceProvider; + __ASSERT_DEBUG(i >= 0 && i < KPocaKeyCount, Panic(EPostcardPanicCoding)); + __ASSERT_DEBUG(!iIsStringType[i], Panic(EPostcardPanicCoding)); + return iData[i].asInt; + } + +// --------------------------------------------------------- +// GetString +// --------------------------------------------------------- +const TDesC& CPostcardCenRep::GetString(TUint32 aKey) const + { + TInt i = aKey - KPocaKeyServiceProvider; + __ASSERT_DEBUG(i >= 0 && i < KPocaKeyCount, Panic(EPostcardPanicCoding)); + __ASSERT_DEBUG(iIsStringType[i], Panic(EPostcardPanicCoding)); + return *iData[i].asString; + } + +// --------------------------------------------------------- +// FeatureBits +// --------------------------------------------------------- +TInt CPostcardCenRep::FeatureBits() const + { + return iFeatureBits; + }