diff -r 1a2a00e78665 -r 7feec50967db homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp --- a/homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp Tue Feb 02 00:23:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,343 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - - -#include "hsps_builds_cfg.hrh" - -#include -#include -#include -#include "hspsrominstaller.h" -#include "hspsthemeserver.h" -#include "hspsinstallationhandler.h" -#include "hspsclientrequesthandler.h" -#include "hspsserverutil.h" - -_LIT( KInstallDirectoryZ, "z:\\private\\200159c0\\install\\" ); -_LIT( KHsps, "hsps"); - -// ========================= MEMBER FUNCTIONS ================================== - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::NewL() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -ChspsRomInstaller* ChspsRomInstaller::NewL( - ChspsThemeServer& aThemeServer, - RFs& aFsSession ) - { - ChspsRomInstaller* self = NewLC( aThemeServer, aFsSession ); - CleanupStack::Pop( self ); - return( self ) ; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::NewLC() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -ChspsRomInstaller* ChspsRomInstaller::NewLC( - ChspsThemeServer& aThemeServer, - RFs& aFsSession) - { - ChspsRomInstaller* self = new ( ELeave ) ChspsRomInstaller( aThemeServer, aFsSession ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::ConstructL() -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void ChspsRomInstaller::ConstructL() - { - iInstallationHandler = ChspsInstallationHandler::NewL( iThemeServer ); - - // Prevent notifications from ROM based installations - iInstallationHandler->DisableNotifications(); - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::ChspsRomInstaller() -// C++ default constructor can NOT contain any code, that might leave. -// ----------------------------------------------------------------------------- -ChspsRomInstaller::ChspsRomInstaller( - ChspsThemeServer& aThemeServer, - RFs& aFsSession ) - : CActive(EPriorityStandard), - iThemeServer(aThemeServer), - iFsSession(aFsSession), - iRet(EhspsInstallThemeFailed) - { - CActiveScheduler::Add( this ); - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::~ChspsRomInstaller() -// Destructor. -// ----------------------------------------------------------------------------- -// -ChspsRomInstaller::~ChspsRomInstaller() - { - Cancel(); // Causes call to DoCancel() - delete iInstallationHandler; - iImportsArrayV1.ResetAndDestroy(); - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::SetImportsFilterL() -// ----------------------------------------------------------------------------- -// -TBool ChspsRomInstaller::SetImportsFilterL( - const TDesC& aFileFilter ) - { - TFindFile fileFinder( iFsSession ); - CDir* fileList( NULL ); - fileFinder.FindWildByDir( aFileFilter, KInstallDirectoryZ, fileList ); - if ( fileList ) - { - CleanupStack::PushL( fileList ); - - TFileName sourceName; - for( TInt i = 0; i < fileList->Count(); i++ ) - { - const TEntry& entry = (*fileList)[i]; - sourceName.Copy( KInstallDirectoryZ ); - sourceName.Append( entry.iName ); - iImportsArrayV1.AppendL( sourceName.AllocL() ); - } - - CleanupStack::PopAndDestroy( fileList ); - fileList = NULL; - } - - return EFalse; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::GetInstallationFoldersL() -// ----------------------------------------------------------------------------- -// -void ChspsRomInstaller::GetInstallationFoldersL( - RPointerArray& aFolders ) - { - aFolders.ResetAndDestroy(); - - _LIT(KAllFolders, "*"); - _LIT(KFolderSuffix, "\\"); - CDir* fileList( NULL ); - TFindFile fileFinder( iFsSession ); - fileFinder.FindWildByDir( KAllFolders, KInstallDirectoryZ, fileList ); - if ( fileList ) - { - CleanupStack::PushL( fileList ); - - TFileName sourceName; - TBool verChecked = EFalse; - for( TInt i = 0; i < fileList->Count(); i++ ) - { - const TEntry& entry = (*fileList)[i]; - if ( entry.IsDir() ) - { - const TEntry& entry = (*fileList)[i]; - sourceName.Copy( KInstallDirectoryZ ); - sourceName.Append( entry.iName ); - sourceName.Append( KFolderSuffix ); - - if ( !verChecked ) - { - // Check whether the V2 directory structure is available - TFileName nameV2; - nameV2.Copy( sourceName ); - nameV2.Append( KHsps ); - nameV2.Append( KFolderSuffix ); - if( !BaflUtils::FolderExists( iFsSession, nameV2 ) ) - { - CleanupStack::PopAndDestroy( fileList ); - return; - } - verChecked = ETrue; - } - - aFolders.AppendL( sourceName.AllocL() ); - } - } - - CleanupStack::PopAndDestroy( fileList ); - fileList = NULL; - } - } - -void ChspsRomInstaller::FindImportsV1L() - { - iImportsArrayV1.ResetAndDestroy(); - SetImportsFilterL( KFilterAllPluginImportsV1 ); - SetImportsFilterL( KFilterAllAppImportsV1 ); - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::ImportsV1 -// ----------------------------------------------------------------------------- -// -const RPointerArray& ChspsRomInstaller::ImportsV1() - { - return iImportsArrayV1; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::InstallThemeL -// ----------------------------------------------------------------------------- -// -ThspsServiceCompletedMessage ChspsRomInstaller::InstallThemeL( - const TDesC& aFileName ) - { - // Start installation by reading the manifest file - iRet = iInstallationHandler->hspsInstallTheme( aFileName, iHeaderData ); - if ( iRet == EhspsInstallThemeSuccess && !IsActive() ) - { - // Continue with remaining installation phases - SetActive(); - iInstallationHandler->hspsInstallNextPhaseL( iHeaderData, iStatus ); - - // Wait until the installation phases have been executed (async->sync) - CActiveScheduler::Start(); - } - - return iRet; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::ReinstallThemeL -// ----------------------------------------------------------------------------- -// -ThspsServiceCompletedMessage ChspsRomInstaller::ReinstallThemeL( - const TInt aAppUid, - const TInt aConfigurationUid ) - { - ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed; - - iImportsArrayV1.ResetAndDestroy(); - - if ( aAppUid > 0 && aConfigurationUid > 0 ) - { - // Setup a filter for finding a specific import - _LIT(KFormat, "app_%X_*_%X_1.0.dat"); - HBufC* filter = HBufC::NewLC( KMaxFileName ); - filter->Des().AppendFormat( KFormat, aAppUid, aConfigurationUid ); - SetImportsFilterL( *filter ); - CleanupStack::PopAndDestroy( filter ); - - // There should be only one import matching the UIDs - if ( iImportsArrayV1.Count() == 1 ) - { - // Get path for a manifest from the import's file name - HBufC* manifestBuf = iThemeServer.GetManifestFromImportLC( - iImportsArrayV1[0]->Des(), - KInstallDirectoryZ ); - if ( manifestBuf ) - { - // Sync request - ret = InstallThemeL( manifestBuf->Des() ); - CleanupStack::PopAndDestroy( manifestBuf ); - } - } - - iImportsArrayV1.ResetAndDestroy(); - } - - // Complete application configuration reinstallation - ChspsODT* odt = ChspsODT::NewL(); - CleanupStack::PushL( odt ); - User::LeaveIfError( iThemeServer.GetConfigurationL( aAppUid, aConfigurationUid, *odt ) ); - if ( odt->ConfigurationType() == EhspsAppConfiguration ) - { - // Add plugin configurations to the application configuration - ChspsClientRequestHandler* clientReqHandler = ChspsClientRequestHandler::NewL( iThemeServer ); - CleanupStack::PushL( clientReqHandler ); - clientReqHandler->HandlePluginReferencesL( *odt ); - CleanupStack::PopAndDestroy( clientReqHandler ); - } - CleanupStack::PopAndDestroy( odt ); - - return ret; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::SetLogBus() -// ----------------------------------------------------------------------------- -// -#ifdef HSPS_LOG_ACTIVE -void ChspsRomInstaller::SetLogBus( ChspsLogBus* aLogBus ) - { - iLogBus = aLogBus; - iInstallationHandler->SetLogBus( aLogBus ); - } -#endif - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::RunError -// ----------------------------------------------------------------------------- -// -TInt ChspsRomInstaller::RunError( TInt /*aError*/ ) - { - // Called when error occurred in asynchronous request - CActiveScheduler::Stop(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::RunL -// ----------------------------------------------------------------------------- -// -void ChspsRomInstaller::RunL() - { - iRet = (ThspsServiceCompletedMessage)iStatus.Int(); - switch ( iStatus.Int() ) - { - case EhspsInstallPhaseSuccess: - { - // Execute next phase of the installation - if ( !IsActive() ) - { - SetActive(); - iInstallationHandler->hspsInstallNextPhaseL( iHeaderData, iStatus ); - } - } - break; - - case EhspsInstallThemeSuccess: - case EhspsInstallThemeFailed: - default: - { - // Allow continuation of the InstallTheme function - CActiveScheduler::Stop(); - } - break; - } - } - -// ----------------------------------------------------------------------------- -// ChspsRomInstaller::DoCancel() -// ----------------------------------------------------------------------------- -// -void ChspsRomInstaller::DoCancel() - { - // Cancels any outstanding operation - nothing to do - } - -// End of File