--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/muiuutils/src/MsvFactorySettings.cpp Tue Aug 31 15:41:11 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* 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: MsvFactorySettings implementation
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32test.h>
+#include <msvapi.h>
+#include <msvuids.h>
+#include <mtmuibas.h>
+#include <mtuireg.h>
+#include <mtudcbas.h>
+#include <bautils.h>
+#include <mtmuidef.hrh>
+#include "MsvFactorySettings.h"
+
+
+
+// MODULE DATA STRUCTURES
+class CDummyObserver : public CBase, public MMsvSessionObserver
+ {
+ public:
+ CDummyObserver() {};
+ void HandleSessionEventL( TMsvSessionEvent /*aEvent*/,
+ TAny* /*aArg1*/,
+ TAny* /*aArg2*/,
+ TAny* /*aArg3*/ ) {};
+ };
+
+// LOCAL FUNCTION PROTOTYPES
+/**
+* Performs factory settings to single item
+*/
+void DoRestoreFactorySettingsSingleMtmL( CClientMtmRegistry& aBaseReg,
+ CMtmUiRegistry& aUiReg,
+ TUid anId,
+ TMsvFactorySettingsLevel aLevel );
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// MsvFactorySettings::ResetL
+// ---------------------------------------------------------
+//
+EXPORT_C void MsvFactorySettings::ResetL( TMsvFactorySettingsLevel aLevel )
+ {
+ // connect to the server
+ CDummyObserver* ob = new( ELeave )CDummyObserver;
+ CleanupStack::PushL(ob);
+
+ CMsvSession* session = CMsvSession::OpenSyncL( *ob );
+ CleanupStack::PushL( session );
+
+ //create ui registry
+ CClientMtmRegistry* basemtmregistry = CClientMtmRegistry::NewL( *session );
+ CleanupStack::PushL( basemtmregistry );
+ CMtmUiRegistry* uiRegistry = CMtmUiRegistry::NewL( *session );
+ CleanupStack::PushL( uiRegistry );
+
+ //check through mtms
+ TInt error = 0;
+ TInt count=uiRegistry->NumRegisteredMtmDlls();
+ for ( TInt cc=0; cc < count; ++cc )
+ {
+ // return value is ignored, so as not to prevent other MTMs being initialised
+ TRAPD(ret, DoRestoreFactorySettingsSingleMtmL( *basemtmregistry,
+ *uiRegistry,
+ basemtmregistry->MtmTypeUid( cc ),
+ aLevel ) );
+ if ( ret && ret != KErrNotSupported )
+ {
+ error = ret;
+ }
+ }
+
+ User::LeaveIfError( error );
+ CleanupStack::PopAndDestroy( 4,ob ); // uiRegistry,basemtmregistry,session,ob
+ }
+
+
+// ---------------------------------------------------------
+// DoRestoreFactorySettingsSingleMtmL
+// ---------------------------------------------------------
+//
+void DoRestoreFactorySettingsSingleMtmL( CClientMtmRegistry& aBaseReg,
+ CMtmUiRegistry& aUiReg,
+ TUid anId,
+ TMsvFactorySettingsLevel aLevel )
+ {
+ //create base mtm
+ CBaseMtm* baseMtm = aBaseReg.NewMtmL( anId );
+ CleanupStack::PushL( baseMtm );
+
+ CBaseMtmUi* mtmUi = aUiReg.NewMtmUiL( *baseMtm );
+ CleanupStack::PushL( mtmUi );
+
+ TInt response;
+ TUid isInstalled = { KUidMsvMtmQueryFactorySettings };
+ TInt err = mtmUi->QueryCapability( isInstalled, response );
+
+ if ( err == KErrNone )
+ {
+ // Need to install this type
+ CMsvEntrySelection* tempobject = new ( ELeave ) CMsvEntrySelection;
+ CleanupStack::PushL( tempobject );
+ TPckg<TMsvFactorySettingsLevel > levelPack( aLevel );
+ TInt installNow = { KMtmUiFunctionRestoreFactorySettings };
+ mtmUi->InvokeSyncFunctionL( installNow, *tempobject, levelPack );
+ CleanupStack::PopAndDestroy( tempobject );
+ }
+ else if ( err != KErrNotSupported )
+ {
+ User::Leave( err );
+ }
+ else
+ {
+ //Does nothing
+ }
+
+ CleanupStack::PopAndDestroy( 2, baseMtm ); // mtmUi,baseMtm
+ }
+
+// End of File
+