diff -r 8bda91a87a00 -r 8ee96d21d9bf gssettingsuis/Gs/GSCallPlugin/src/GSCallPluginModel.cpp --- a/gssettingsuis/Gs/GSCallPlugin/src/GSCallPluginModel.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,758 +0,0 @@ -/* -* Copyright (c) 2002-2007 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: -* Model/Engine for Call Settings Plugin -* -*/ - - -// INCLUDE FILES -#include "GSCallPluginModel.h" -#include "GsLogger.h" //for logging traces -#include "SettingsPrivateCRKeys.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include //PubSub -#include -#include - -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) -#include -#endif // __VOIP && RD_VOIP_REL_2_2 -//CONSTANTS -// default value for autolock period -// default value for Sat operations - -_LIT( KGSNameOfClass, "CGSCallPluginModel" ); - -// Max int size - -//for switching values in SwitchValue() -const TInt KGSSettingOff = 0; -const TInt KGSSettingOn = 1; -const TInt KGSIndexOff = 1; -const TInt KGSIndexOn = 0; - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::NewL -// -// Symbian OS two-phased constructor -// ---------------------------------------------------------------------------- -// -CGSCallPluginModel* CGSCallPluginModel::NewL() - { - CGSCallPluginModel* self = new( ELeave ) CGSCallPluginModel; - CleanupStack::PushL( self ); - self->ConstructL(); - - CleanupStack::Pop( self ); - return self; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::CGSCallPluginModel -// -// C++ default constructor can NOT contain any code, that -// might leave. -// ---------------------------------------------------------------------------- -// -CGSCallPluginModel::CGSCallPluginModel() - { - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::ConstructL -// -// EPOC default constructor can leave. -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::ConstructL() - { - FeatureManager::InitializeLibL(); - - InitializeCentralRepositoryL(); - - iBackgroundApi = CGSBackgroundImage::NewL(); - - SetCSPActiveL( ETrue ); - - User::LeaveIfError( iGSVariationRepository->Get( - KSettingsVariationFlags, iLocalVariationValues ) ); -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) - iSpSettings = CSPSettings::NewL(); -#endif // __VOIP && RD_VOIP_REL_2_2 - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::~CGSCallPluginModel -// -// Destructor -// ---------------------------------------------------------------------------- -// -CGSCallPluginModel::~CGSCallPluginModel() - { - FeatureManager::UnInitializeLib(); - UninitializeCentralRepository(); - - if ( GetCSPStatus() ) - { - TRAP_IGNORE( SetCSPActiveL( EFalse ) ); - } - - if ( iBackgroundApi ) - { - delete iBackgroundApi; - } - -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) - delete iSpSettings; -#endif // __VOIP && RD_VOIP_REL_2_2 - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::InitializeCentralRepositoryL -// -// Creating and setting keys for the Central Repository -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::InitializeCentralRepositoryL() - { - iTelephonyRepository = CRepository::NewL( KCRUidTelephonySettings ); - iCommonTelephonyRepository = - CRepository::NewL( KCRUidCommonTelephonySettings ); - iGSVariationRepository = CRepository::NewL( KCRUidSettingsVariation ); - iRichCallRepository = CRepository::NewL( KCRUidRichCallSettings ); - iLogsRepository = CRepository::NewL( KCRUidLogs ); - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::UninitializeCentralRepositoryL -// -// Removes Central Repository objects -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::UninitializeCentralRepository() - { - if ( iTelephonyRepository ) - { - delete iTelephonyRepository; - iTelephonyRepository = NULL; - } - if ( iCommonTelephonyRepository ) - { - delete iCommonTelephonyRepository; - iCommonTelephonyRepository = NULL; - } - if ( iGSVariationRepository ) - { - delete iGSVariationRepository; - iGSVariationRepository = NULL; - } - if ( iRichCallRepository ) - { - delete iRichCallRepository; - iRichCallRepository = NULL; - } - if ( iLogsRepository ) - { - delete iLogsRepository; - iLogsRepository = NULL; - } - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::GetCallSettingValue -// Gets one of the call related values (anykey answer, automatic redial, -// summary after call or one key dialing) from Central Repository (Working OK) -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::GetCallSettingValue( const TCallSettId aCallId, - TInt& aId ) - { - TInt ret = KErrNone; - if ( aCallId == EGSSummaryAfterCall ) - { - ret = - iCommonTelephonyRepository->Get( KSettingsSummaryAfterCall, aId ); - } - else - { - switch ( aCallId ) - { - case EGSOpeningSlideAnswerCall: - ret = iTelephonyRepository-> - Get( KSettingsOpeningSlideAnswer, aId ); - break; - case EGSClosingSlideEndCall: - ret = iTelephonyRepository-> - Get( KSettingsClosingSlideEnd, aId ); - break; - case EGSSoftRejectDefault: - ret = iTelephonyRepository-> - Get( KSettingsSoftRejectDefaultInUse, aId ); - break; - default: - break; - }; - } - return ret; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetCallSettingValue -// Sets one of the call related values (anykey answer, automatic redial, -// summary after call or one key dialing) from Central Repository (working OK) -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::SetCallSettingValue( const TCallSettId aCallId, - TInt aId ) - { - TInt ret = KErrNone; - if ( aCallId == EGSSummaryAfterCall ) - { - ret = - iCommonTelephonyRepository->Set( KSettingsSummaryAfterCall, aId ); - } - else - { - switch ( aCallId ) - { - case EGSOpeningSlideAnswerCall: - ret = iTelephonyRepository-> - Set( KSettingsOpeningSlideAnswer, aId ); - break; - case EGSClosingSlideEndCall: - ret = iTelephonyRepository-> - Set( KSettingsClosingSlideEnd, aId ); - break; - case EGSSoftRejectDefault: - ret = iTelephonyRepository-> - Set( KSettingsSoftRejectDefaultInUse, aId ); - break; - default: - break; - }; - } - - return ret; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::GetCSPStatus -// -// Get Customer Service Profile status -// ---------------------------------------------------------------------------- -// -TBool CGSCallPluginModel::GetCSPStatus() - { - if ( iCSP ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetCSPActiveL -// -// Set Customer Service Profile active -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetCSPActiveL( TBool aValue ) - { - if ( aValue ) - { - iCSP = CPsetCustomerServiceProfile::NewL(); - User::LeaveIfError( iCSP->OpenCSProfileL() ); - } - else - { - delete iCSP; - iCSP = NULL; - } - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::IsSettingSupported -// -// Check if a given setting is supported -// ---------------------------------------------------------------------------- -// -TBool CGSCallPluginModel::IsSettingSupported( TInt aSettingNumber ) - { - __ASSERT_ALWAYS( iCSP != NULL, User::Panic( KGSNameOfClass, - EGSCallPluinModelPanicNullPtr ) ); - TBool settingSupported = EFalse; - TInt retVal = KErrNone; - - switch ( aSettingNumber ) - { - case EGSCSPCallWaiting: - retVal = iCSP->IsCWSupported( settingSupported ); - break; - case EGSCSPAlternateLine: - retVal = iCSP->IsALSSupported( settingSupported ); - break; - default: - break; - } - if ( retVal != KErrNone ) - { - //if a CSP error occurs, by default service is available - settingSupported = ETrue; - } - - return settingSupported; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::GetSoftRejectText -// Gets soft reject text from shared data. -// ---------------------------------------------------------------------------- -// -TBool CGSCallPluginModel::GetSoftRejectText( TDes& aText ) - { - TInt ret = iTelephonyRepository->Get( KSettingsSoftRejectText, aText ); - return ret; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetSoftRejectText -// Sets user defined text to shared data for soft reject. -// ---------------------------------------------------------------------------- -// -TBool CGSCallPluginModel::SetSoftRejectText( TDes& aText ) - { - TInt ret = iTelephonyRepository->Set( KSettingsSoftRejectText, aText ); - return ret; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::VTStillImageL -// -// VT Still Image mode. -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::VTStillImageL() - { - TInt StImg = KGSSettingOff; - - User::LeaveIfError( iTelephonyRepository->Get( KSettingsVTStillImage, - StImg ) ); - return StImg; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetVTStillImageL -// -// Sets VT Still Image mode to Shared Data -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetVTStillImageL( const TInt aValue ) - { - User::LeaveIfError( iTelephonyRepository->Set( KSettingsVTStillImage, - aValue ) ); - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::PrefixChangeModeL -// -// Get the Japanese prefix change mode value from shared data. -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::PrefixChangeModeL() - { - TInt mode = KGSSettingOff; - User::LeaveIfError( iTelephonyRepository-> - Get( KSettingsDialPrefixChangeMode, mode ) ); - SwitchValue( mode ); - return mode; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetPrefixChangeModeL -// -// Set the Japanese prefix change mode value to shared data. CenRep OK -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetPrefixChangeModeL( TInt aMode ) - { - SwitchValue( aMode ); - User::LeaveIfError( iTelephonyRepository-> - Set( KSettingsDialPrefixChangeMode, aMode ) ); - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::PrefixChangeDataL -// -// Reads prefix change text from shared data and returns it -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::PrefixChangeDataL( TDes& aText ) - { - User::LeaveIfError( iTelephonyRepository-> - Get( KSettingsDialPrefixText, aText ) ); - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetPrefixChangeDataL -// -// Writes prefix change text to shared data -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetPrefixChangeDataL( const TDesC& aText ) - { - User::LeaveIfError( iTelephonyRepository-> - Set( KSettingsDialPrefixText, aText ) ); - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SwitchValue -// -// Switching value from 1 to 0 and back -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SwitchValue( TInt& aValue ) - { - switch( aValue ) - { - case KGSSettingOff: //0 - aValue = KGSIndexOff; //1 - break; - case KGSSettingOn: //1 - aValue = KGSIndexOn; //0 - break; - default: - aValue = KErrNotFound; - }; - } - - -// --------------------------------------------------------- -// CGSCallPluginModel::RestrictedSendCallerIdSupportedL -// -// Check if Restricted Send Caller ID is supported. -// --------------------------------------------------------- -// -TBool CGSCallPluginModel::RestrictedSendCallerIdSupportedL() - { - TBool supported = EFalse; - - if ( iLocalVariationValues & EGSConfigRestrictedSendCallerId ) - { - supported = ETrue; - } - - return supported; - - } - -// --------------------------------------------------------- -// CGSCallPluginModel::SecureSendCallerIdSupportedL -// -// Check if Secure Send Caller ID is supported. -// --------------------------------------------------------- -// -TBool CGSCallPluginModel::SecureSendCallerIdSupportedL() - { - TBool supported = EFalse; - - if ( iLocalVariationValues & EGSConfigSecureSendCallerId ) - { - supported = ETrue; - } - - return supported; - - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::GetVoIPCallSettingValue -// Gets one of the VoIP call related values (send my Int. call id, -// Internet call waiting, preferred call type, do not disturb or -// Internet call barring) from Central Repository -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::GetVoIPCallSettingValue( - const TGSVoIPSetting aVoipSettingId, TInt& aVoipId ) - { - TInt ret( KErrNone ); - - switch ( aVoipSettingId ) - { - case EGSVoIPSendIntCallId: - ret = iRichCallRepository->Get( KRCSEClir, aVoipId ); - break; - case EGSVoIPCW: - ret = iRichCallRepository->Get( KRCSPSCallWaiting, aVoipId ); - break; - case EGSVoIPPreType: - ret = iRichCallRepository->Get( KRCSEPreferredTelephony, aVoipId ); - break; - case EGSVoIPDnd: - ret = iRichCallRepository->Get( KRCSEDoNotDisturb, aVoipId ); - break; - case EGSVoIPBarring: - ret = iRichCallRepository->Get( KRCSEAnonymousCallBlockRule, aVoipId ); - break; - default: - break; - } - - return ret; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetVoIPCallSettingValue -// Sets one of the VoIP call related values (send my Int. call id, -// Internet call waiting, preferred call type, do not disturb or -// Internet call barring) from Central Repository -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::SetVoIPCallSettingValue( - const TGSVoIPSetting aVoipSettingId, TInt aVoipId ) - { - TInt ret( KErrNone ); - - switch( aVoipSettingId ) - { - case EGSVoIPSendIntCallId: - ret = iRichCallRepository->Set( KRCSEClir, aVoipId ); - break; - case EGSVoIPCW: - ret = iRichCallRepository->Set( KRCSPSCallWaiting, aVoipId ); - break; - case EGSVoIPPreType: - ret = iRichCallRepository->Set( KRCSEPreferredTelephony, aVoipId ); - break; - case EGSVoIPDnd: - ret = iRichCallRepository->Set( KRCSEDoNotDisturb, aVoipId ); - break; - case EGSVoIPBarring: - ret = iRichCallRepository->Set( KRCSEAnonymousCallBlockRule, aVoipId ); - break; - default: - break; - } - - return ret; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::GetSCCPStatus -// Gets SCCP status from Central Repository -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::GetSCCPStatus( TInt& aStatus ) - { - TInt ret( KErrNone ); - ret = iTelephonyRepository->Get( KSCCPinstallUpgrade, aStatus ); - return ret; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::CallDurationL -// -// Get the Call duration setting value -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::CallDurationL() - { - TInt value = KGSSettingOff; - User::LeaveIfError( iLogsRepository-> - Get( KLogsShowCallDuration, value ) ); - - SwitchValue ( value ); - - return value; - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetCallDurationL -// -// Set the Call duration setting value -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetCallDurationL( TInt aValue ) - { - SwitchValue ( aValue ); - User::LeaveIfError( iLogsRepository-> - Set( KLogsShowCallDuration, aValue ) ); - } - -// --------------------------------------------------------- -// CGSTelPluginModel::VoIPSupported -// -// Check if VoIP is supported. -// --------------------------------------------------------- -// -TBool CGSCallPluginModel::VoIPSupported() - { - TInt supported( KGSSettingOff ); -#if defined(__VOIP) && defined(RD_VOIP_REL_2_2) - if ( iSpSettings->IsFeatureSupported( ESupportVoIPFeature ) && - iSpSettings->IsFeatureSupported( ESupportVoIPSSFeature ) ) - { - supported = KGSSettingOn; - } -#else // __VOIP && RD_VOIP_REL_2_2 - if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) ) - { - iTelephonyRepository->Get( KDynamicVoIP, supported ); - } -#endif // __VOIP && RD_VOIP_REL_2_2 - return KGSSettingOff != supported; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::LongPressCallKeyL -// -// Get the Long Press Call Key setting value -// 0,1 --> Inactive (Default value is 1 and when RFS Default value is 0) -// 2 --> Video call -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::LongPressCallKeyL() - { - TInt value = EGSLongPressCallKeyVoiceCall; - #ifdef RD_VT_LONG_SEND_KEY - User::LeaveIfError( iTelephonyRepository-> - Get( KSettingsUiLongCallKeyPress, value ) ); - #endif - return value; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetLongPressCallKeyL -// -// Set the Long Press Call Key setting value -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetLongPressCallKeyL( const TInt aValue ) - { -#ifdef RD_VT_LONG_SEND_KEY - User::LeaveIfError( iTelephonyRepository-> - Set( KSettingsUiLongCallKeyPress, aValue ) ); -#endif - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::MapLongPressKeyCallKeyValue -// -// Maps the Long Press Call Key setting value -// NOTE : EGSLongPressCallKeyVoiceCall is the default value normally -// NOTE: When Restore Factory Settings is done, the default value -// is set to EGSLongPressCallKeyInActive -// Three key values are used for a CenRep key though we have two -// two setting items because these values are also been used by -// CallUi and Phone Application. -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::MapLongPressKeyCallKeyValue( TInt &aValue ) - { -#ifdef RD_VT_LONG_SEND_KEY - switch ( aValue ) - { - case EGSLongPressCallKeyVoiceCall: - aValue = EGSLongPressCallKeyNotSet; - break; - case EGSLongPressCallKeyVideoCall: - aValue = EGSLongPressCallKeyVoiceCall; - break; - default: - break; - } -#endif - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::OwnImageVtCallStatusL -// -// Get the Own Image sending during vt call setting value -// 0,1 --> Inactive (Default value is 1 and when RFS Default value is 0) -// 2 --> Video call -// ---------------------------------------------------------------------------- -// -TInt CGSCallPluginModel::OwnImageVtCallStatusL() - { - TInt value; - User::LeaveIfError( iTelephonyRepository-> - Get( KSettingsVTVideoSending, value ) ); - return value; - } - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SetOwnImageVtCallStatusL -// -// Set the Long Press Call Key setting value -// ---------------------------------------------------------------------------- -// -void CGSCallPluginModel::SetOwnImageVtCallStatusL( const TInt aValue ) - { - User::LeaveIfError( iTelephonyRepository-> - Set( KSettingsVTVideoSending, aValue ) ); - } - - -// ---------------------------------------------------------------------------- -// CGSCallPluginModel::SlideSettingsShown -// -// Check if slide settings items should be shown -// ---------------------------------------------------------------------------- -// -TBool CGSCallPluginModel::SlideSettingsShownL() const - { - TInt value( EGSNotShowSlideSettings ); - - User::LeaveIfError( - iTelephonyRepository->Get( KSettingsShowSlideSettings,value ) ); - - if ( EGSShowSlideSettings == value ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// End of File