--- /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 <centralrepository.h>
+#include <PushEntry.h>
+#include <SysUtil.h>
+#include <bldvariant.hrh>
+#include <FeatMgr.h>
+
+// ================= 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.