diff -r 5cc91383ab1e -r 7333d7932ef7 appinstaller/AppMngr2/src/appmngr2appui.cpp --- a/appinstaller/AppMngr2/src/appmngr2appui.cpp Thu Aug 19 10:02:49 2010 +0300 +++ b/appinstaller/AppMngr2/src/appmngr2appui.cpp Tue Aug 31 15:21:33 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2009 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" @@ -22,8 +22,6 @@ #include "appmngr2installedview.h" // CAppMngr2InstalledView #include "appmngr2packagesview.h" // CAppMngr2PackagesView #include "appmngr2.hrh" // Command IDs -#include "appmngr2exittimer.h" // Exit Timer - #include // CAppMngr2Runtime #include // TAppMngr2DriveUtils #include // FLOG macros @@ -32,11 +30,6 @@ #include // FeatureManager #include // RProperty #include // HlpLauncher -#include // StringLoader -#include // Resource IDs -#include // WaitNote -#include - _LIT( KSWInstCommonUIResourceFileName, "SWInstCommonUI.rsc" ); @@ -56,25 +49,16 @@ wsSession.ComputeMode( RWsSession::EPriorityControlDisabled ); FeatureManager::InitializeLibL(); - + TFileName* fullName = TAppMngr2DriveUtils::NearestResourceFileLC( KSWInstCommonUIResourceFileName, iEikonEnv->FsSession() ); FLOG( "CAppMngr2AppUi::ConstructL, opening %S", fullName ); iResourceFileOffset = iEikonEnv->AddResourceFileL( *fullName ); CleanupStack::PopAndDestroy( fullName ); - // Let's start global wait note so user can see that - // App. Mngr is scanning memory. - HBufC* string = StringLoader::LoadLC( R_QTN_AM_SCANNING_MEMORY ); - CAknGlobalNote* note = CAknGlobalNote::NewLC(); - note->SetSoftkeys( R_AVKON_SOFTKEYS_EMPTY ); - FLOG( "CAppMngr2AppUi::ConstructL: ShowNoteL EAknGlobalWaitNote " ); - iNoteId = note->ShowNoteL( EAknGlobalWaitNote, *string ); - CleanupStack::PopAndDestroy( 2, string ); - FLOG( "CAppMngr2AppUi::ConstructL, creting model" ); iModel = CAppMngr2Model::NewL( iEikonEnv->FsSession(), *this ); - + FLOG( "CAppMngr2AppUi::ConstructL, creting views" ); CAppMngr2InstalledView* installedView = CAppMngr2InstalledView::NewL(); AddViewL( installedView ); // takes ownership @@ -108,13 +92,10 @@ { ActivateLocalViewL( KInstalledViewId ); } - + FLOG( "CAppMngr2AppUi::ConstructL, starting delayed construct" ); iIdle = CIdle::NewL( CActive::EPriorityStandard ); iIdle->Start( TCallBack( &CAppMngr2AppUi::DelayedConstructL, this ) ); - - FLOG( "CAppMngr2AppUi::ConstructL, iExitTimer = NULL" ); - iExitTimer = NULL; } // --------------------------------------------------------------------------- @@ -124,23 +105,13 @@ CAppMngr2AppUi::~CAppMngr2AppUi() { FLOG( "CAppMngr2AppUi::~CAppMngr2AppUi" ); - - if( iNoteId ) - { - // If appmngr is closed for some reason let's make sure - // the note is closed. - TRAP_IGNORE( CancelNoteL() ); - } - delete iIdle; delete iModel; - if( iResourceFileOffset > 0 ) { iEikonEnv->DeleteResourceFile( iResourceFileOffset ); } - FeatureManager::UnInitializeLib(); - delete iExitTimer; + FeatureManager::UnInitializeLib(); } // --------------------------------------------------------------------------- @@ -163,9 +134,6 @@ { CAppMngr2ListView* view = static_cast( iView ); TRAP_IGNORE( view->RefreshL( aMoreRefreshesExpected ) ); - - // Let's close global wait note since memory scanning is ready. - TRAP_IGNORE( CancelNoteL() ); } } @@ -180,9 +148,6 @@ { CAppMngr2ListView* view = static_cast( iView ); TRAP_IGNORE( view->RefreshL( aMoreRefreshesExpected ) ); - - // Let's close global wait note since memory scanning is ready. - TRAP_IGNORE( CancelNoteL() ); } } @@ -215,20 +180,35 @@ CAppMngr2AppUi* self = static_cast( aSelf ); FLOG( "CAppMngr2AppUi::DelayedConstructL, step %d", self->iDelayedConstructionStep ); - - // Only necessary part of the model is constructed. AppMngr2 runs - // as embedded application in Control panel. It is started either - // to display installed applications, or installation files. - if( self->iConstructInstallationFilesFirst ) + switch( self->iDelayedConstructionStep ) { - self->iModel->StartFetchingInstallationFilesL(); + case EFirstStep: + if( self->iConstructInstallationFilesFirst ) + { + self->iModel->StartFetchingInstallationFilesL(); + } + else + { + self->iModel->StartFetchingInstalledAppsL(); + } + self->iDelayedConstructionStep = ESecondStep; + return ETrue; // call DelayedConstruct again + + case ESecondStep: + if( self->iConstructInstallationFilesFirst ) + { + self->iModel->StartFetchingInstalledAppsL(); + } + else + { + self->iModel->StartFetchingInstallationFilesL(); + } + self->iDelayedConstructionStep = EAllDone; + break; + + default: + break; } - else - { - self->iModel->StartFetchingInstalledAppsL(); - } - - self->iDelayedConstructionStep = EAllDone; } return EFalse; // all done } @@ -243,28 +223,6 @@ switch ( aCommand ) { case EEikCmdExit: - if ( iModel->IsUninstall() && iModel->IsActive() ) - { - // In case we have uninstall process ongoing we need to - // start delay timer for Exit. This is because in some cases - // like VPN plug-in the GS is closed and app.mngr exit may come - // just when SWInstLauncer is completing req. in RunL (long - // running task). CActive do not return from Cancel and - // AppMngr2Model's destructor jams. - if ( !iExitTimer ) - { - // If there is not exit timer already let's make one. - iExitTimer = CAppMngr2ExitTimer::NewL( this ); - iExitTimer->StartExitTimer(); - } - } - else - { - // if we do not have uninstall request let's do Exit now. - Exit(); - } - break; - case EAknCmdExit: case EAknSoftkeyExit: Exit(); @@ -284,20 +242,3 @@ } } -// --------------------------------------------------------------------------- -// CAppMngr2AppUi::CancelNoteL() -// --------------------------------------------------------------------------- -// -void CAppMngr2AppUi::CancelNoteL() - { - FLOG( "CAppMngr2AppUi::CancelNoteL: iNoteId = %d", iNoteId ); - if ( iNoteId ) - { - CAknGlobalNote* note = CAknGlobalNote::NewLC(); - FLOG( "CAppMngr2AppUi::CancelNoteL: note->CancelNoteL" ); - note->CancelNoteL( iNoteId ); - CleanupStack::PopAndDestroy(); - iNoteId = 0; - } - } -