wvuing/wvuieng/CenRepSrc/CCASDCRVariator.cpp
changeset 0 094583676ce7
--- /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 <e32property.h>
+#include <centralrepository.h>
+
+_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