diff -r 861562a14a53 -r b7fa36b488f8 profilesapplication/Profiles/ProfileApp/SettingsViewSrc/CProfileSettingsContainer.cpp --- a/profilesapplication/Profiles/ProfileApp/SettingsViewSrc/CProfileSettingsContainer.cpp Thu Aug 19 09:55:16 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1543 +0,0 @@ -/* -* Copyright (c) 2002 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: Container class of settings view. -* -*/ - - - -// CLASS HEADER -#include "CProfileSettingsContainer.h" - -// INTERNAL INCLUDES -#include "CProfileEngineHandler.h" -#include "CProfileIndexHandler.h" -#include "CProfileTabHandler.h" -#include "ProfileSettingsView.hrh" -#include "CProfile3dSettingItem.h" -#include "CProfileFeedbackSettingItem.h" -#include "CProfileVibraSettingItem.h" -#include "CProfilePlayingVolumeSettingItem.h" -#include "CProfileNameSettingItem.h" -#include "CProfileKeypadVolumeSettingItem.h" -#include "CProfileFileListSettingItem.h" -#include "CProfileAlertForSettingItem.h" -#include "CProfileStruct.h" -#include "MProfilesLocalFeatures.h" -#include "ProfilesVariant.hrh" // KProEngFeatureIdVTRingingTone -#include "CProfileSettingsView.h" -#include "MProfileViewHandler.h" -#include "ProfilesDebug.h" - -// EXTERNAL INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include // For BaflUtils -#include // For StringLoader -#include // For KCRUidProfileEngine -#include // For KProEngDefaultRingingTone -#include // For CAknQueryDialog -#include "CProfileNaviPaneContainer.h" // For CProfileNaviPaneContainer -#include // For CAknInformationNote - -// for power save mode handling -#include -#include -#include -#include -#include - -namespace - { - // CONSTANTS - const TUid KUidProfileApp = { 0x100058F8 }; // UID of the application - const TInt KVoIPOFF = 0; - - const TInt KFileCheckDelay = 100000; // microseconds - const TInt KFileCheckInterval = 5000000; - - _LIT( KSettingsViewResourceFileName, "z:PROFILESETTINGSVIEW.RSC" ); - - } - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::CProfileSettingsContainer -// C++ constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -// -CProfileSettingsContainer::CProfileSettingsContainer( - MProfileViewHandler& aProfileViewHandler, - CProfileEngineHandler& aEngineHandler, - MProfileExternalSettingsHandler& aExternalSettingsHandler, - CProfileIndexHandler* aIndexHandler, - CProfileTabHandler* aTabHandler, - CAknTitlePane* aTitlePane ) - : - iResourceLoader( *iCoeEnv ), - iProfileViewHandler( aProfileViewHandler ), - iEngineHandler( aEngineHandler ), - iExternalSettingsHandler( aExternalSettingsHandler ), - iIndexHandler( aIndexHandler ), - iTabHandler( aTabHandler ), - iTitlePane( aTitlePane ), - iAlternateLineService( EFalse ) - { - SetMopParent( &( iProfileViewHandler.View() ) ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::ConstructL( const TRect& aRect, - TInt aResourceId ) - { - iFs = new ( ELeave ) RFs; - User::LeaveIfError( iFs->Connect() ); - - PRODEBUG1( "CProfileSettingsContainer ConstructL(%d)",aResourceId ); - if( iIndexHandler ) - { - iIndexHandler->CreateIndexArrayL(); - } - - iCopyProfile = CProfileStruct::NewL(); - - iLocalFeatures = &( iEngineHandler.Engine()->LocalFeatures() ); - - // Read settings of currently selected profile - ReadProfileL(); - - // Read alternate line service setting and register as observer - if( iSSSettings.Open() == KErrNone ) - { - iSSSettings.Register( ESSSettingsAls, *this ); // ignore return value - TInt als( ESSSettingsAlsNotSupported ); - iSSSettings.Get( ESSSettingsAls, als ); // ignore return value - if( als != ESSSettingsAlsNotSupported ) - { - iAlternateLineService = ETrue; - } - } - - // CRepository session for TTS ringingtone - iTTSSession = CRepository::NewL( KCRUidProfilesLV ); - - iDefaultTone = new( ELeave ) TFileName(); - - iSession = CRepository::NewL(KCRUidProfileEngine); - User::LeaveIfError( iSession->Get( KProEngDefaultRingingTone, *iDefaultTone ) ); - - TInt VoIPSupported( 0 ); - iVoIPVariation = CRepository::NewL( KCRUidTelephonySettings ); - iVoIPVariation->Get( KDynamicVoIP, VoIPSupported ); - iVoIPVariationNotifier = CCenRepNotifyHandler::NewL( *this, *iVoIPVariation, - CCenRepNotifyHandler::EIntKey, KDynamicVoIP ); - iVoIPVariationNotifier->StartListeningL(); - - iVoIPStatus = KVoIPOFF != VoIPSupported; - - iKeySounds = static_cast< CAknAppUi* > ( iEikonEnv->AppUi() )->KeySounds(); - - TParse* fp = new(ELeave) TParse(); - fp->Set(KSettingsViewResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL); - TFileName resourceFileName( fp->FullName() ); - delete fp; - - iResourceLoader.OpenL( resourceFileName ); - - // Construct the setting items - CAknSettingItemList::ConstructFromResourceL( aResourceId ); - // Hide all items that must be hidden - SetHiddenFlagsL(); - - if( iIndexHandler ) - { - iIndexHandler->SetListBox( ListBox() ); - } - if( iTabHandler ) - { - iTabHandler->SetTabObserver( this ); - } - else - { - // If the iTabHandler is NULL, set the navi label text to - // the name of current profile. - iNaviPaneContainer = CProfileNaviPaneContainer::NewL( - *( iAvkonAppUi->StatusPane() ), iEngineHandler ); - - MProfilesNamesArray* nameArray = iEngineHandler.IdArray(); - if( iIndexHandler ) - { - iNaviPaneContainer->SetNaviPaneTextL( - nameArray->MdcaPoint( iIndexHandler->CurrentProfileIndex() ) ); - } - } - - iNotifier = CProfileChangeNotifyHandler::NewL( this ); - - iExternalSettingsHandler.SetObserver( *this ); - SetRect( aRect ); - ActivateL(); - PRODEBUG1( "CProfileSettingsContainer ConstructL(%d) return",aResourceId ); - - //CheckFileExistenceL(); - // If CheckFileExistenceL is called directly from - // ConstructL, DoActivateL in ProfileApp::CProfileSettingsView will be - // blocked while the notes are displayed, causing problems. - // This timer will trigger only once (after 100 ms). After - // that it will be destroyed. - iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard ); - iPeriodic->Start(KFileCheckDelay, - KFileCheckInterval, - TCallBack( CProfileSettingsContainer::StartFileCheckL, this ) - ); - - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::NewL -// Two-phased constructor. Note, this constructor is DEPRECATED and will return -// only NULL if called. -// ----------------------------------------------------------------------------- -// -EXPORT_C CProfileSettingsContainer* CProfileSettingsContainer::NewL( - CAknView& /* aAknView */, - CProfileEngineHandler& /* aEngineHandler */, - CProfileIndexHandler* /* aIndexHandler */, - CProfileTabHandler* /* aTabHandler */, - CAknTitlePane* /* aTitlePane */ ) - { - return NULL; - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -EXPORT_C CProfileSettingsContainer* CProfileSettingsContainer::NewL( - MProfileViewHandler& aProfileViewHandler, - CProfileEngineHandler& aEngineHandler, - MProfileExternalSettingsHandler& aExternalSettingsHandler, - CProfileIndexHandler* aIndexHandler, - CProfileTabHandler* aTabHandler, - CAknTitlePane* aTitlePane ) - { - return CProfileSettingsContainer::NewL( aProfileViewHandler, aEngineHandler, - aExternalSettingsHandler, aIndexHandler, aTabHandler, aTitlePane, - R_PROFILE_SETTING_ITEM_LIST ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -EXPORT_C CProfileSettingsContainer* CProfileSettingsContainer::NewL( - MProfileViewHandler& aProfileViewHandler, - CProfileEngineHandler& aEngineHandler, - MProfileExternalSettingsHandler& aExternalSettingsHandler, - CProfileIndexHandler* aIndexHandler, - CProfileTabHandler* aTabHandler, - CAknTitlePane* aTitlePane, - TInt aResourceId ) - { - CProfileSettingsContainer* self = new( ELeave ) CProfileSettingsContainer( - aProfileViewHandler, aEngineHandler, aExternalSettingsHandler, - aIndexHandler, aTabHandler, aTitlePane ); - CleanupStack::PushL( self ); - self->ConstructL( aProfileViewHandler.View().ClientRect(), aResourceId ); - CleanupStack::Pop( self ); - return self; - } - -// Destructor. -CProfileSettingsContainer::~CProfileSettingsContainer() - { - if( iPeriodic ) - { - iPeriodic->Cancel(); - delete iPeriodic; - } - - if( iFs ) - { - iFs->Close(); - } - delete iFs; - - PRODEBUG( "~CProfileSettingsContainer begin" ); - delete iNotifier; - PRODEBUG( "~CProfileSettingsContainer 2" ); - if( iTabHandler ) - { - iTabHandler->SetTabObserver( NULL ); - } - PRODEBUG( "~CProfileSettingsContainer 3" ); - if( iIndexHandler ) - { - iIndexHandler->SetListBox( NULL ); - } - PRODEBUG( "~CProfileSettingsContainer 4" ); - iResourceLoader.Close(); - PRODEBUG( "~CProfileSettingsContainer 5" ); - ReleaseProfile(); - PRODEBUG( "~CProfileSettingsContainer 6" ); - delete iCopyProfile; - PRODEBUG( "~CProfileSettingsContainer 7" ); - - if ( iVoIPVariationNotifier ) - { - iVoIPVariationNotifier->StopListening(); - delete iVoIPVariationNotifier; - } - if ( iVoIPVariation ) - { - delete iVoIPVariation; - } - - delete iTTSSession; - delete iSession; - - delete iDefaultTone; - PRODEBUG( "~CProfileSettingsContainer 8" ); - - iSSSettings.Close(); - PRODEBUG( "~CProfileSettingsContainer end" ); - delete iNaviPaneContainer; - } - -// ------------------------------------------------------------------------------ -// CProfileSettingsContainer::StartFileCheckL -// ------------------------------------------------------------------------------ -// -TInt CProfileSettingsContainer::StartFileCheckL( TAny* aObj ) - { - static_cast(aObj)->DoFileCheckL(); - return 1; - } - -// ------------------------------------------------------------------------------ -// CProfileSettingsContainer::DoFileCheckL -// ------------------------------------------------------------------------------ -// -void CProfileSettingsContainer::DoFileCheckL() - { - if( iPeriodic ) - { - iPeriodic->Cancel(); - delete iPeriodic; - iPeriodic = NULL; - } - - CheckFileExistenceL(); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::AllowedToChange -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool CProfileSettingsContainer::AllowedToChange( - TInt aSettingItemId ) const - { - TUint32 flags( iProfile->ModifiableFlags() ); - switch( aSettingItemId ) - { - // Fall through: If ringing tone is not allowed to change, then none of - // these setting items are allowed to change. - case EProfileSettingRingingToneId: - case EProfileSettingRingingToneLine1Id: - case EProfileSettingRingingToneLine2Id: - { - TInt profileId( 0 ); - // Get id of the edited profile - profileId=iProfile->ProfileName().Id(); - if( profileId == EProfileOffLineId ) - { - // VOIP Changes: WLAN can be enabled also in off-line profile - TBool featuresSupported( - FeatureManager::FeatureSupported(KFeatureIdCommonVoip) - && - FeatureManager::FeatureSupported(KFeatureIdProtocolWlan) - ); - return ( ( flags & EProfileFlagRingingTone ) && - featuresSupported && iVoIPStatus ); - } - else - { - return flags & EProfileFlagRingingTone; - } - } - - - case EProfileSettingVideoCallToneId: - { - return flags & EProfileFlagVideoCallRingingTone; - } - case EProfileSettingRingingTypeId: - { - return flags & EProfileFlagRingingType; - } - case EProfileSettingRingingVolumeId: - { - return flags & EProfileFlagRingingVolume; - } - case EProfileSettingMediaVolumeId: - { - return flags & EProfileFlagMediaVolume; - } - case EProfileSettingMessageAlertToneId: - { - return flags & EProfileFlagMessageAlertTone; - } - case EProfileSettingEmailAlertToneId: - { - return flags & EProfileFlagEmailAlertTone; - } - case EProfileSettingVibratingAlertId: - { - return flags & EProfileFlagVibratingAlert; - } - case EProfileSettingEmailVibratingAlertId: - { - return flags & EProfileFlagVibratingAlert; - } - case EProfileSettingKeypadVolumeId: - { - return flags & EProfileFlagKeypadVolume; - } - case EProfileSettingWarningAndGameTonesId: - { - return flags & EProfileFlagWarningTones; - } - case EProfileSettingTTSRingingToneId: - { - return flags & EProfileFlagTextToSpeechTone; - } - case EProfileSettingAlertForId: - { - return flags & EProfileFlagAlertFor; - } - case EProfileSettingProfileNameId: - { - return flags & EProfileFlagProfileName; - } - case EProfileSettingPTTRingingToneId: - { - return flags & EProfileFlagPttTone; - } - case EProfileSettingPTTStatusId: - { - return flags & EProfileFlagPttStatus; - } - case EProfileSettingTactileFeedbackId: - { - return flags & EProfileFlagTactileFeedback; - } - case EProfileSettingAudioFeedbackId: - { - return flags & EProfileFlagAudioFeedback; - } - case EProfileSetting3dEffectId: - { - return flags & EProfileFlag3DEffect; - } - case EProfileSetting3dEchoId: - { - return flags & EProfileFlag3DEcho; - } - - default: - { - return iExternalSettingsHandler.AllowedToChange( aSettingItemId ); - } - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::ReleaseProfile -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::ReleaseProfile() - { - if( iProfile ) - { - iProfile->Release(); - iProfile = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::ReadProfileL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::ReadProfileL() - { - TInt profileId( KErrNotFound ); - if( iIndexHandler ) - { - // Index handler is set, get id of the edited profile - profileId = iEngineHandler.IdForIndex( - iIndexHandler->CurrentProfileIndex() ); - } - else - { - // Index handler is not set. - profileId = User::LeaveIfError( - iEngineHandler.Engine()->ActiveProfileId() ); - } - MProfileExtended* profile = iEngineHandler.Engine()->ProfileLC( profileId ); - iCopyProfile->LoadL( profile ); - CleanupStack::Pop(); // profile - ReleaseProfile(); // delete old iProfile - iProfile = profile; - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::SetHiddenFlagsL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::SetHiddenFlagsL() - { - CAknSettingItemArray* array = SettingItemArray(); - TUint32 flags( iProfile->VisibleFlags() ); - TInt profileId( 0 ); - const MProfileTones& tones = iProfile->ProfileTones(); - const TProfileToneSettings& toneSettings = tones.ToneSettings(); - - TBool hide3DEcho = EFalse; - TInt effect = iProfile->ProfileExtraSettings().Profile3DToneSettings().Effect(); - if ( effect == EProfile3DEffectOff || effect == EProfile3DEffectStereoWidening ) - { - hide3DEcho = ETrue; - } - - // Get id of the edited profile - profileId=iProfile->ProfileName().Id(); - - if( profileId == EProfileOffLineId ) - { - TBool featuresSupported( - FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) && - FeatureManager::FeatureSupported( KFeatureIdProtocolWlan) ); - SetItemHidden( EProfileSettingRingingToneId, array, - ( iAlternateLineService ) || ( ( ~flags & EProfileFlagRingingTone ) - || !featuresSupported || !iVoIPStatus ) ); - SetItemHidden( EProfileSettingRingingToneLine1Id, array, - ( !iAlternateLineService ) || ( ( ~flags & EProfileFlagRingingTone ) - || !featuresSupported || !iVoIPStatus ) ); - SetItemHidden( EProfileSettingRingingToneLine2Id, array, - ( !iAlternateLineService ) || ( ( ~flags & EProfileFlagRingingTone ) - || !featuresSupported || !iVoIPStatus ) ); - SetItemHidden( EProfileSetting3dEffectId, array, - !( ( FeatureManager::FeatureSupported( KFeatureId3DRingingTones ) ) && - ( flags & EProfileFlag3DEffect ) && featuresSupported ) ); - SetItemHidden( EProfileSetting3dEchoId, array, - !( ( FeatureManager::FeatureSupported( KFeatureId3DRingingTones ) ) && - ( flags & EProfileFlag3DEcho ) && featuresSupported ) ); - } - else - { - SetItemHidden( EProfileSettingRingingToneId, array, - ( iAlternateLineService ) || ( ~flags & EProfileFlagRingingTone ) ); - SetItemHidden( EProfileSettingRingingToneLine1Id, array, - ( !iAlternateLineService ) || ( ~flags & EProfileFlagRingingTone ) ); - SetItemHidden( EProfileSettingRingingToneLine2Id, array, - ( !iAlternateLineService ) || ( ~flags & EProfileFlagRingingTone ) ); - SetItemHidden( EProfileSetting3dEffectId, array, - !( ( FeatureManager::FeatureSupported( KFeatureId3DRingingTones ) ) && - ( flags & EProfileFlag3DEffect ) ) ); - SetItemHidden( EProfileSetting3dEchoId, array, - !( ( FeatureManager::FeatureSupported( KFeatureId3DRingingTones ) ) && - ( flags & EProfileFlag3DEcho ) ) ); - } - - if ( hide3DEcho ) - { - SetItemHidden( EProfileSetting3dEchoId, array, ETrue ); - } - - SetItemHidden( EProfileSettingVideoCallToneId, array, - !( ( iLocalFeatures->IsFeatureSupported( - KProEngFeatureIdVTRingingTone ) ) && - ( flags & EProfileFlagVideoCallRingingTone ) && - FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) ) ); - - SetItemHidden( EProfileSettingMessageAlertToneId, array, - ~flags & EProfileFlagMessageAlertTone ); - - SetItemHidden( EProfileSettingEmailAlertToneId, array, - !( ( FeatureManager::FeatureSupported( KFeatureIdAlwaysOnLineEmail ) ) && - ( flags & EProfileFlagEmailAlertTone ) ) ); - - SetItemHidden( EProfileSettingRingingTypeId, array, - ~flags & EProfileFlagRingingType ); - - SetItemHidden( EProfileSettingRingingVolumeId, array, - ~flags & EProfileFlagRingingVolume ); - - SetItemHidden( EProfileSettingMediaVolumeId, array, - !( ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) ) && - ( flags & EProfileFlagMediaVolume ) ) ); - - SetItemHidden( EProfileSettingVibratingAlertId, array, - ~flags & EProfileFlagVibratingAlert ); - - if(!iCopyProfile->iVibratingAlert) - { - SetItemHidden( EProfileSettingEmailVibratingAlertId, array,ETrue ); - } - else - { - SetItemHidden( EProfileSettingEmailVibratingAlertId, array,EFalse ); - } - - SetItemHidden( EProfileSettingKeypadVolumeId, array, - ~flags & EProfileFlagKeypadVolume ); - - SetItemHidden( EProfileSettingWarningAndGameTonesId, array, - ~flags & EProfileFlagWarningTones ); - - // Check if TTS ringingtone is supported - TBool textToSpeech( EFalse ); - User::LeaveIfError( iTTSSession->Get( KProfilesLVFlags, textToSpeech ) ); - textToSpeech &= KProEngFeatureIdTTSRingingTone; - - SetItemHidden( EProfileSettingTTSRingingToneId, array, - !( textToSpeech && ( flags & EProfileFlagTextToSpeechTone ) ) ); - - SetItemHidden( EProfileSettingAlertForId, array, - ~flags & EProfileFlagAlertFor ); - - SetItemHidden( EProfileSettingProfileNameId, array, - ~flags & EProfileFlagProfileName ); - - SetItemHidden( EProfileSettingPTTRingingToneId, array, - !( ( FeatureManager::FeatureSupported( KFeatureIdOmaPoc ) ) && - ( flags & EProfileFlagPttTone ) ) ); - - SetItemHidden( EProfileSettingPTTStatusId, array, - !( ( FeatureManager::FeatureSupported( KFeatureIdOmaPoc ) ) && - ( flags & EProfileFlagPttStatus ) ) ); - - SetItemHidden( EProfileSettingTactileFeedbackId, array, - !( ( FeatureManager::FeatureSupported( KFeatureIdTactileFeedback ) ) && - ( flags & EProfileFlagTactileFeedback ) ) ); - SetItemHidden( EProfileSettingAudioFeedbackId, array, - !( ( FeatureManager::FeatureSupported( KFeatureIdTactileFeedback ) ) && - ( flags & EProfileFlagAudioFeedback ) ) ); - - - // Check if SilentMode is supported - TBool silentMode( - iLocalFeatures->IsFeatureSupported( KProEngFeatureIdForceSilentMode ) ); - - if( ( silentMode ) && ( profileId == EProfileSilentId ) ) - { - SetItemHidden( EProfileSettingRingingToneId, array, ETrue ); - SetItemHidden( EProfileSettingRingingToneLine1Id, array, ETrue ); - SetItemHidden( EProfileSettingRingingToneLine2Id, array, ETrue ); - SetItemHidden( EProfileSettingVideoCallToneId, array, ETrue ); - SetItemHidden( EProfileSettingTTSRingingToneId, array, ETrue ); - SetItemHidden( EProfileSettingRingingTypeId, array, ETrue ); - SetItemHidden( EProfileSettingRingingVolumeId, array, ETrue ); - SetItemHidden( EProfileSettingMessageAlertToneId, array, ETrue ); - SetItemHidden( EProfileSettingEmailAlertToneId, array, ETrue ); - SetItemHidden( EProfileSettingKeypadVolumeId, array, ETrue ); - SetItemHidden( EProfileSettingWarningAndGameTonesId, array, ETrue ); - SetItemHidden( EProfileSettingPTTRingingToneId, array, ETrue ); - SetItemHidden( EProfileSettingProfileNameId, array, ETrue ); - SetItemHidden( EProfileSettingAudioFeedbackId, array, ETrue ); - SetItemHidden( EProfileSetting3dEffectId, array, ETrue ); - SetItemHidden( EProfileSetting3dEchoId, array, ETrue ); - } - - iExternalSettingsHandler.SetHiddenItems( *array ); - - if( iIndexHandler ) - { - iIndexHandler->LoadIndices(); - } - - HandleChangeInItemArrayOrVisibilityL(); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::UpdateSettingsL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::UpdateSettingsL( TBool aReadProfileSettings ) - { - // Set listbox invicible to avoid flicker - CEikListBox* listBox = ListBox(); - listBox->MakeVisible( EFalse ); - - // Leavable function calls must be trapped in order to set listbox - // back to visible again if a leave occurs - TRAPD( error, - if( aReadProfileSettings ) - { - ReadProfileL(); - } - LoadSettingsL(); // from CAknSettingItemList - SetHiddenFlagsL(); - ); - - if( aReadProfileSettings && iIndexHandler ) - { - // Set focus back on correct index - iIndexHandler->LoadIndices(); - } - - // Set listbox back to visible - listBox->MakeVisible( ETrue ); - - // Now proceed with the leave if one occured - User::LeaveIfError( error ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::EditItemL -// ----------------------------------------------------------------------------- -// -EXPORT_C void CProfileSettingsContainer::EditItemL( TInt aIndex, TBool aCalledFromMenu ) - { - PRODEBUG1( "CProfileSettingsContainer EditItemL(%d) begin",aIndex ); - - // Prevent opening of several setting items - if( iItemEdited ) - { - return; - } - - CAknSettingItem* item = SettingItemArray()->At( aIndex ); - TInt identifier( item->Identifier() ); - - if ( PowerSaveMode( identifier ) ) - { - HBufC* buf = StringLoader::LoadLC( R_PROFILE_TEXT_PSM_INFONOTE ); - CAknInformationNote* queryDialog = new (ELeave) CAknInformationNote( ETrue ); - queryDialog->ExecuteLD( *buf ); - CleanupStack::PopAndDestroy( buf ); - return; - } - - if( !AllowedToChange( identifier ) ) - { - // If a setting is not allowed to change, "swallow" list box event. - return; - } - - HBufC* titleText = NULL; - - if( ( identifier != EProfileSettingRingingToneId ) && - ( identifier != EProfileSettingRingingToneLine1Id ) && - ( identifier != EProfileSettingRingingToneLine2Id ) && - ( identifier != EProfileSettingVideoCallToneId ) && - ( identifier != EProfileSettingMessageAlertToneId ) && - ( identifier != EProfileSettingEmailAlertToneId ) && - ( identifier != EProfileSettingPTTRingingToneId ) ) - { - if( aCalledFromMenu || - !( identifier == EProfileSettingVibratingAlertId || - identifier == EProfileSettingEmailVibratingAlertId || - identifier == EProfileSettingWarningAndGameTonesId || - identifier == EProfileSettingTTSRingingToneId ) ) - { - // Set profile name as title pane text. - // Tone selections launch a pop-up, so title pane is not changed. - // Binary pop-up setting item with two available values does not - // launch a setting page when not called from menu so title pane - // is not changed. - if( iTitlePane ) - { - titleText = iTitlePane->Text()->AllocLC(); - SetTitlePaneTextL( iCopyProfile->iTitleName ); - } - } - } - - - TInt threeDEffect = iCopyProfile->i3DEffect; - if( identifier == EProfileSetting3dEffectId && iIndexHandler ) - { - iIndexHandler->StoreIndices(); - } - - TInt vibratingAlert = iCopyProfile->iVibratingAlert; - if( identifier == EProfileSettingVibratingAlertId && iIndexHandler ) - { - iIndexHandler->StoreIndices(); - } - - // Set boolean value to ETrue that we know that the settings container - // is in editing mode. - iItemEdited = ETrue; - // Store currently active profile id - TInt activeProfileId( iEngineHandler.Engine()->ActiveProfileId() ); - - // Trap to set boolean value back to EFalse after EditItemL finalized. - PRODEBUG1( "CProfileSettingsContainer EditItemL before list::EditItemL(%d)",aIndex ); - TRAPD( error, CAknSettingItemList::EditItemL( aIndex, aCalledFromMenu ) ); - PRODEBUG1( "CProfileSettingsContainer EditItemL after list::EditItemL(),error=%d",error ); - iItemEdited = EFalse; - User::LeaveIfError( error ); - - // We don't know whether user cancelled or oked the setting so we must - // store the data from setting item to the modified profile (iCopyProfile). - item->StoreL(); - // Compare the settings of the modified profile - // to the settings currently in Profile Engine. - if( !iCopyProfile->CompareL( iProfile ) ) - { - // Handle removing of DRM automated content - iCopyProfile->RemoveAutomatedContentL( iProfile ); - // Something has changed. Store settings of modified profile. - iCopyProfile->StoreL( iProfile ); - // Trap saving of the profile. If for example flash memory runs out - // we can still revert the UI to its previous state. - TRAP( error, iEngineHandler.Engine()->CommitChangeL( *iProfile ) ); - if( error != KErrNone || PowerSaveMode() ) - { - // An User::Leave occurred. Try to read old settings to memory. - ReadProfileL(); - // Update setting item so UI is left to correct state. - item->LoadL(); - item->UpdateListBoxTextL(); - } - else if( identifier == EProfileSettingProfileNameId ) - { - // Profile name was changed. - UpdateProfileNamesL(); - } - - if ( threeDEffect != iCopyProfile->i3DEffect ) - { - UpdateSettingsL( EFalse ); // hide 3DEcho if 3DEffect is off - } - - if ( vibratingAlert != iCopyProfile->iVibratingAlert ) - { - UpdateSettingsL( EFalse ); //hide emailVibrating alert if vibrating alert is off - } - } - // If the setting is an external (= only in Tones View): - iExternalSettingsHandler.StoreIfChangedL( identifier ); - - if( titleText ) - { - // Set title pane text back - SetTitlePaneTextL( *titleText ); - CleanupStack::PopAndDestroy( titleText ); - } - // Compare active profile to previously active profile - TInt newActiveProfileId( iEngineHandler.Engine()->ActiveProfileId() ); - if( activeProfileId != newActiveProfileId ) - { - // Active profile has changed while editing. Update UI. - HandleActiveProfileEventL( EProfileNewActiveProfile, newActiveProfileId ); - } - User::LeaveIfError( error ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::CreateSettingItemL -// ----------------------------------------------------------------------------- -// -CAknSettingItem* CProfileSettingsContainer::CreateSettingItemL( - TInt aIdentifier ) - { - PRODEBUG1( "CProfileSettingsContainer CreateSettingsItemL(%d)",aIdentifier ); - CAknSettingItem* settingItem = NULL; - - switch( aIdentifier ) - { - // Flow through: Ringing tone and RT line 1 are stored to the same - // variable because they can not exist at the same time. - case EProfileSettingRingingToneId: - case EProfileSettingRingingToneLine1Id: - { - settingItem = CreateFileListSettingItemL( - *iCopyProfile->iRingingTone, aIdentifier ); - break; - } - case EProfileSettingRingingToneLine2Id: - { - settingItem = CreateFileListSettingItemL( - *iCopyProfile->iRingingToneLine2, aIdentifier ); - break; - } - case EProfileSettingVideoCallToneId: - { - settingItem = CreateFileListSettingItemL( - *iCopyProfile->iVideoCallTone, aIdentifier ); - break; - } - case EProfileSettingMessageAlertToneId: - { - settingItem = CreateFileListSettingItemL( - *iCopyProfile->iMessageAlertTone, aIdentifier ); - break; - } - case EProfileSettingEmailAlertToneId: - { - settingItem = CreateFileListSettingItemL( - *iCopyProfile->iEmailAlertTone, aIdentifier ); - break; - } - case EProfileSettingRingingTypeId: - { - settingItem = new( ELeave ) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iCopyProfile->iRingingType ); - break; - } - case EProfileSettingRingingVolumeId: - { - settingItem = new( ELeave ) CProfilePlayingVolumeSettingItem( - aIdentifier, iCopyProfile->iRingingVolume, - *iCopyProfile->iRingingTone, - iCopyProfile->iRingingType, - iCopyProfile->iVibratingAlert, - EFalse ); //Display confirmation note for maximum volume - break; - } - case EProfileSettingMediaVolumeId: - { - settingItem = new( ELeave ) CProfilePlayingVolumeSettingItem( - aIdentifier, iCopyProfile->iMediaVolume, - *iCopyProfile->iRingingTone, - iCopyProfile->iRingingType, - iCopyProfile->iVibratingAlert, - EFalse ); //Do not display confirmation note for maximum volume - break; - } - case EProfileSettingVibratingAlertId: - { - settingItem = new( ELeave ) CAknBinaryPopupSettingItem( - aIdentifier, iCopyProfile->iVibratingAlert ); - break; - } - case EProfileSettingEmailVibratingAlertId: - { - settingItem = new( ELeave ) CAknBinaryPopupSettingItem( - aIdentifier, iCopyProfile->iEmailVibratingAlert ); - break; - } - case EProfileSettingKeypadVolumeId: - { - settingItem = new( ELeave ) CProfileKeypadVolumeSettingItem( - aIdentifier, iCopyProfile->iKeypadVolume, iKeySounds ); - break; - } - case EProfileSettingWarningAndGameTonesId: - { - settingItem = new( ELeave ) CAknBinaryPopupSettingItem( - aIdentifier, iCopyProfile->iWarningAndGameTones ); - break; - } - case EProfileSettingAlertForId: - { - settingItem = new( ELeave ) CProfileAlertForSettingItem( - aIdentifier, iCopyProfile->iContactList, iCoeEnv ); - break; - } - case EProfileSettingProfileNameId: - { - settingItem = new( ELeave ) CProfileNameSettingItem( - aIdentifier, iCopyProfile->iProfileName, iEngineHandler ); - break; - } - case EProfileSettingTTSRingingToneId: - { - settingItem = new( ELeave ) CAknBinaryPopupSettingItem( - aIdentifier, iCopyProfile->iTextToSpeech ); - break; - } - case EProfileSettingPTTRingingToneId: - { - settingItem = CreateFileListSettingItemL( - *iCopyProfile->iPTTRingingTone, aIdentifier ); - break; - } - case EProfileSettingPTTStatusId: - { - settingItem = new( ELeave ) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iCopyProfile->iPTTStatus ); - break; - } - case EProfileSettingTactileFeedbackId: - { - /* - settingItem = new( ELeave ) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iCopyProfile->iTactileFeedback ); - */ - settingItem = new( ELeave ) CProfileFeedbackSettingItem( - aIdentifier, iCopyProfile->iTactileFeedback ); - break; - } - case EProfileSettingAudioFeedbackId: - { - /* - settingItem = new( ELeave ) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iCopyProfile->iAudioFeedback ); - */ - settingItem = new( ELeave ) CProfileFeedbackSettingItem( - aIdentifier, iCopyProfile->iAudioFeedback ); - break; - } - case EProfileSetting3dEffectId: - { - /* - settingItem = new( ELeave ) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iCopyProfile->i3DEffect ); - */ - settingItem = new( ELeave ) CProfile3dSettingItem( - aIdentifier, - iCopyProfile->i3DEffect, - *iCopyProfile->iRingingTone, - iCopyProfile->iRingingType, - iCopyProfile->iVibratingAlert, - iCopyProfile->iRingingVolume, - iCopyProfile->i3DEcho ); - break; - } - case EProfileSetting3dEchoId: - { - /* - settingItem = new( ELeave ) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iCopyProfile->i3DEcho ); - */ - settingItem = new( ELeave ) CProfile3dSettingItem( - aIdentifier, - iCopyProfile->i3DEcho, - *iCopyProfile->iRingingTone, - iCopyProfile->iRingingType, - iCopyProfile->iVibratingAlert, - iCopyProfile->iRingingVolume, - iCopyProfile->i3DEffect ); - break; - } - - default: - { - PRODEBUG1( "CProfileSettingsContainer before extShandler::CreateSI(%d)",aIdentifier ); - settingItem = iExternalSettingsHandler.CreateSettingItemL( aIdentifier ); - PRODEBUG( "CProfileSettingsContainer after extShandler::CreateSI" ); - break; - } - } - PRODEBUG1( "CProfileSettingsContainer CreateSettingsItemL(%d) before return",aIdentifier ); - return settingItem; - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::CheckFileExistenceL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::CheckFileExistenceL() - { - CAknSettingItemArray* array = SettingItemArray(); - - if( !IsItemHidden( EProfileSettingRingingToneId, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iRingingTone ) ) - { - TParsePtrC tone( *iCopyProfile->iRingingTone ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - - if( !IsItemHidden( EProfileSettingRingingToneLine1Id, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iRingingTone ) ) - { - TParsePtrC tone( *iCopyProfile->iRingingTone ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - - if( !IsItemHidden( EProfileSettingRingingToneLine2Id, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iRingingToneLine2 ) ) - { - TParsePtrC tone( *iCopyProfile->iRingingToneLine2 ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - - if( !IsItemHidden( EProfileSettingVideoCallToneId, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iVideoCallTone ) ) - { - TParsePtrC tone( *iCopyProfile->iVideoCallTone ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - - if( !IsItemHidden( EProfileSettingMessageAlertToneId, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iMessageAlertTone ) ) - { - TParsePtrC tone( *iCopyProfile->iMessageAlertTone ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - - if( !IsItemHidden( EProfileSettingEmailAlertToneId, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iEmailAlertTone ) ) - { - TParsePtrC tone( *iCopyProfile->iEmailAlertTone ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - - if( !IsItemHidden( EProfileSettingPTTRingingToneId, array ) ) - { - if( !BaflUtils::FileExists( *iFs, *iCopyProfile->iPTTRingingTone ) ) - { - TParsePtrC tone( *iCopyProfile->iPTTRingingTone ); - HBufC* ringtoneNotFoundText = - StringLoader::LoadLC( - R_PROFILE_CONFIRM_RINGTONE_FOUND, tone.NameAndExt() ); - - CProfileSettingsContainer::LaunchDialogL( *ringtoneNotFoundText ); - CleanupStack::PopAndDestroy( ringtoneNotFoundText ); - } - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::LaunchDialogL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::LaunchDialogL( const TDesC& aTitleText ) - { - CAknQueryDialog* query = CAknQueryDialog::NewL(); - const TInt ret( query->ExecuteLD( - R_PROFILE_CONFIRM_RINGTONE_FOUND_QUERY, aTitleText) ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::CreateFileListSettingItemL -// ----------------------------------------------------------------------------- -// -CAknSettingItem* CProfileSettingsContainer::CreateFileListSettingItemL( - TDes& aFileName, TInt aIdentifier ) - { - CAknSettingItem* settingItem = new( ELeave ) CProfileFileListSettingItem( - aIdentifier, - aFileName, - iCopyProfile->iRingingType, - iCopyProfile->iRingingVolume, - iCopyProfile->iVibratingAlert, - iCopyProfile->i3DEffect, - iCopyProfile->i3DEcho, - iCoeEnv ); - - return settingItem; - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::IndexForId -// ----------------------------------------------------------------------------- -// -TInt CProfileSettingsContainer::IndexForId( TInt aId ) const - { - CAknSettingItemArray* array = SettingItemArray(); - TInt count( array->Count() ); - for( TInt index( 0 ); index < count; index++ ) - { - if( array->At( index )->Identifier() == aId ) - { - // Searched ID was found, return index - return index; - } - } - return KErrNotFound; - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::SetItemHidden -// Sets an item hidden if an index for the id is found. -// In other words does nothing if feature is not supported. -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::SetItemHidden( TInt aId, - CAknSettingItemArray* aArray, TBool aHidden ) - { - TInt index( IndexForId( aId ) ); - if( index == KErrNotFound ) - { - return; - } - aArray->At( index )->SetHidden( aHidden ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::IsItemHidden -// -// ----------------------------------------------------------------------------- -// -TBool CProfileSettingsContainer::IsItemHidden( TInt aId, - CAknSettingItemArray* aArray ) const - { - TInt index( IndexForId( aId ) ); - if( index == KErrNotFound ) - { - return ETrue; - } - - return aArray->At( index )->IsHidden(); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::SetTitlePaneTextL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::SetTitlePaneTextL( const TDesC& aTitle ) - { - if( !iTitlePane ) - { - return; - } - - if( aTitle.Length() > 0 ) - { - iTitlePane->SetTextL( aTitle ); - } - else - { - iTitlePane->SetTextToDefaultL(); // Application name - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::UpdateProfileNamesL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::UpdateProfileNamesL() - { - if( iIndexHandler ) - { - TInt newProfileIndex( iIndexHandler->ReadIdArrayAndUpdateL() ); - if( iTabHandler ) - { - // Refresh tabs with changed profile names - iTabHandler->RefreshTabsL(); - iTabHandler->SetActiveTab( newProfileIndex ); - } - else - { - // If the iTabHandler is NULL and the iNaviPaneContainer is not NULL - // Set the text of navi pane to currently personlize profile's name. - if ( iNaviPaneContainer ) - { - MProfilesNamesArray* nameArray = iEngineHandler.IdArray(); - iNaviPaneContainer->SetNaviPaneTextL( - nameArray->MdcaPoint( newProfileIndex ) ); - } - } - } - else - { - // No index handler. Just refresh profile name array. - iEngineHandler.ReadIdArrayL(); - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::SizeChanged -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::SizeChanged() - { - CEikListBox* lb = ListBox(); - if( lb ) - { - lb->SetRect( Rect() ); // Set container's rect to listbox - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::HandleListBoxEventL -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::HandleListBoxEventL( - CEikListBox* aListBox, TListBoxEvent aEventType ) - { - if( aEventType == EEventEnterKeyPressed || - aEventType == EEventItemDoubleClicked ) - { - CAknSettingItemArray* array = SettingItemArray(); - if( !AllowedToChange( array->At( array->ItemIndexFromVisibleIndex( - ListBox()->CurrentItemIndex() ) )->Identifier() ) ) - { - // If a setting is not allowed to change, "swallow" list box event. - return; - } - } - CAknSettingItemList::HandleListBoxEventL( aListBox, aEventType ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::GetHelpContext -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = KUidProfileApp; - if( !iExternalSettingsHandler.GetHelpContext( aContext ) ) - { - aContext.iContext = KMODE_HLP_PERSONALISE; - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::PhoneSettingChanged -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::PhoneSettingChanged( - TSSSettingsSetting aSetting, TInt aNewValue ) - { - if( aSetting == ESSSettingsAls ) - { - iAlternateLineService = ( aNewValue != ESSSettingsAlsNotSupported ); - if( iIndexHandler ) - { - iIndexHandler->StoreIndices(); - } - // error ignored. If not enough memory to refresh the UI, - // don't bother launching an error note. - TRAP_IGNORE( SetHiddenFlagsL() ); - if( iIndexHandler ) - { - iIndexHandler->LoadIndices(); - } - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::TabChangedL -// When a tab changes, this method gets called. -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::TabChangedL( TInt /* aIndex */ ) - { - UpdateSettingsL(); - - CEikListBox* listBox = ListBox(); - if( listBox ) - { - listBox->UpdateScrollBarsL(); - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::HandleActiveProfileEventL -// When active profile changes, this method gets called. -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::HandleActiveProfileEventL( - TProfileEvent /* aProfileEvent */, TInt /* aProfileId */ ) - { - /* - if( iItemEdited ) - { - // Do not update UI if an item is being edited. - return; - } - */ - UpdateProfileNamesL(); - UpdateSettingsL(); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::HandleExternalSettingsChangedL -// When external settings change, this method gets called. -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::HandleExternalSettingsChangedL() - { - UpdateSettingsL( EFalse ); - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::HandleResourceChange -// ----------------------------------------------------------------------------- -// -void CProfileSettingsContainer::HandleResourceChange( TInt aType ) - { - if ( aType == KEikDynamicLayoutVariantSwitch || - aType == KAknsMessageSkinChange ) - { - iProfileViewHandler.UpdateClientRect(); - } - CAknSettingItemList::HandleResourceChange( aType ); - } - -// ---------------------------------------------------- -// CProfileSettingsContainer::HandleNotifyInt -// ---------------------------------------------------- -// -void CProfileSettingsContainer::HandleNotifyInt( - const TUint32 aID, - const TInt aNewValue ) - { - if ( KDynamicVoIP == aID) - { - iVoIPStatus = KVoIPOFF != aNewValue; - } - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::ItemEdited -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool CProfileSettingsContainer::ItemEdited() const - { - return iItemEdited; - } - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::PowerSaveMode -// -// ----------------------------------------------------------------------------- -// -TBool CProfileSettingsContainer::PowerSaveMode( TInt aSettingId ) - { - TInt ret = EFalse; - - if ( aSettingId == EProfileSettingVibratingAlertId || - aSettingId == EProfileSettingKeypadVolumeId || - aSettingId == EProfileSettingTactileFeedbackId || - aSettingId == EProfileSettingAudioFeedbackId ||aSettingId == EProfileSettingEmailVibratingAlertId) - { - ret = PowerSaveMode(); - } - - return ret; - } - - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::PowerSaveModeL -// -// ----------------------------------------------------------------------------- -// -TBool CProfileSettingsContainer::PowerSaveModeL() - { - if( !FeatureManager::FeatureSupported( KFeatureIdPowerSave ) ) - { - return EFalse; - } - - TInt psm = EPsmsrvModeNormal; - - // KProEngPsmChanged PubSub key is set by GSProfilesPlugin when power save - // mode changes. If the key cannot be read (doesn't exist), PSM hasn't - // changed since the last boot and the mode is read from PSM CenRep. - if( RProperty::Get( KPSUidProfileEngine, KProEngPsmChanged, psm ) != KErrNone ) - { - CRepository* cenrep = CRepository::NewLC( KCRUidPowerSaveMode ); - User::LeaveIfError( cenrep->Get( KPsmCurrentMode, psm ) ); - CleanupStack::PopAndDestroy( cenrep ); - } - - if ( psm == EPsmsrvModePowerSave ) - { - return ETrue; - } - - return EFalse; - } - - -// ----------------------------------------------------------------------------- -// CProfileSettingsContainer::PowerSaveMode -// -// ----------------------------------------------------------------------------- -// -TBool CProfileSettingsContainer::PowerSaveMode() - { - TBool psm = EFalse; - - TRAPD( err, psm = PowerSaveModeL() ); - - if ( err != KErrNone ) - { - return EFalse; - } - - return psm; - } - - - -// End of File