diff -r 000000000000 -r 094583676ce7 wvuing/wvuieng/CenRepSrc/CCASDCRVariator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuieng/CenRepSrc/CCASDCRVariator.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2004-2005 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: Persistent preference store variation +* +*/ + + +// Include Files +#include "CCASDCRVariator.h" +#include "MCASettings.h" +#include "imnginternalcrkeys.h" +#include "IMPrivateCRKeys.h" +#include "IMInternalPSKeys.h" +#include "ChatDebugPrint.h" + +#include +#include + +_LIT_SECURITY_POLICY_S0( KIMWritePolicy, 0x101F4673 ); +_LIT_SECURITY_POLICY_S0( KIMReadPolicy, 0x101F4673 ); + +// CONSTRUCTION + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::NewL +// Static constructor. Identifier ignored with central repository. +// ----------------------------------------------------------------------------- +// +CCASDCRVariator* CCASDCRVariator::NewL( TUid aIdentifier ) + { + CCASDCRVariator* self = new ( ELeave ) CCASDCRVariator; + CleanupStack::PushL( self ); + self->ConstructL( aIdentifier ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::~CCASDCRVariator +// Destructor (virtual by CBase) +// ----------------------------------------------------------------------------- +// +CCASDCRVariator::~CCASDCRVariator() + { + CHAT_DP_FUNC_ENTER( "~CCASDCRVariator" ); + delete iCenRep; + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::ConstructL +// Second phase construct +// ----------------------------------------------------------------------------- +// +void CCASDCRVariator::ConstructL( TUid /* aIdentifier */ ) + { + CHAT_DP_FUNC_ENTER( "ConstructL - Central repository" ); + iCenRep = CRepository::NewL( KCRUidIM ); + CHAT_DP_FUNC_DONE( "ConstructL" ); + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::CCASDCRVariator +// Constructor +// ----------------------------------------------------------------------------- +// +CCASDCRVariator::CCASDCRVariator() + { + // empty + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::GetInt +// ----------------------------------------------------------------------------- +// +TInt CCASDCRVariator::GetInt( TInt aSetting, TInt& aValue ) + { + CHAT_DP_FUNC_ENTER( "GetInt" ); + TInt key = GenerateKey( aSetting ); + return iCenRep->Get( key, aValue ); + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::SetInt +// ----------------------------------------------------------------------------- +// +TInt CCASDCRVariator::SetInt( TInt aSetting, TInt aValue ) + { + CHAT_DP_FUNC_ENTER( "SetInt" ); + TInt key = GenerateKey( aSetting ); + return iCenRep->Set( key, aValue ); + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::FlushData +// ----------------------------------------------------------------------------- +// +TInt CCASDCRVariator::FlushData() + { + CHAT_DP_FUNC_ENTER( "FlushData" ); + // in central repository the data is written immediately, + // no need to flush + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::GetString +// ----------------------------------------------------------------------------- +// +TInt CCASDCRVariator::GetString( TInt aSetting, TDes& aValue ) + { + CHAT_DP_FUNC_ENTER( "GetString" ); + TInt key = GenerateKey( aSetting ); + + switch ( aSetting ) + { + case MCASettings::EServiceAddress: + { + return RProperty::Get( KPSUidIMEngine, KIMServiceAddress, aValue ); + } + default: + { + return iCenRep->Get( key, aValue ); + } + } + } + +// ----------------------------------------------------------------------------- +// CCASDCRVariator::SetString +// ----------------------------------------------------------------------------- +// +TInt CCASDCRVariator::SetString( TInt aSetting, const TDesC& aValue ) + { + CHAT_DP_FUNC_ENTER( "SetString" ); + TInt key = GenerateKey( aSetting ); + + switch ( aSetting ) + { + case MCASettings::EServiceAddress: + { + RProperty::Define( KPSUidIMEngine, KIMServiceAddress, + RProperty::EText, KIMReadPolicy, KIMWritePolicy ); + return RProperty::Set( KPSUidIMEngine, KIMServiceAddress, aValue ); + } + default: + { + return iCenRep->Set( key, aValue ); + } + } + } + +// --------------------------------------------------------- +// CCASDCRVariator::GenerateKey +// --------------------------------------------------------- +// +TInt CCASDCRVariator::GenerateKey( const TInt aSettingNumber ) const + { + CHAT_DP_FUNC_ENTER( "GenerateKey" ); + // we could use a table but this is just as fast, if not + // faster. consider it an unrolled loop. e.g. we can't use + // the aSettingNumber as index, since the enumerations + // are not consecutive and have different bases where they start + switch ( aSettingNumber ) + { + case MCASettings::EFirstLoginDone : + return KIMFirstLogin; + + case MCASettings::EDefaultScreenNameInUse : + return KIMScreenNameInUse; + + case MCASettings::EAutomaticPresenceUpdate : + return KIMAutoPresence; + + case MCASettings::EShowHistory : + return KIMShowHistory; + + case MCASettings::EAuthorizeIMPresence : + return KIMAuthPresence; + + case MCASettings::EReceiveIMessages : + return KIMAuthIM; + + case MCASettings::EReceiveInvitations : + return KIMAuthInvite; + + case MCASettings::EMessageFlowSettingLevel : + return KIMMsgFlow; + + case MCASettings::EFriendsListOrdering : + return KIMOrderFriends; + + case MCASettings::EDefaultScreenName : + return KIMDefScreenName; + + case MCASettings::EOwnWVUserID : + return KIMOwnUserId; + + case MCASettings::EOwnAlias : + return KIMAliasName; + + case MCASettings::EServiceAddress : + return KIMServiceAddress; + + case MCASettings::EShowOffline : + return KIMOfflineContacts; + + case MCASettings::EStatusMsgOnline: + return KIMStatusMsgOnline; + + case MCASettings::EStatusMsgAway: + return KIMStatusMsgAway; + + case MCASettings::EStatusMsgBusy: + return KIMStatusMsgBusy; + default: + break; + } + + return -1; + } + + +// End of File