diff -r 000000000000 -r 84ad3b177aa3 pushmtm/MtmUtilSrc/PushMtmSettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pushmtm/MtmUtilSrc/PushMtmSettings.cpp Mon Mar 30 12:49:49 2009 +0300 @@ -0,0 +1,320 @@ +/* +* 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 the License "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: CPushMtmSettings class definition. +* +*/ + + + +// INCLUDE FILES + +#include "PushMtmSettings.h" +#include "PushInitiatorList.h" +#include "PushMtmUtilPanic.h" +#include "PushMtmLog.h" +#include "PushMtmPrivateCRKeys.h" +#include +#include +#include +#include +#include + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CPushMtmSettings::NewL +// --------------------------------------------------------- +// +EXPORT_C CPushMtmSettings* CPushMtmSettings::NewL() + { + CPushMtmSettings* self = CPushMtmSettings::NewLC(); + CleanupStack::Pop(); + return self; + } + +// --------------------------------------------------------- +// CPushMtmSettings::NewLC +// --------------------------------------------------------- +// +EXPORT_C CPushMtmSettings* CPushMtmSettings::NewLC() + { + PUSHLOG_ENTERFN("CPushMtmSettings::NewLC") + + CPushMtmSettings* self = new (ELeave) CPushMtmSettings(); + CleanupStack::PushL( self ); + self->ConstructL(); + + PUSHLOG_LEAVEFN("CPushMtmSettings::NewLC") + return self; + } + +// --------------------------------------------------------- +// CPushMtmSettings::~CPushMtmSettings +// --------------------------------------------------------- +// +EXPORT_C CPushMtmSettings::~CPushMtmSettings() + { + PUSHLOG_ENTERFN("CPushMtmSettings::~CPushMtmSettings") + delete iPushInitiatorList; + if ( iFeatureManagerInitialized ) + { + FeatureManager::UnInitializeLib(); + iFeatureManagerInitialized = EFalse; + } + PUSHLOG_LEAVEFN("CPushMtmSettings::~CPushMtmSettings") + } + +// --------------------------------------------------------- +// CPushMtmSettings::SetServiceReception +// --------------------------------------------------------- +// +EXPORT_C void CPushMtmSettings::SetServiceReception( TBool aReceive ) + { + PUSHLOG_WRITE_FORMAT + ("CPushMtmSettings::SetServiceReception <%d>",aReceive?1:0) + if ( iServiceReception != aReceive ) + { + iServiceReception = aReceive; + iServiceReceptionChanged = ETrue; + } + } + +// --------------------------------------------------------- +// CPushMtmSettings::SetServiceLoadingType +// --------------------------------------------------------- +// +EXPORT_C void CPushMtmSettings::SetServiceLoadingType( TServiceLoading aType ) + { + PUSHLOG_WRITE_FORMAT + ("CPushMtmSettings::SetServiceLoadingType <%d>",(TInt)aType) + if ( iServiceLoadingType != aType ) + { + iServiceLoadingType = aType; + iServiceLoadingTypeChanged = ETrue; + } + } + +// --------------------------------------------------------- +// CPushMtmSettings::ServiceReception +// --------------------------------------------------------- +// +EXPORT_C TBool CPushMtmSettings::ServiceReception() const + { + PUSHLOG_WRITE_FORMAT + ("CPushMtmSettings::ServiceReception <%d>",(TInt)iServiceReception) + return iServiceReception; + } + +// --------------------------------------------------------- +// CPushMtmSettings::ServiceLoadingType +// --------------------------------------------------------- +// +EXPORT_C CPushMtmSettings::TServiceLoading + CPushMtmSettings::ServiceLoadingType() const + { + PUSHLOG_WRITE_FORMAT + ("CPushMtmSettings::ServiceLoadingType <%d>",(TInt)iServiceLoadingType) + return iServiceLoadingType; + } + +// --------------------------------------------------------- +// CPushMtmSettings::PushInitiatorList +// --------------------------------------------------------- +// +EXPORT_C CPushInitiatorList& CPushMtmSettings::PushInitiatorList() const + { + __ASSERT_DEBUG( iPushInitiatorList, UtilPanic( EPushMtmUtilPanNull ) ); + return *iPushInitiatorList; + } + +// --------------------------------------------------------- +// CPushMtmSettings::LoadL +// --------------------------------------------------------- +// +EXPORT_C void CPushMtmSettings::LoadL() + { + PUSHLOG_ENTERFN("CPushMtmSettings::LoadL") + + Reset(); // Remove outdated data. + + // Open the Repository for reading: + CRepository* repository = CRepository::NewL( KCRUidPushMtm ); + CleanupStack::PushL( repository ); + + InternalizeL( *repository ); + + CleanupStack::PopAndDestroy( repository ); // repository + + // ******************** Reset indicators *********************** + iServiceReceptionChanged = EFalse; + iServiceLoadingTypeChanged = EFalse; + __ASSERT_DEBUG( iPushInitiatorList, UtilPanic( EPushMtmUtilPanNull ) ); + iPushInitiatorList->ResetChanged(); + + PUSHLOG_LEAVEFN("CPushMtmSettings::LoadL") + } + +// --------------------------------------------------------- +// CPushMtmSettings::SaveL +// --------------------------------------------------------- +// +EXPORT_C void CPushMtmSettings::SaveL( const TBool aForce ) + { + PUSHLOG_ENTERFN("CPushMtmSettings::SaveL") + PUSHLOG_WRITE_FORMAT(" aForce <%d>",aForce?1:0) + PUSHLOG_WRITE_FORMAT(" SR changed <%d>",iServiceReceptionChanged?1:0) + PUSHLOG_WRITE_FORMAT(" SL changed <%d>",iServiceLoadingTypeChanged?1:0) + __ASSERT_DEBUG( iPushInitiatorList, UtilPanic( EPushMtmUtilPanNull ) ); + PUSHLOG_WRITE_FORMAT(" WL changed <%d>",iPushInitiatorList->Changed()?1:0) + + if ( aForce || ( iServiceReceptionChanged || + iServiceLoadingTypeChanged || + iPushInitiatorList->Changed() ) ) + { + // Save the settings to Repository. + CRepository* repository = CRepository::NewL( KCRUidPushMtm ); + CleanupStack::PushL( repository ); + + ExternalizeL( *repository ); + + CleanupStack::PopAndDestroy( repository ); // repository + + // ***************** Reset indicators *********************** + iServiceReceptionChanged = EFalse; + iServiceLoadingTypeChanged = EFalse; + __ASSERT_DEBUG( iPushInitiatorList, + UtilPanic( EPushMtmUtilPanNull ) ); + iPushInitiatorList->ResetChanged(); + } + + PUSHLOG_LEAVEFN("CPushMtmSettings::SaveL") + } + +// --------------------------------------------------------- +// CPushMtmSettings::RestoreFactorySettingsL +// --------------------------------------------------------- +// +EXPORT_C void CPushMtmSettings::RestoreFactorySettingsL() + { + PUSHLOG_ENTERFN("CPushMtmSettings::RestoreFactorySettingsL") + + // The factory settings are stored in the shared data. + CRepository* repository = CRepository::NewL( KCRUidPushMtm ); + CleanupStack::PushL( repository ); + User::LeaveIfError( repository->Reset() ); + PUSHLOG_WRITE(" repository->Reset OK") + CleanupStack::PopAndDestroy( repository ); // repository + + // Load up-to-date values. + LoadL(); + + PUSHLOG_LEAVEFN("CPushMtmSettings::RestoreFactorySettingsL") + } + +// --------------------------------------------------------- +// CPushMtmSettings::ConstructL +// --------------------------------------------------------- +// +void CPushMtmSettings::ConstructL() + { + // Create an empty push initiator list. + iPushInitiatorList = CPushInitiatorList::NewL(); + FeatureManager::InitializeLibL(); + iFeatureManagerInitialized = ETrue; + // Initialize: + LoadL(); + } + +// --------------------------------------------------------- +// CPushMtmSettings::CPushMtmSettings +// --------------------------------------------------------- +// +CPushMtmSettings::CPushMtmSettings() +: CBase(), + iServiceReception( ETrue ), + iServiceLoadingType( EManual ), + iServiceReceptionChanged ( EFalse ), + iServiceLoadingTypeChanged ( EFalse ), + iFeatureManagerInitialized( EFalse ) + { + } + +// --------------------------------------------------------- +// CPushMtmSettings::Reset +// --------------------------------------------------------- +// +void CPushMtmSettings::Reset() + { + PUSHLOG_ENTERFN("CPushMtmSettings::Reset") + __ASSERT_DEBUG( iPushInitiatorList, UtilPanic( EPushMtmUtilPanNull ) ); + iPushInitiatorList->ResetAndDestroy(); + PUSHLOG_LEAVEFN("CPushMtmSettings::Reset") + } + +// --------------------------------------------------------- +// CPushMtmSettings::ExternalizeL +// --------------------------------------------------------- +// +void CPushMtmSettings::ExternalizeL( CRepository& aRepository ) const + { + PUSHLOG_ENTERFN("CPushMtmSettings::ExternalizeL") + + __ASSERT_DEBUG( iPushInitiatorList, UtilPanic( EPushMtmUtilPanNull ) ); + + TInt value; + PUSHLOG_WRITE_FORMAT + (" iServiceReception <%d>",(TInt)iServiceReception) + value = iServiceReception ? 1 : 0; + User::LeaveIfError( aRepository.Set( KPushMtmServiceReception, value ) ); + PUSHLOG_WRITE(" SR written") + + PUSHLOG_WRITE_FORMAT + (" iServiceLoadingType <%d>",(TInt)iServiceLoadingType) + value = ( iServiceLoadingType == CPushMtmSettings::EManual ) ? 1 : 0; + User::LeaveIfError( aRepository.Set( KPushMtmServiceLoading, value ) ); + PUSHLOG_WRITE(" SL written") + + iPushInitiatorList->ExternalizeL( aRepository ); + + PUSHLOG_LEAVEFN("CPushMtmSettings::ExternalizeL") + } + +// --------------------------------------------------------- +// CPushMtmSettings::InternalizeL +// --------------------------------------------------------- +// +void CPushMtmSettings::InternalizeL( CRepository& aRepository ) + { + PUSHLOG_ENTERFN("CPushMtmSettings::InternalizeL") + + __ASSERT_DEBUG( iPushInitiatorList, UtilPanic( EPushMtmUtilPanNull ) ); + + TInt value(0); + User::LeaveIfError( aRepository.Get( KPushMtmServiceReception, value ) ); + PUSHLOG_WRITE_FORMAT(" KPushMtmServiceReception <%d>",(TInt)value) + iServiceReception = ( value == 1 ) ? ETrue : EFalse; + PUSHLOG_WRITE(" SR loaded") + + User::LeaveIfError( aRepository.Get( KPushMtmServiceLoading, value ) ); + PUSHLOG_WRITE_FORMAT(" KPushMtmServiceLoading <%d>",(TInt)value) + iServiceLoadingType = ( value == 1 ) ? CPushMtmSettings::EManual : + CPushMtmSettings::EAutomatic; + PUSHLOG_WRITE(" SL loaded") + + iPushInitiatorList->InternalizeL( aRepository ); + + PUSHLOG_LEAVEFN("CPushMtmSettings::InternalizeL") + } + +// End of File.