--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSServiceSettingsUI/SharedDataSrc/CIMPSSharedDataHandler.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,493 @@
+/*
+* Copyright (c) 2004 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: Shared data handler
+*
+*/
+
+// INCLUDE FILES
+#include "CIMPSSharedDataHandler.h"
+#include "MIMPSSharedDataObserver.h"
+#include "WVSettingsSharedDataNG.h"
+#include "IMPSSharedDataDefs.h"
+
+#include <shareddatavalues.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CWVSettingsUICheckboxSettingPage::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CIMPSSharedDataHandler* CIMPSSharedDataHandler::NewL(
+ MIMPSSharedDataObserver* aObserver,
+ const TUid aUid, TBool aTemporary )
+ {
+ CIMPSSharedDataHandler* self =
+ new( ELeave ) CIMPSSharedDataHandler( aObserver,
+ aUid,
+ aTemporary );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+
+// Symbian OS default constructor can leave.
+void CIMPSSharedDataHandler::ConstructL()
+ {
+ iSharedDataClient = this;
+ // assign
+ User::LeaveIfError( iSharedDataClient.Connect() );
+ if ( iTemporary )
+ {
+ User::LeaveIfError( iSharedDataClient.AssignToTemporaryFile( iUid ) );
+ }
+ else
+ {
+ User::LeaveIfError( iSharedDataClient.Assign( iUid ) );
+ }
+
+ AppendKeyPairsL();
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::SubscribeChange( const TUid aUid, const TIMPSSharedKeys aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::SubscribeChange( const TUid aUid, const TIMPSSharedKeys aKey )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+ return iSharedDataClient.NotifyChange( aUid, &key );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::SubscribeSet( const TUid aUid, const TIMPSSharedKeys aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::SubscribeSet( const TUid aUid, const TIMPSSharedKeys aKey )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+ return iSharedDataClient.NotifySet( aUid, &key );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::UnSubscribe( const TUid aUid, const TIMPSSharedKeys aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMPSSharedDataHandler::UnSubscribe( const TUid aUid, const TIMPSSharedKeys aKey )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+ iSharedDataClient.CancelNotify( aUid, &key );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::GetStringKey( const TIMPSSharedKeys aKey, TDes& aValue )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::GetStringKey( const TIMPSSharedKeys aKey, TDes& aValue )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+ return iSharedDataClient.GetString( key, aValue );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::GetIntKey( const TDesC& aKey, TInt& aValue )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::GetIntKey( const TIMPSSharedKeys aKey, TInt& aValue )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+ return iSharedDataClient.GetInt( key, aValue );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::SetStringKey( const TIMPSSharedKeys aKey, const TDesC& aValue )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::SetStringKey( const TIMPSSharedKeys aKey, const TDesC& aValue )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+ return iSharedDataClient.SetString( key, aValue );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::SetIntKey( const TIMPSSharedKeys aKey, TInt aValue )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::SetIntKey( const TIMPSSharedKeys aKey, TInt aValue )
+ {
+ TRAPD( err, DoSetIntKeyL( aKey, aValue ) );
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::DoSetIntKeyL( const TIMPSSharedKeys aKey, TInt aValue )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMPSSharedDataHandler::DoSetIntKeyL( const TIMPSSharedKeys aKey, TInt aValue )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+
+ User::LeaveIfError( iSharedDataClient.SetInt( key, aValue ) );
+ }
+
+
+// ---------------------------------------------------------
+// CIMPSSharedDataHandler::HandleNotifyL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMPSSharedDataHandler::HandleNotifyL( const TUid aUid,
+ const TDesC& aKey,
+ const TDesC& /* aValue */ )
+ {
+ if ( iObserver )
+ {
+ TIMPSSharedKeys keyToClient;
+ MapKeysToClient( keyToClient, aKey );
+ if ( iTemporary )
+ {
+ iObserver->HandleTemporaryKeyNotifyL( aUid, keyToClient );
+ }
+ else
+ {
+ iObserver->HandlePermanentKeyNotifyL( aUid, keyToClient );
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::Signal( const TDesC& aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::Signal( const TIMPSSharedKeys aKey )
+ {
+ TRAPD( err, DoSignalL( aKey ) );
+ return err;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::DoSignalL( const TDesC& aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMPSSharedDataHandler::DoSignalL( const TIMPSSharedKeys aKey )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+
+ TInt current( 0 );
+ TInt err = iSharedDataClient.GetInt( key, current );
+ if ( err == KErrNotFound )
+ {
+ // we don't need to worry about this since if the key is not found
+ // the correct value for the current value is 0
+ err = KErrNone;
+ }
+ User::LeaveIfError( err );
+ User::LeaveIfError( iSharedDataClient.SetInt( key, current + 1 ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::CancelSignal( const TDesC& aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::CancelSignal( const TIMPSSharedKeys aKey )
+ {
+ TRAPD( err, DoCancelSignalL( aKey ) );
+ return err;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::DoCancelSignalL( const TDesC& aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMPSSharedDataHandler::DoCancelSignalL( const TIMPSSharedKeys aKey )
+ {
+ TBuf<KMaxKeyName> key;
+ MapKeysToSharedData( aKey, key );
+
+ TInt current( 0 );
+ TInt err = iSharedDataClient.GetInt( key, current );
+ if ( err == KErrNotFound )
+ {
+ // we don't need to worry about this since if the key is not found
+ // the correct value for the current value is 0
+ err = KErrNone;
+ }
+ User::LeaveIfError( err );
+ User::LeaveIfError( iSharedDataClient.SetInt( key, current - 1 ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMPSSharedDataHandler::ConvertSharedDataKey( const TDesC& aSrc, TIMPSSharedKeys& aKey )
+//
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::ConvertSharedDataKey( const TDesC& aSrc, TIMPSSharedKeys& aDest )
+ {
+ TInt err = MapKeysToClient( aDest, aSrc );
+ return err;
+ }
+
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CIMPSSharedDataHandler::CIMPSSharedDataHandler( MIMPSSharedDataObserver* aObserver,
+ const TUid aUid,
+ TBool aTemporary )
+ : iObserver( aObserver ), iUid( aUid ), iTemporary( aTemporary )
+ {
+ }
+
+// Destructor
+CIMPSSharedDataHandler::~CIMPSSharedDataHandler()
+ {
+ iSharedDataClient.Close();
+ iKeys.Close();
+ }
+
+
+// ---------------------------------------------------------
+// CIMPSSharedDataHandler::MapKeysToSharedData()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::MapKeysToSharedData( const TIMPSSharedKeys aKey, TDes& aSharedDataKey )
+ {
+ // just to make sure the descriptor is empty
+ aSharedDataKey.Zero();
+
+ TInt count( 0 );
+ for ( count = 0; count < iKeys.Count(); count++ )
+ {
+ if ( iKeys[count].iKeyForClient == aKey )
+ {
+ aSharedDataKey.Append( iKeys[count].iKeyForSharedData );
+ return KErrNone;
+ }
+ }
+ return KErrNotFound;
+ }
+
+// ---------------------------------------------------------
+// CIMPSSharedDataHandler::MapKeysToClient()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CIMPSSharedDataHandler::MapKeysToClient( TIMPSSharedKeys& aKey, const TDesC& aSharedDataKey )
+ {
+ TInt count( 0 );
+ for ( count = 0; count < iKeys.Count(); count++ )
+ {
+ if ( 0 == iKeys[count].iKeyForSharedData.Compare( aSharedDataKey ) )
+ {
+ aKey = iKeys[count].iKeyForClient;
+ return KErrNone;
+ }
+ }
+ return KErrNotFound;
+ }
+
+// ---------------------------------------------------------
+// CIMPSSharedDataHandler::DoAppendKeyPairL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMPSSharedDataHandler::DoAppendKeyPairL( TIMPSSharedKeys aKey, const TDesC& aSharedDataKey )
+ {
+ TIMPSSharedKeyPairs temp;
+ temp.iKeyForSharedData.Set( aSharedDataKey );
+ temp.iKeyForClient = aKey;
+ User::LeaveIfError( iKeys.Append( temp ) );
+ }
+
+// ---------------------------------------------------------
+// CIMPSSharedDataHandler::AppendKeyPairsL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMPSSharedDataHandler::AppendKeyPairsL()
+ {
+ // Service Settings UI
+ DoAppendKeyPairL( EIMPSSharedKeysIMLogin,
+ KWVSettingsKeyNameChatLogin );
+ DoAppendKeyPairL( EIMPSSharedKeysIMConnStart,
+ KWVSettingsKeyNameIMConnStart );
+ DoAppendKeyPairL( EIMPSSharedKeysIMConnEnd,
+ KWVSettingsKeyNameIMConnEnd );
+ DoAppendKeyPairL( EIMPSSharedKeysIMConnDays,
+ KWVSettingsKeyNameIMConnDays );
+ DoAppendKeyPairL( EIMPSSharedKeysPECLogin,
+ KWVSettingsKeyNamePECLogin );
+ DoAppendKeyPairL( EIMPSSharedKeysPECConnStart,
+ KWVSettingsKeyNamePECConnStart );
+ DoAppendKeyPairL( EIMPSSharedKeysPECConnEnd,
+ KWVSettingsKeyNamePECConnEnd );
+ DoAppendKeyPairL( EIMPSSharedKeysPECConnDays,
+ KWVSettingsKeyNamePECConnDays );
+
+ // Connection UI keys
+ // Connection UI Group channel keys
+ DoAppendKeyPairL( EIMPSSharedKeysIMClientLoginLogoutStateChannel,
+ KIMPSSharedKeysIMClientLoginLogoutStateChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysIMLoginLogoutEventChannel,
+ KIMPSSharedKeysIMLoginLogoutEventChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysIMSSClientReqistrationChannel,
+ KIMPSSharedKeysIMSSClientReqistrationChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysIMGlobalOperationSignalChannel,
+ KIMPSSharedKeysIMGlobalOperationSignalChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysIMRemoteUiNotificationsChannel,
+ KIMPSSharedKeysIMRemoteUiNotificationsChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPECClientLoginLogoutStateChannel,
+ KIMPSSharedKeysPECClientLoginLogoutStateChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPECLoginLogoutEventChannel,
+ KIMPSSharedKeysPECLoginLogoutEventChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPECSSClientReqistrationChannel,
+ KIMPSSharedKeysPECSSClientReqistrationChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPECGlobalOperationSignalChannel,
+ KIMPSSharedKeysPECGlobalOperationSignalChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPECRemoteUiNotificationsChannel,
+ KIMPSSharedKeysPECRemoteUiNotificationsChannel );
+
+ DoAppendKeyPairL( EIMPSSharedKeysCommonClientLoginLogoutStateChannel,
+ KIMPSSharedKeysCommonClientLoginLogoutStateChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonLoginLogoutEventChannel,
+ KIMPSSharedKeysCommonLoginLogoutEventChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonSSClientReqistrationChannel,
+ KIMPSSharedKeysCommonSSClientReqistrationChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonGlobalOperationSignalChannel,
+ KIMPSSharedKeysCommonGlobalOperationSignalChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonRemoteUiNotificationsChannel,
+ KIMPSSharedKeysCommonRemoteUiNotificationsChannel );
+ // Connection UI Group data keys
+ DoAppendKeyPairL( EIMPSSharedKeysIMClientLoginLogoutStateData,
+ KIMPSSharedKeysIMClientLoginLogoutStateData );
+ DoAppendKeyPairL( EIMPSSharedKeysIMLoginLogoutEventData,
+ KIMPSSharedKeysIMLoginLogoutEventData );
+ DoAppendKeyPairL( EIMPSSharedKeysIMSSClientReqistrationData,
+ KIMPSSharedKeysIMSSClientReqistrationData );
+ DoAppendKeyPairL( EIMPSSharedKeysIMGlobalOperationSignalData,
+ KIMPSSharedKeysIMGlobalOperationSignalData );
+ DoAppendKeyPairL( EIMPSSharedKeysIMRemoteUiNotificationsData,
+ KIMPSSharedKeysIMRemoteUiNotificationsData );
+ DoAppendKeyPairL( EIMPSSharedKeysPECClientLoginLogoutStateData,
+ KIMPSSharedKeysPECClientLoginLogoutStateData );
+ DoAppendKeyPairL( EIMPSSharedKeysPECLoginLogoutEventData,
+ KIMPSSharedKeysPECLoginLogoutEventData );
+ DoAppendKeyPairL( EIMPSSharedKeysPECSSClientReqistrationData,
+ KIMPSSharedKeysPECSSClientReqistrationData );
+ DoAppendKeyPairL( EIMPSSharedKeysPECGlobalOperationSignalData,
+ KIMPSSharedKeysPECGlobalOperationSignalData );
+ DoAppendKeyPairL( EIMPSSharedKeysPECRemoteUiNotificationsData,
+ KIMPSSharedKeysPECRemoteUiNotificationsData );
+
+ DoAppendKeyPairL( EIMPSSharedKeysCommonClientLoginLogoutStateData,
+ KIMPSSharedKeysCommonClientLoginLogoutStateData );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonLoginLogoutEventData,
+ KIMPSSharedKeysCommonLoginLogoutEventData );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonSSClientReqistrationData,
+ KIMPSSharedKeysCommonSSClientReqistrationData );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonGlobalOperationSignalData,
+ KIMPSSharedKeysCommonGlobalOperationSignalData );
+ DoAppendKeyPairL( EIMPSSharedKeysCommonRemoteUiNotificationsData,
+ KIMPSSharedKeysCommonRemoteUiNotificationsData );
+
+ // Connection UI Global channel keys
+ DoAppendKeyPairL( EIMPSSharedKeysIMGlobalChannel,
+ KIMPSSharedKeysIMGlobalChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPECGlobalChannel,
+ KIMPSSharedKeysPECGlobalChannel );
+
+ // Connection UI Global data keys
+ DoAppendKeyPairL( EIMPSSharedKeysIMGlobalData,
+ KIMPSSharedKeysIMGlobalData );
+ DoAppendKeyPairL( EIMPSSharedKeysPECGlobalData,
+ KIMPSSharedKeysPECGlobalData );
+
+ // Connection UI Permanent global data key
+ DoAppendKeyPairL( EIMPSSharedKeysPermanentGlobalChannel,
+ KIMPSSharedKeysPermanentGlobalChannel );
+ DoAppendKeyPairL( EIMPSSharedKeysPermanentGlobalData,
+ KIMPSSharedKeysPermanentGlobalData );
+
+ DoAppendKeyPairL( EIMPSSharedKeysIMPresenceAuthSettingKey,
+ KIPMSSharedKeysIMPresenceAuthSettingKey );
+
+ // Profile engines key
+ DoAppendKeyPairL( EIMPSSharedKeysProEngAllowUpdatePresence,
+ KProEngAllowUpdatePresence );
+
+ // Presence UI keys
+ DoAppendKeyPairL( EIMPSSharedKeysPECAppKeyNamePublishing,
+ KPECAppKeyNamePublishing );
+
+ // Service settings login type change notifier key
+ DoAppendKeyPairL( EIMPSSharedKeysServSettLoginTypeChangedPEC,
+ KIMPSSharedKeysServiceSettingsLoginTypesChangedPEC );
+ // Service settings login type change notifier key
+ DoAppendKeyPairL( EIMPSSharedKeysServSettLoginTypeChangedIM,
+ KIMPSSharedKeysServiceSettingsLoginTypesChangedIM );
+
+ // Service settings schedule change notifier key
+ DoAppendKeyPairL( EIMPSSharedKeysServSettScheduleChangedPEC,
+ KIMPSSharedKeysServiceSettingsScheduleChangedPEC );
+ // Service settings schedule change notifier key
+ DoAppendKeyPairL( EIMPSSharedKeysServSettScheduleChangedIM,
+ KIMPSSharedKeysServiceSettingsScheduleChangedIM );
+ }
+
+// End of File