diff -r 000000000000 -r 8466d47a6819 emailuis/emailui/sendasmtm/fsmtms/install/src/fsinstallmtm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/sendasmtm/fsmtms/install/src/fsinstallmtm.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,167 @@ +/* +* Copyright (c) 2007-2008 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: Install freestyle MTM account. This exe is executed when +* Nokia-Email SIS package is installed +* +*/ + + + +#include "emailtrace.h" +#include +#include // for KDC_MTM_INFO_FILE_DIR' +#include +#include +#include "FSEmailBuildFlags.h" + + +#include "fsmtmsconstants.h" + +LOCAL_C TFileName InstallationFilenameL(); +LOCAL_C void InstallL(); +LOCAL_C void DefineFWflag(); +LOCAL_C void DoInstallL(); + + + +// Dummy observer class to absorb Message Server session events +class TDummyObserver : public MMsvSessionObserver + { +public: + void HandleSessionEventL( TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, + TAny* /*aArg2*/, TAny* /*aArg3*/) {}; + }; + +// --------------------------------------------------------------------------- +// InstallationFilenameL +// Finds mtm resource file name path +// --------------------------------------------------------------------------- +// +LOCAL_C TFileName InstallationFilenameL() + { + FUNC_LOG; + //Construct the path information for the Installation file. + TFileName fileName; + RFs fs; + User::LeaveIfError( fs.Connect() ); + CleanupClosePushL( fs ); + TFindFile finder( fs ); + User::LeaveIfError( + finder.FindByDir( KFsMtmDirAndFile, KDC_MTM_INFO_FILE_DIR ) ); + fileName = finder.File(); + CleanupStack::PopAndDestroy(); + return fileName; + } + +// --------------------------------------------------------------------------- +// InstallL +// Set up Message Server session and install PushImap MTM group +// --------------------------------------------------------------------------- +// +LOCAL_C void InstallL() + { + FUNC_LOG; + TDummyObserver ob; + CMsvSession* session = CMsvSession::OpenSyncL( ob ); + CleanupStack::PushL( session ); + + //Construct the path information for the Installation file. + TFileName resourceFileName = InstallationFilenameL(); + + // Install MTMs. + TInt err = session->InstallMtmGroup( resourceFileName ); + if( err!=KErrNone && err!=KErrAlreadyExists ) + { + User::LeaveIfError( err ); + } + + // Check if Installed MTM is present in Registry. + CClientMtmRegistry* mtmRegistry = CClientMtmRegistry::NewL( *session ); + CleanupStack::PushL( mtmRegistry ); + if( !mtmRegistry->IsPresent( KUidMsgValTypeFsMtmVal ) ) + { + User::Leave(KErrNotFound); + } + CleanupStack::PopAndDestroy( mtmRegistry ); + CleanupStack::PopAndDestroy( session ); + + } + +// --------------------------------------------------------------------------- +// DefineFWflag +// Framework flag will be defined to indicate the FW is installed by SIS +// --------------------------------------------------------------------------- +// +LOCAL_C void DefineFWflag() + { + FUNC_LOG; + RFeatureControl featureControl; + TInt err = featureControl.Connect(); + if ( err == KErrNone ) + { + featureControl.Close(); + } + } + + +LOCAL_C void SetUpCenrepParams() + { + FUNC_LOG; + } + + +// --------------------------------------------------------------------------- +// DoInstallL +// Install the MTM +// --------------------------------------------------------------------------- +// +LOCAL_C void DoInstallL() + { + FUNC_LOG; + + User::LeaveIfError( User::RenameThread( _L("MtmInstall") ) ); + // Define Framework Flag + DefineFWflag(); + SetUpCenrepParams(); + // Construct and install the active scheduler + CActiveScheduler* scheduler = new (ELeave) CActiveScheduler; + CleanupStack::PushL(scheduler); + CActiveScheduler::Install( scheduler ); + TRAPD(error,InstallL()); + if (error != KErrNone) + { + User::Leave(error); + } + CleanupStack::PopAndDestroy(scheduler); + } + + +// --------------------------------------------------------------------------- +// E32Main +// Called when FS SIS package is installed +// --------------------------------------------------------------------------- +// +GLDEF_C TInt E32Main() + { + FUNC_LOG; + __UHEAP_MARK; + + CTrapCleanup* cleanup = CTrapCleanup::New(); + TRAP_IGNORE(DoInstallL()); + delete cleanup; + + __UHEAP_MARKEND; + return 0; + } +