appinstaller/AppMngr2/src/appmngr2appui.cpp
branchRCL_3
changeset 25 7333d7932ef7
parent 23 cd189dac02f7
child 26 8b7f4e561641
--- 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 <appmngr2runtime.h>            // CAppMngr2Runtime
 #include <appmngr2driveutils.h>         // TAppMngr2DriveUtils
 #include <appmngr2debugutils.h>         // FLOG macros
@@ -32,11 +30,6 @@
 #include <featmgr.h>                    // FeatureManager
 #include <e32property.h>                // RProperty
 #include <hlplch.h>                     // HlpLauncher
-#include <StringLoader.h>               // StringLoader
-#include <appmngr2.rsg>                 // Resource IDs
-#include <AknGlobalNote.h>              // WaitNote
-#include <avkon.rsg>
-
 
 _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<CAppMngr2ListView*>( 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<CAppMngr2ListView*>( 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<CAppMngr2AppUi*>( 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;
-         }        
-    }
-