diff -r 000000000000 -r 094583676ce7 wvuing/IMPSServiceSettingsUI/SharedDataSrc/CIMPSSharedDataHandler.cpp --- /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 + +// ============================ 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 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 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 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 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 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 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 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 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 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