appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIHandler.cpp
changeset 80 9dcba1ee99f7
parent 77 d1838696558c
--- a/appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIHandler.cpp	Thu Oct 14 14:11:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1848 +0,0 @@
-/*
-* Copyright (c) 2002-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"
-* 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:   This file contains the implementation of CSisxUIHandler
-*                class member functions.
-*
-*/
-
-
-// INCLUDE FILES
-#include <StringLoader.h>
-#include <barsread.h>
-#include <eikenv.h>
-#include <aknlistquerydialog.h>
-#include <aknmessagequerydialog.h>
-#include <aknnotewrappers.h>
-#include <SisxUIData.rsg>
-#include <SWInstCommonUI.rsg>
-#include <SWInstDefs.h>
-#include <featmgr.h>
-//#include <csxhelp/am.hlp.hrh>
-#include <swi/sisinstallerrors.h>
-#include <AknUtils.h>
-#include <eikfrlb.h> //for the marquee effect
-#include <eikfrlbd.h> //for the marquee effect
-
-#include "SisxUIHandler.h"
-#include "SisxUICertificateInfo.h"
-#include "SisxUIAppInfo.h"
-#include "SisxUISelectionCache.h"
-#include "SisxUIResult.h"
-#include "SisxUILangName.h"             // CLangName
-#include "SisxUICleanupUtils.h"         // CleanupResetAndDestroyPushL
-#include "CUIUtils.h"
-#include "SWInstDebug.h"
-
-using namespace SwiUI;
-
-_LIT( KDetailedError,"%S (%d)" );
-_LIT( KSwiTempFile,"c:\\temp\\swierrors.txt" );
-_LIT( KNextLine, "\n" );
-_LIT( KLeftParenthes, "(" );
-//directional marks needed for Arabic language
-_LIT( KLRE, "\x202A" );
-_LIT( KPDF, "\x202C" );
-
-const TInt KSpaceForErrorCode = 12;     // space for " (-12345678)"
-
-// ============================ LOCAL FUNCTIONS ================================
-
-TBool HasLangId( const TLanguage* aId, const CLangName& aLang )
-    {
-    return( *aId == aLang.Id() );
-    }
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::CSisxUIHandler
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CSisxUIHandler::CSisxUIHandler( TInstallMode aMode, MSisxUICancelObserver* aCancelObserver )
-    : iMode( aMode ), 
-      iCancelObserver( aCancelObserver ), 
-      iAllowUntrusted( ETrue )
-    {    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ConstructL()
-    {
-    iCommonDialogs = CommonUI::CCUIDialogs::NewL();
-    iCache = CSisxUISelectionCache::NewL();
-    if ( iMode == EModeInstall )
-        {        
-        iCommonDialogs->ShowWaitDialogL( R_SISXUI_PREPARING, this, R_AVKON_SOFTKEYS_EMPTY );
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSisxUIHandler* CSisxUIHandler::NewL( TInstallMode aMode, MSisxUICancelObserver* aCancelObserver )
-    {
-    CSisxUIHandler* self = new( ELeave ) CSisxUIHandler( aMode, aCancelObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;    
-    }
-    
-// Destructor
-CSisxUIHandler::~CSisxUIHandler()
-    {
-    // If wait dialog is showing close it.  	
-    if ( iShowingWaitDialog )
-        {        
-        if ( iCommonDialogs )
-            {
-        	TRAP_IGNORE( iCommonDialogs->CloseWaitDialogL() );	
-            }
-        }    	    	
-    delete iCommonDialogs;
-    iCertificateArray.ResetAndDestroy();
-    delete iCache;    
-    iPackages.ResetAndDestroy();  
-    iDrmFile.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayInstallL
-// Displays a dialog at the beginning of an installation with details about the 
-// SISX package being installed. This dialog must be shown in TrustedUI mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayInstallL( 
-#ifdef RD_COMBINE_INSTALLATION_QUERIES
-                              const Swi::CAppInfo& /*aAppInfo*/,
-#else
-                              const Swi::CAppInfo& aAppInfo,
-#endif //RD_COMBINE_INSTALLATION_QUERIES
-                              const CApaMaskedBitmap* /*aLogo*/,
-                              const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )  
-    {
-#ifdef RD_COMBINE_INSTALLATION_QUERIES //with new dialog sequence
-    
-    TBool result( ETrue );
-    // Mark the integrity as done
-    iIntegrityCheckDone = ETrue;
-    iShowingDialog = EFalse;
-
-#else  // show using old dialog sequence 
-    iShowingDialog = ETrue;
-    
-    // Close the preparing wait dialog
-    iCommonDialogs->CloseWaitDialogL();
-
-    TBool result( EFalse );
-
-    HBufC* prompt = StringLoader::LoadLC( R_SISXUI_INSTALL_PROMPT, aAppInfo.AppName() );
-    if ( iCommonDialogs->ShowConfirmationQueryL( *prompt, R_AVKON_SOFTKEYS_YES_NO__YES ) )
-        {        
-        result = ETrue;       
-        }   
-    else
-        {
-        iResult = TSisxUIResult( EUiResultCancelled );
-        // Make sure no notes are shown after this        
-        iShownFinalNote = ETrue;        
-        }
-   
-    CleanupStack::PopAndDestroy( prompt );
-
-    // Mark the integrity as done
-    iIntegrityCheckDone = ETrue;
-
-    iShowingDialog = EFalse;    
-#endif //RD_COMBINE_INSTALLATION_QUERIES    
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayGrantCapabilitiesL
-// displays a dialog requesting that the user grants these capabilities to the 
-// SISX package being installed. This dialog must be shown in TrustedUI mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayGrantCapabilitiesL( const Swi::CAppInfo& /*aAppInfo*/, 
-                                                 const TCapabilitySet& aCapabilitySet ) 
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( ETrue );
-
-    // Add the text heading
-    HBufC* messageString = StringLoader::LoadLC( R_SISXUI_CAPAB_HEADING );
-
-    if ( aCapabilitySet.HasCapability( ECapabilityLocalServices ) )
-        {
-        AddCapabilityL( messageString, R_SISXUI_CAPAB_LOCAL );
-        }
-
-    if ( aCapabilitySet.HasCapability( ECapabilityReadUserData ) )
-        {
-        AddCapabilityL( messageString, R_SISXUI_CAPAB_READ_USER );
-        }
-
-    if ( aCapabilitySet.HasCapability( ECapabilityWriteUserData ) )
-        {
-        AddCapabilityL( messageString, R_SISXUI_CAPAB_WRITE_USER );
-        }
-
-    if ( aCapabilitySet.HasCapability( ECapabilityUserEnvironment ) )
-        {
-        AddCapabilityL( messageString, R_SISXUI_CAPAB_USERENV );
-        }
-
-    if ( aCapabilitySet.HasCapability( ECapabilityNetworkServices ) )
-        {
-        AddCapabilityL( messageString, R_SISXUI_CAPAB_NETWORK );
-        }
-
-    if ( aCapabilitySet.HasCapability( ECapabilityLocation ) )
-        {
-        AddCapabilityL( messageString, R_SISXUI_CAPAB_LOCATION );
-        }
-
-    HBufC* linkText = NULL;    
-    if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-        {        
-        linkText = StringLoader::LoadLC( R_SISXUI_CAPAB_MORE_INFO );
-        }
-    else
-        {
-        linkText = KNullDesC().AllocLC();        
-        }
-    
-    HBufC* finalMessage = HBufC::NewLC( messageString->Length() + linkText->Length() + 1);
-    TPtr msgPtr( finalMessage->Des() );
-    
-    msgPtr += *messageString;
-    msgPtr += KNextLine;
-    msgPtr += *linkText;    
-
-    // Show the dialog
-    CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *finalMessage );
-    dlg->PrepareLC( R_SISXUI_CAPAB_DIALOG );
-    if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-        {        
-        dlg->SetLinkTextL( *linkText );
-        TCallBack callback( ShowCapabilitiesHelp, this );    
-        dlg->SetLink( callback );
-        }    
-
-    if ( !dlg->RunLD() )
-        {
-        // User cancelled
-        iResult = TSisxUIResult( EUiResultCancelled );
-        result = EFalse;        
-        }    
-    
-    CleanupStack::PopAndDestroy( 3, messageString ); // finalMessage, linkText, messageString
-
-    iShowingDialog = EFalse;    
-    return result;       
-    }
-										
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayLanguageL
-// requests preferred language and dialect information from the UI.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CSisxUIHandler::DisplayLanguageL( const Swi::CAppInfo& /*aAppInfo*/, 
-                                       const RArray<TLanguage>& aLanguages ) 
-    {
-    TInt languageIndex( 0 );
-    TInt index( 0 );
-    TLanguage phoneLanguage( User::Language() );    
-
-    // If phones default language is available in the file, do not query the user
-    for ( index = 0; index < aLanguages.Count(); index++ )
-        {
-        // Check if this matches the phone language        
-        if( aLanguages[ index ] == phoneLanguage )
-            {
-            return index;
-            }
-        
-        // Check if user has already selected this language during installation        
-        if( iCache->LanguageCached() && aLanguages[index] == iCache->Language() )
-            {
-            // Do not query user, we have a cached language    
-            return index;            
-            }        
-        }
-
-    // If there is only one language in the list, do not query the user
-    if( aLanguages.Count() == 1 )
-        {
-        return 0;        
-        }
-
-    iShowingDialog = ETrue;
-
-    // Prepare for showing the language selection dialog
-    CDesCArray *itemArray = new( ELeave ) CDesCArrayFlat(4);
-    CleanupStack::PushL( itemArray );
-    
-    // construct the array of available languages
-    TResourceReader reader;
-    CEikonEnv::Static()->CreateResourceReaderLC( reader, R_SISXUI_LANGUAGES_ARRAY );
-    RPointerArray<CLangName> langNameArray;
-    CleanupResetAndDestroyPushL( langNameArray );
-    TInt count = reader.ReadInt16();
-    while( --count >= 0 )
-        {
-        CLangName* langName = CLangName::NewL( reader );
-        langNameArray.AppendL( langName );
-        }
-
-    for ( index = 0; index <= aLanguages.Count() - 1; index++ )
-        {
-        TLanguage language = aLanguages[ index ];
-        TInt nameIndex = langNameArray.Find( language, HasLangId );
-        if ( nameIndex == KErrNotFound ) 
-            {
-            nameIndex = TLanguage( 0 );     // produces qtn_swins_lqi_unknow
-            }
-        itemArray->AppendL( langNameArray[ nameIndex ]->Name() );
-        }
-    
-    // show list query
-    CAknListQueryDialog* dlg = new ( ELeave ) CAknListQueryDialog( &languageIndex );
-    dlg->PrepareLC( R_SISXUI_LANGUAGE_QUERY );
-    dlg->SetItemTextArray( itemArray );
-    dlg->SetOwnershipType( ELbmDoesNotOwnItemArray );
-
-    if( languageIndex != 0 )
-        {
-        dlg->ListBox()->SetCurrentItemIndex( languageIndex );
-        }
-
-    TInt queryOk = dlg->RunLD();
-    
-    CleanupStack::PopAndDestroy( 3, itemArray ); // langNameArray, reader, itemArray
-    
-    if ( !queryOk )
-        {        
-        languageIndex = -1;
-        iResult = TSisxUIResult( EUiResultCancelled );       
-        }
-    
-    // Cache only if no previous cache is found
-    if( languageIndex != -1 && !iCache->LanguageCached() )
-        {
-        iCache->SetLanguage( aLanguages[languageIndex] );
-        }     
-    
-    iShowingDialog = EFalse;
-    return languageIndex;
-    }
-	
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayDriveL
-// Requests the drive to install the package on, from the UI.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CSisxUIHandler::DisplayDriveL( const Swi::CAppInfo& /*aAppInfo*/, 
-                                    TInt64 aSize,
-                                    const RArray<TChar>& aDriveLetters,
-                                    const RArray<TInt64>& aDriveSpaces ) 
-    {
-    if ( aDriveLetters.Count() <= 0 )
-        {
-        iResult = TSisxUIResult( EUiResultInsufficientMemory );
-        return -1;        
-        }    
-
-    iShowingDialog = ETrue;
-
-    RArray<TDriveUnit> driveUnits;
-    CleanupClosePushL( driveUnits );
-
-    TInt index( 0 );
-
-    // Convert drive letters to TDriveUnits
-    for ( index = 0; index < aDriveLetters.Count(); index++ )
-        {
-        TBuf<2> tmp;
-        tmp.Append( aDriveLetters[index] );
-        driveUnits.Append( TDriveUnit( tmp ) );
-        }
-    
-    TInt selection( -1 );
-    TInt dlgResult( KErrNone );    
-
-    // See if the selection has been cached
-    if ( iCache->DriveCached() )
-        {
-        for ( index = 0; index < aDriveLetters.Count(); index++ )
-            {
-            if ( (TInt)iCache->Drive() == (TInt)driveUnits[index] )
-                {
-                // Make sure, we have enough size in the cached drive
-                if ( aSize < aDriveSpaces[index] )
-                    {
-                    selection = index;
-                    break;                    
-                    }  
-                else
-                    {
-                    // Cached drive has insufficient memory, ask user again
-                    dlgResult = iCommonDialogs->ShowDriveSelectionDialogL( aSize, 
-                                                                           driveUnits, 
-                                                                           aDriveSpaces, 
-                                                                           selection );
-                                
-                    break;
-                    }                
-                }
-            }        
-        }
-    // Not cached
-    else
-        {
-        dlgResult = iCommonDialogs->ShowDriveSelectionDialogL( aSize, 
-                                                               driveUnits, 
-                                                               aDriveSpaces, 
-                                                               selection );
-        }
-
-    if ( dlgResult == KErrNoMemory )
-        {                       
-        // No memory
-        iResult = TSisxUIResult( EUiResultInsufficientMemory );
-        selection = -1;                        
-        }  
-
-    else if ( dlgResult == KErrCancel )
-        {
-        // User cancelled
-        iResult = TSisxUIResult( EUiResultCancelled );
-        selection = -1;                        
-        }    
-
-    // If the result is valid, put it to the cache
-    else if ( selection >= 0 )
-        {            
-        iCache->SetDrive( driveUnits[selection] );
-        }
-
-    CleanupStack::PopAndDestroy(); // driveUnits
-
-    iShowingDialog = EFalse;
-    return selection;    
-    }
-	
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayUpgradeL
-// Displays a dialog asking whether we want to upgrade an application present 
-// on the device.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayUpgradeL( const Swi::CAppInfo& aAppInfo, 
-                                       const Swi::CAppInfo& aExistingAppInfo ) 
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( EFalse );
-
-    TVersion newVersion = aAppInfo.AppVersion();
-    TVersion oldVersion = aExistingAppInfo.AppVersion();
-
-    // Display "Replace?" confirmation query only if the new version is older
-    // than the currently installed old version (i.e. when downgrading). See
-    // also User::QueryVersionSupported() although it has bit different meaning.
-    TBool downgrading = ( newVersion.iMajor < oldVersion.iMajor ||
-            ( newVersion.iMajor == oldVersion.iMajor && newVersion.iMinor < oldVersion.iMinor ) );
-    if( !downgrading )
-        {
-        iShowingDialog = EFalse;
-        return ETrue;
-        }
-
-    // Create strings from the version numbers
-    //
-    HBufC* tempBuf = 
-        CommonUI::CUIUtils::ConstructVersionStringLC( oldVersion.iMajor, 
-                                                      oldVersion.iMinor, 
-                                                      oldVersion.iBuild );
-                                                      
-    HBufC* oldVersionBuf = HBufC::NewLC( KLRE().Length() + tempBuf->Length() + KPDF().Length() ); 
-    TInt position = tempBuf->Find( KLeftParenthes() );
-    if ( position >= 0 )
-        {
-        oldVersionBuf->Des() = tempBuf->Mid( 0, position );
-        oldVersionBuf->Des() += KLRE();
-        oldVersionBuf->Des() += tempBuf->Mid( position, tempBuf->Length() - position );
-        oldVersionBuf->Des() += KPDF();
-        }
-    else
-        {
-        oldVersionBuf->Des() = *tempBuf;	
-        }
-    CleanupStack::Pop( oldVersionBuf );    
-    CleanupStack::PopAndDestroy( tempBuf );
-    CleanupStack::PushL( oldVersionBuf );
-    tempBuf = NULL;
-  
-    tempBuf = CommonUI::CUIUtils::ConstructVersionStringLC( newVersion.iMajor, 
-                                                            newVersion.iMinor, 
-                                                            newVersion.iBuild );
-    
-    HBufC* newVersionBuf = HBufC::NewLC( KLRE().Length() + tempBuf->Length() + KPDF().Length() );
-
-    position = tempBuf->Find( KLeftParenthes() );
-    if ( position >= 0 )
-        {
-        newVersionBuf->Des() = tempBuf->Mid( 0, position );
-        newVersionBuf->Des() += KLRE();
-        newVersionBuf->Des() += tempBuf->Mid( position, tempBuf->Length() - position );
-        newVersionBuf->Des() += KPDF();
-        }
-    else
-        {
-        newVersionBuf->Des() = *tempBuf;	
-        }
-    CleanupStack::Pop( newVersionBuf );
-    CleanupStack::PopAndDestroy( tempBuf );
-    CleanupStack::PushL( newVersionBuf );
-
-    CDesCArray* stringArray = new ( ELeave ) CDesCArrayFlat( 4 );
-    CleanupStack::PushL( stringArray );
-    
-    stringArray->AppendL( aAppInfo.AppName() );    
-    stringArray->AppendL( *oldVersionBuf );    
-    stringArray->AppendL( *newVersionBuf );    
-
-    HBufC* upgradeString = 
-        StringLoader::LoadLC( R_SISXUI_UPGRADE_PROMPT, *stringArray );
-    TPtr ptr = upgradeString->Des();
-    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); 
-
-
-    if ( iCommonDialogs->ShowConfirmationQueryL( *upgradeString ) )
-        {
-        result = ETrue;        
-        }   
-    else
-        {
-        // User selected cancel. 
-        iResult = TSisxUIResult( EUiResultCancelled );
-        }
-    
-    CleanupStack::PopAndDestroy( 4 ); // upgradeString, stringArray, newVersionBuf, oldVersionBuf
-    
-    iShowingDialog = EFalse;
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayOptionsL
-// Displays a dialog box asking which options the user wishes to install.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayOptionsL( const Swi::CAppInfo& /*aAppInfo*/,
-                                       const RPointerArray<TDesC>& aOptions,
-                                       RArray<TBool>& aSelections ) 
-    {
-    iShowingDialog = ETrue;
-
-    TBool response;
-    TInt index = 0;    
-
-    if ( aOptions.Count() < 1 )
-        {
-        User::Leave( KErrArgument );        
-        }
-    
-    CDesCArray* itemArray = new ( ELeave ) CDesCArrayFlat( 4 );
-    CleanupStack::PushL( itemArray );
-
-    // Construct text array for the dialog
-    for( index = 0; index < aOptions.Count(); index++ )
-        {
-        TPtrC itemLabel( *( aOptions[index] ) ) ;        
-        HBufC *itemLine = HBufC::NewLC( itemLabel.Length() + 2 ); // Add 2 for "1\t"
-        TPtr itemPtr = itemLine->Des();
-        itemPtr.Copy( _L("1\t") );
-        itemPtr.Append( itemLabel );
-        
-        itemArray->AppendL( itemPtr );
-
-        CleanupStack::PopAndDestroy( itemLine );
-        }    
-
-    // Create and selection index array for multiselection list
-    CListBoxView::CSelectionIndexArray* selections = 
-        new ( ELeave ) CArrayFixFlat<TInt>( aSelections.Count() );
-    CleanupStack::PushL( selections );    
-    // Set all selections marked by default.
-    for ( index = 0; index < aSelections.Count(); index++ )
-        {
-        selections->AppendL( index );        
-        }
-
-    // Create multiselection list query
-    CAknListQueryDialog* dlg = new ( ELeave ) CAknListQueryDialog( selections );
-
-    dlg->PrepareLC( R_SISXUI_OPTIONS_QUERY );
-    dlg->SetItemTextArray( itemArray );
-    // Set all selections marked by default.
-    dlg->ListBox()->SetSelectionIndexesL( selections );    
-    
-    dlg->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    ((CEikFormattedCellListBox*)(dlg->ListBox()))->ItemDrawer()->FormattedCellData()->EnableMarqueeL( ETrue );
-    TInt queryOk = dlg->RunLD();
-    
-    if( !queryOk )
-        {
-        response = EFalse;
-        iResult = TSisxUIResult( EUiResultCancelled );
-        }
-    else
-        {
-        response = ETrue;
-
-        // First set all items in aSelections to EFalse
-        for( index = 0; index < aSelections.Count(); index++ )
-            {
-            aSelections[index] = EFalse;
-            }
-        // Then copy selections to aSelections
-        for( index = 0; index < selections->Count(); index++ )
-            {
-            TInt selectedItem = selections->At( index );
-            aSelections[selectedItem] = ETrue;
-            }
-        
-        }
-
-    CleanupStack::PopAndDestroy( 2 ); // itemArray, selections
- 
-    iShowingDialog = EFalse;
-    return response;
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::HandleInstallEventL
-// Informs the UI of events occurring during installation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::HandleInstallEventL( const Swi::CAppInfo& aAppInfo,
-                                          Swi::TInstallEvent aEvent, 
-                                          TInt aValue, 
-                                          const TDesC& /*aDesC*/ )
-    {
-    TBool result( ETrue );    
-    iShowingDialog = ETrue;
-
-    switch ( aEvent )
-        {
-        case Swi::EEventSetProgressBarFinalValue:
-            if ( iMode == EModeInstall )
-                {                
-                // Show installing progress dialog.
-                iCommonDialogs->ShowProgressDialogL( R_SISXUI_INSTALLING, this );
-
-                // Here we need to update the name and vendor of the main package.
-                // They might have changed when a language has been selected.
-                if ( iPackages.Count() > 0 )
-                    {                    
-                    iPackages[0]->SetNameL( aAppInfo.AppName() );
-                    iPackages[0]->SetVendorL( aAppInfo.AppVendor() );
-                    }                
-                }
-            else
-                {               
-                // Show uninstalling progress dialog.
-                iCommonDialogs->ShowProgressDialogL( R_SISXUI_UNINSTALLING, this, R_AVKON_SOFTKEYS_EMPTY );
-                }         
-            iCommonDialogs->SetProgressDialogFinalValueL( aValue );
-
-            break;  
-            
-        case Swi::EEventUpdateProgressBar:
-            iCommonDialogs->UpdateProgressDialogValueL( aValue );
-            break;  
-       
-        case Swi::EEventOcspCheckEnd:
-            iCommonDialogs->CloseWaitDialogL();
-            iOcspInProgress = EFalse;            
-            break;
-
-        case Swi::EEventDevCert:
-            {        
-            HBufC* messageString = StringLoader::LoadLC( R_SISXUI_DEVCERT_WARNING );
-            CAknMessageQueryDialog* dlg = 
-                CAknMessageQueryDialog::NewL( *messageString, CAknQueryDialog::EWarningTone );
-            if ( !dlg->ExecuteLD( R_SISXUI_DEVCERT_DIALOG ) )
-                {
-                // User cancelled
-                iResult = TSisxUIResult( EUiResultCancelled );
-                result = EFalse;                
-                }    
-            CleanupStack::PopAndDestroy( messageString );
-            }
-            break;
-
-            // Ignored
-        case Swi::EEventCompletedUnInstall:            
-        case Swi::EEventCompletedInstall:                        
-        case Swi::EEventAbortedInstall:
-        case Swi::EEventAbortedUnInstall:       
-        case Swi::EEventLeave:
-        default:
-            break;
-            
-        }
-
-    // See if user has requested an cancel and our state is cancellable
-    if ( result && iCancelRequested &&  
-         ( aEvent == Swi::EEventSetProgressBarFinalValue ||
-           aEvent == Swi::EEventUpdateProgressBar ||
-           aEvent == Swi::EEventOcspCheckEnd ) )
-        {
-        iCancelRequested = EFalse;        
-        // Show the confirmation prompt
-        if ( iCommonDialogs->ShowConfirmationQueryL( R_SWCOMMON_CANCEL_INSTALLATION, 
-                                                     R_AVKON_SOFTKEYS_YES_NO__YES ) )
-            {
-            // Ok to cancel       
-            iResult = TSisxUIResult( EUiResultCancelled );
-            iCancelObserver->UserCancelL( ETrue );            
-            }                
-        }    
-    
-    iShowingDialog = EFalse;
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::HandleCancellableInstallEventL
-// Informs the UI of cancellable events occurring during installation.  
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::HandleCancellableInstallEventL( const Swi::CAppInfo& /*aAppInfo*/,
-                                                     Swi::TInstallCancellableEvent aEvent, 
-                                                     Swi::MCancelHandler& /*aCancelHandler*/,
-                                                     TInt /*aValue*/, 
-                                                     const TDesC& /*aDes*/ )
-    {
-    switch ( aEvent )
-        {
-        case Swi::EEventOcspCheckStart:
-            {
-            // Show ocsp wait dialog
-            iCommonDialogs->ShowWaitDialogL( R_SISXUI_DOING_OCSP, this );
-            iOcspInProgress = ETrue;            
-            break;      
-            }
-
-            // These are ignored
-        case Swi::EEventRemovingFiles:
-        case Swi::EEventCopyingFiles:
-        case Swi::EEventShuttingDownApps:
-        default:
-            break;            
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplaySecurityWarningL
-// Displays a dialog indicating that the package is unsigned, or that signature 
-// validation has failed.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplaySecurityWarningL( const Swi::CAppInfo& aAppInfo,
-                                               Swi::TSignatureValidationResult aSigValidationResult,
-                                               RPointerArray<CPKIXValidationResultBase>& aPkixResults,
-                                               RPointerArray<Swi::CCertificateInfo>& aCertificates,
-                                               TBool aInstallAnyway )
-    {
-#ifdef RD_COMBINE_INSTALLATION_QUERIES //with new dialog sequence
-    // Close the preparing wait dialog
-    iCommonDialogs->CloseWaitDialogL();
-#endif //RD_COMBINE_INSTALLATION_QUERIES
-    iShowingDialog = ETrue;
-
-    FLOG_1( _L("CSisxUIHandler::DisplaySecurityWarningL: %d"), aSigValidationResult );    
-    TBool result( ETrue );
-    
-    switch ( aSigValidationResult )
-        {
-        case Swi::EValidationSucceeded:       
-            {
-            CSisxUIAppInfo* appInfo = CSisxUIAppInfo::NewL( aAppInfo, ETrue );
-            iPackages.Append( appInfo );
-            
-            for ( TInt index = 0; index < aCertificates.Count(); index++ )
-                {
-                TValidationStatus status = aPkixResults[index]->Error();
-                if ( status.iReason == EValidatedOK )
-                    {                    
-                    CSisxUICertificateInfo* certInfo = CSisxUICertificateInfo::NewL( *aCertificates[index] );
-                    CleanupStack::PushL( certInfo );
-                    User::LeaveIfError( iCertificateArray.Append( certInfo ));
-                    CleanupStack::Pop( certInfo );
-                    }                
-                }
-
-            appInfo->PrepareIteratorL( aAppInfo );            
-#ifdef RD_COMBINE_INSTALLATION_QUERIES //with new dialog sequence
-            CommonUI::CCUIDetailsDialog* details = 
-                CommonUI::CCUIDetailsDialog::NewL( R_AVKON_SOFTKEYS_OK_CANCEL__OK, ETrue );
-#else       //with old dialog sequence            
-            CommonUI::CCUIDetailsDialog* details = 
-                CommonUI::CCUIDetailsDialog::NewL( R_SWCOMMON_SOFTKEYS_CONTINUE_CANCEL__CONTINUE, ETrue );
-#endif //RD_COMBINE_INSTALLATION_QUERIES
-            if ( !iIsDrmFileSet )
-                {                
-                result = details->ExecuteLD( *appInfo, iCertificateArray );
-                }
-            else
-                {
-                result = details->ExecuteLD( *appInfo, iCertificateArray, iDrmFile );
-                }
-            appInfo->FreeIterator();            
-
-            if ( !result )
-                {
-                // User cancelled
-                iResult = TSisxUIResult( EUiResultCancelled );
-                }            
-            
-            iCertificateArray.ResetAndDestroy();            
-            
-            break;
-            }       
-
-            // Non fatals
-        case Swi::ESignatureSelfSigned:
-        case Swi::ESignatureNotPresent:
-        case Swi::ENoCertificate:
-        case Swi::ECertificateValidationError:
-        case Swi::ENoCodeSigningExtension:
-        case Swi::ENoSupportedPolicyExtension:
-            // Fatals with aInstallAnyway set as EFalse
-        case Swi::ESignatureCouldNotBeValidated:
-        case Swi::EMandatorySignatureMissing:
-            {
-            // Check if we are allowed to continue installation
-            if ( aInstallAnyway && iAllowUntrusted )
-                {          
-#ifdef RD_COMBINE_INSTALLATION_QUERIES //with new dialog sequence
-
-                CSisxUIAppInfo* appInfo = CSisxUIAppInfo::NewL( aAppInfo, EFalse );
-                iPackages.Append( appInfo );
-                appInfo->PrepareIteratorL( aAppInfo );            
-                CommonUI::CCUIDetailsDialog* details = 
-                CommonUI::CCUIDetailsDialog::NewL( R_AVKON_SOFTKEYS_OK_CANCEL__OK, ETrue );
-                if ( !iIsDrmFileSet )
-                    {                
-                    result = details->ExecuteLD( *appInfo );
-                    }
-                else
-                    {
-                    result = details->ExecuteLD( *appInfo, iDrmFile );
-                    }
-                appInfo->FreeIterator();
-                if ( result )
-                    {
-                	result = iCommonDialogs->ShowSecurityWarningDialogL();
-                    }
-                        
-#else           //with old dialog sequence   
-      
-                result = iCommonDialogs->ShowSecurityWarningDialogL();
-                
-                if ( result )
-                    {
-                    CSisxUIAppInfo* appInfo = CSisxUIAppInfo::NewL( aAppInfo, EFalse );
-                    iPackages.Append( appInfo );
-                    appInfo->PrepareIteratorL( aAppInfo );            
-                    CommonUI::CCUIDetailsDialog* details = 
-                        CommonUI::CCUIDetailsDialog::NewL( R_SWCOMMON_SOFTKEYS_CONTINUE_CANCEL__CONTINUE );
-                    if ( !iIsDrmFileSet )
-                        {                
-                        result = details->ExecuteLD( *appInfo );
-                        }
-                    else
-                        {
-                        result = details->ExecuteLD( *appInfo, iDrmFile );
-                        }
-                    appInfo->FreeIterator();
-                    }
-                    
-#endif //RD_COMBINE_INSTALLATION_QUERIES
-
-                if ( !result )
-                    {
-                    // User cancelled
-                    iResult = TSisxUIResult( EUiResultCancelled );
-                    }                
-                }
-            else
-                {
-                iResult = TSisxUIResult( aSigValidationResult );
-                result = EFalse;
-
-                // Fatal error, not allowed to continue
-                // Try to see if the error was due to invalid date in the certificate
-                for ( TInt index = 0; index < aPkixResults.Count(); index++ )
-                    {
-                    TValidationStatus status = aPkixResults[index]->Error();
-                    if ( status.iReason == EDateOutOfRange )
-                        {
-                        // Compare timestamps, use secure time if available
-                        TTime now;
-                        if( now.UniversalTimeSecure() != KErrNone )
-                            {
-                            // KErrNoSecureTime or other error
-                            now.UniversalTime();
-                            }
-                        TTime validFrom( aCertificates[index]->ValidFrom() );
-                        
-                        if ( now < validFrom )
-                            {
-                            // Certificate valid in future
-                            iResult = TSisxUIResult( EUiResultCertificateValidInFuture );
-                            }
-                        else
-                            {
-                            // Certificate expired
-                            iResult = TSisxUIResult( EUiResultCertificateExpired );
-                            }
-
-                        break;                        
-                        }                    
-                    }
-                }            
-            break;
-            }
-
-        default:
-            iResult = TSisxUIResult( aSigValidationResult );
-            result = EFalse;
-            break;            
-        }
-    
-    iShowingDialog = EFalse;
-    return result;    
-    }
-	
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayOcspResultL
-// Displays a dialog indicating that there was an error carrying out online 
-// certificate status checking.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayOcspResultL( const Swi::CAppInfo& /*aAppInfo*/,
-                                          Swi::TRevocationDialogMessage aMessage, 
-                                          RPointerArray<TOCSPOutcome>& /*aOutcomes*/, 
-                                          RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/,
-                                          TBool aWarningOnly )
-    {
-    iShowingDialog = ETrue;
-
-    FLOG_1( _L("CSisxUIHandler::DisplayOcspResultL: %d"), aMessage );    
-    TBool result( ETrue );
-
-    // This will be treated as warning if engine says it's a warning and
-    // ocsp setting is on. In case it's must, we abort the installation.
-    if ( aWarningOnly && iOcspProc == ESisxUIOcspProcOn )
-        {
-        result = iCommonDialogs->ShowConfirmationQueryL( R_SISXUI_OCSP_SECURITY_WARNING );
-        if ( !result )
-            {
-            // User cancelled the installation
-            iResult = TSisxUIResult( EUiResultCancelled );
-            }                
-        }
-    // error or ocsp is set to must
-    else
-        {
-        iResult = TSisxUIResult( aMessage );
-        result = EFalse; 
-        }            
-
-    iShowingDialog = EFalse;
-    return result;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayCannotOverwriteFileL
-// Used to inform the user the installation they are attempting is trying to 
-// overwrite a file that does not belong to it. Following this message 
-// installation is aborted.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::DisplayCannotOverwriteFileL( const Swi::CAppInfo& /*aAppInfo*/,
-                                                  const Swi::CAppInfo& /*aInstalledAppInfo*/,
-                                                  const TDesC& aFileName )
-    {
-    FLOG_1( _L("CSisxUIHandler::DisplayCannotOverwriteFileL: %S"), &aFileName );    
-    iResult = TSisxUIResult( EUiResultUnableToOverwrite );
-    // Keep compiler happy
-    (void)aFileName;    
-    }
- 
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayMissingDependencyL
-// Used to inform the user of a missing dependency needed to install the 
-// current package. It is up to the UI implementors and/or the user whether
-// or not this warning can be overridden.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayMissingDependencyL( const Swi::CAppInfo& /*aAppInfo*/,
-                                                 const TDesC& aDependencyName,
-                                                 TVersion aWantedVersionFrom,
-                                                 TVersion aWantedVersionTo,
-                                                 TVersion aInstalledVersion )
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( EFalse );
-    
-    // Dependency component not installed    
-    if ( ( aInstalledVersion.iMajor == 0 && 
-           aInstalledVersion.iMinor == 0 &&
-           aInstalledVersion.iBuild == 0 ) || 
-         ( aWantedVersionFrom.iMajor == 0 && 
-           aWantedVersionFrom.iMinor == 0 &&
-           aWantedVersionFrom.iBuild == 0 ) )     
-        {
-        HBufC* prompt = 
-            StringLoader::LoadLC( R_SISXUI_COMPONENT_MISSING, aDependencyName );
-        
-        if ( iCommonDialogs->ShowConfirmationQueryL( *prompt ) )
-            {
-            result = ETrue;        
-            }
-
-        CleanupStack::PopAndDestroy( prompt );        
-        }
-
-    else
-        {
-        CDesCArray* stringArray = new ( ELeave ) CDesCArrayFlat( 2 );
-        CleanupStack::PushL( stringArray );
-        
-        stringArray->AppendL( aDependencyName );
-        stringArray->AppendL( aWantedVersionFrom.Name() );
-        
-        HBufC* string = NULL;
-        
-        // Specific version is needed        
-        if ( aWantedVersionTo.iMajor == aWantedVersionFrom.iMajor &&
-             aWantedVersionTo.iMinor == aWantedVersionFrom.iMinor &&
-             aWantedVersionTo.iBuild == aWantedVersionFrom.iBuild )          
-            {
-            string = StringLoader::LoadLC( R_SISXUI_REQUIRE_VER, *stringArray );
-            }
-
-        // Version or greater is needed
-        else
-            {
-            string = StringLoader::LoadLC( R_SISXUI_REQUIRE_VER_OR_GREATER, *stringArray );
-            }       
-
-        TPtr ptr = string->Des();
-        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); 
-
-        ShowErrorL( *string );
-        
-        CleanupStack::PopAndDestroy( 2); // stringArray, string
-        }
-
-    if ( !result )
-        {        
-        iResult = TSisxUIResult( EUiResultCancelled );
-        }
-
-    iShowingDialog = EFalse;
-    return result;
-    }
-       
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayUninstallL
-// Displays a dialog at the start of the uninstallation with information about 
-// the application to be uninstalled. The user may cancel the uninstallation at 
-// this stage. This dialog must be shown in TrustedUI mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayUninstallL( const Swi::CAppInfo& aAppInfo )
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( EFalse );
-
-    CSisxUIAppInfo* appInfo = CSisxUIAppInfo::NewL( aAppInfo, EFalse );
-    iPackages.Append( appInfo );
-
-    HBufC* prompt = StringLoader::LoadLC( R_SISXUI_UNINSTALL_PROMPT, aAppInfo.AppName() );
-    if ( iCommonDialogs->ShowConfirmationQueryL( *prompt, R_AVKON_SOFTKEYS_YES_NO__YES ) )
-        {
-        result = ETrue;
-        }   
-    else
-        {
-        iResult = TSisxUIResult( EUiResultCancelled );        
-        // Make sure no notes are shown after this
-        iShownFinalNote = ETrue;       
-        }
-    CleanupStack::PopAndDestroy( prompt );
-
-    iShowingDialog = EFalse;
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayTextL
-// Displays a dialog containing text. This dialog has only a Continue button if 
-// aOption is EInstFileTextOptionContinue, or Yes and No buttons otherwise.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayTextL( const Swi::CAppInfo& aAppInfo, 
-                                    Swi::TFileTextOption aOption,
-                                    const TDesC& aText ) 
-    {
-    iShowingDialog = ETrue;
-
-    HBufC* text = aText.AllocLC();
-    CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *text );
-    dlg->PrepareLC( R_SISXUI_TEXT_DIALOG );
-    CleanupStack::PushL( dlg );    
-
-    switch ( aOption )
-        {
-        case Swi::EInstFileTextOptionContinue:
-            dlg->ButtonGroupContainer().SetCommandSetL( R_SISXUI_SOFTKEYS_CONTINUE_EMPTY__CONTINUE );
-            break;            
-            
-        case Swi::EInstFileTextOptionSkipOneIfNo:
-            dlg->ButtonGroupContainer().SetCommandSetL( R_AVKON_SOFTKEYS_YES_NO__YES );
-            break;
-            
-        case Swi::EInstFileTextOptionAbortIfNo:
-            dlg->ButtonGroupContainer().SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL__OK );
-            break;
-            
-        case Swi::EInstFileTextOptionExitIfNo:
-            dlg->ButtonGroupContainer().SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL__OK );
-            break;
-
-        default:
-            dlg->ButtonGroupContainer().SetCommandSetL( R_AVKON_SOFTKEYS_OK_EMPTY__OK );
-            break;            
-        }
-    
-    dlg->QueryHeading()->SetTextL( aAppInfo.AppName() );        
-    CleanupStack::Pop( dlg );    
-    TBool result = dlg->RunLD();   
-    
-    CleanupStack::PopAndDestroy( text );    
-
-    if ( !result )
-        {
-        iResult = TSisxUIResult( EUiResultCancelled );
-        }
-    
-    iShowingDialog = EFalse;
-    return result;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayErrorL
-// Displays a dialog showing an error message.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::DisplayErrorL( const Swi::CAppInfo& /*aAppInfo*/,
-                                    Swi::TErrorDialog aType, 
-                                    const TDesC& aParam ) 
-    {
-    FLOG_2( _L("CSisxUIHandler::DisplayErrorL: %d, %S"), aType, &aParam );    
-    iResult = TSisxUIResult( aType );
-    // Keep compiler happy
-    (void)aParam;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayDependencyBreakL
-// Displays a dialog indicating that a component which is being uninstalled is 
-// a dependency of another component installed.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayDependencyBreakL( const Swi::CAppInfo& /*aAppInfo*/,
-                                               const RPointerArray<TDesC>& /*aComponents*/ )
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( ETrue );
-    
-    result = iCommonDialogs->ShowConfirmationQueryL( R_SISXUI_DEPENDENCY_BREAK );
-
-    if ( !result )
-        {
-        iResult = TSisxUIResult( EUiResultCancelled );
-        }
-    
-    iShowingDialog = EFalse;
-    return result;
-    }
-		
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayApplicationsInUseL
-// Informs user that the applications are in use during an (un)installation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayApplicationsInUseL( const Swi::CAppInfo& /*aAppInfo*/, 
-                                                 const RPointerArray<TDesC>& /*aAppNames*/ )
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( ETrue );
-    
-    if ( iMode == EModeInstall )
-        {
-        result = iCommonDialogs->ShowConfirmationQueryL( R_SISXUI_CLOSE_MULTI_INST );        
-        }
-    else
-        {
-        result = iCommonDialogs->ShowConfirmationQueryL( R_SISXUI_CLOSE_MULTI_UNINST );        
-        }    
-    
-    if ( !result )
-        {
-        TRAP_IGNORE( iCommonDialogs->CloseProgressDialogL() );
-        iResult = TSisxUIResult( EUiResultCancelled );
-        if ( iMode == EModeUninstall )
-            {
-        	// Display Wait dialog while Symbian SWI is cancelling uninstall process.	
-            iCommonDialogs->ShowWaitDialogL( R_SISXUI_CANCELLING, 
-                                             this, 
-                                             R_AVKON_SOFTKEYS_EMPTY );
-            iShowingWaitDialog = ETrue;
-            }
-        
-        }
-
-    iShowingDialog = EFalse;
-    return result;
-    }
-	
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayQuestionL
-// Displays a generic question dialog with a Yes/No answer.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::DisplayQuestionL( const Swi::CAppInfo& /*aAppInfo*/, 
-                                        Swi::TQuestionDialog aQuestion, 
-                                        const TDesC& /*aDes*/ )
-    {
-    iShowingDialog = ETrue;
-
-    TBool result( ETrue );
-    
-    if ( aQuestion == Swi::EQuestionIncompatible && !iIncompatibleShown )
-        {
-        // Incompatible application        
-        result = iCommonDialogs->ShowConfirmationQueryL( R_SISXUI_INCOMP_PACKAGE, R_AVKON_SOFTKEYS_YES_NO__YES );
-        // Make sure this question is not asked twice.
-        iIncompatibleShown = ETrue;        
-        }
-
-    if ( !result )
-        {
-        iResult = TSisxUIResult( EUiResultCancelled );
-        }
-
-    iShowingDialog = EFalse;
-    return result;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::HandleDialogExitL
-// Called when wait/progress dialog is about to be cancelled.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CSisxUIHandler::HandleDialogExitL( TInt aButtonId )
-    {
-    TBool result( EFalse );
-    
-    if ( aButtonId == EAknSoftkeyCancel )
-        {        
-        if ( iOcspInProgress )
-            {
-            result = ETrue;            
-            // We need to cancel immediately            
-            iResult = TSisxUIResult( EUiResultCancelled );
-            iCancelObserver->UserCancelL( EFalse ); 
-            }
-        else
-            {
-            // User will still get confirmation
-            iCancelRequested = ETrue;        
-            }
-        
-        }    
-
-    return result;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ProcessResult
-// Process the result of the (un)installation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ProcessResult( TInt aResult )
-    {
-    // In case we havent got a result from callbacks, we need to use one
-    // from the engine complete code.
-    if ( iResult.iResult == EUiResultNoResult )
-        {
-        switch ( aResult )
-            {
-            case KErrNone:
-                 // This means that the result was ok
-                iResult = TSisxUIResult( EUiResultOk );
-                break;
-                
-            case KErrAccessDenied:
-                iResult = TSisxUIResult( EUiResultAccessDenied );
-                break;
-
-            case KSWInstErrUserCancel:
-                iResult = TSisxUIResult( EUiResultCancelled );
-                break;
-
-            case KSWInstErrFileCorrupted:
-                iResult = TSisxUIResult( EUiResultFileCorrupt );
-                break;  
-
-            case KErrInvalidUpgrade:
-                iResult = TSisxUIResult( EUiResultInvalidUpgrade );
-                break; 
-
-            case KErrNoMemory:
-            case KErrDiskFull:
-                iResult = TSisxUIResult( EUiResultInsufficientMemory );
-                break;                
-
-            case KErrCancel:
-                iResult = TSisxUIResult( EUiResultCancelled );
-                break;                
-                
-            default:
-                if ( iMode == EModeInstall && !iIntegrityCheckDone )
-                    {
-                    // Sisx integrity check has not been done, report file
-                    // corrupt
-                    iResult = TSisxUIResult( EUiResultFileCorrupt );                    
-                    }    
-                else
-                    {
-                    // Report general error
-                    iResult = TSisxUIResult( EUiResultGeneralError );
-                    iResult.iDetailedErrorCode = aResult;
-                    }                
-                break;                  
-            } 
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::GetResult
-// Return result of the installation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TSisxUIResult CSisxUIHandler::GetResult() const
-    {
-    return iResult;    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ShowFinalNoteL
-// Show the final note.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//     
-void CSisxUIHandler::ShowFinalNoteL()
-    {
-    switch ( iResult.iResult )
-        {      
-        case EUiResultOk:
-            DisplayCompleteL();
-            break;
-            
-        case EUiResultCancelled:
-            DisplayCancelL();
-            break;
-
-        case EUiResultUnableToOverwrite:
-        case EUiResultInvalidUpgrade:
-        case EUiResultBlockingEclipsingFile:
-            ShowErrorL( R_SISXUI_UPDATE_ERROR );
-            break;
-            
-        case EUiResultAlreadyInRom:
-            ShowErrorL( R_SISXUI_ALREADY_IN_ROM );            
-            break;
-
-        case EUiResultUnknownFile:
-        case EUiResultFileNotFound:
-        case EUiResultInvalidFileName:		
-        case EUiResultFileCorrupt:
-            ShowErrorL( R_SISXUI_FILE_CORRUPT );
-            break;
-            
-        case EUiResultDiskNotPresent:
-            ShowErrorL( R_SISXUI_DISK_NOT_PRESENT );
-            break;
-            
-        case EUiResultCannotRead:  
-            ShowErrorL( R_SISXUI_CANNOT_READ );
-            break;
-            
-        case EUiResultCannotDelete:          	
-            ShowErrorL( R_SISXUI_CANNOT_DELETE );
-            break;
-
-        case EUiResultInsufficientMemory:
-        case EUiResultInsufficientSpaceOnDrive:
-            ShowErrorL( R_SISXUI_NOT_ENOUGH_MEMORY );
-            break;            
-            
-        case EUiResultCapabilitiesCannotBeGranted:
-            ShowErrorL( R_SISXUI_CAPABILITIES_CANNOT_BE_GRANTED );
-            break;            
-
-        case EUiResultNoCertificate:
-        case EUiResultCertificateValidationError:
-        case EUiResultSignatureNotPresent:
-        case EUiResultSignatureCouldNotBeValidated:
-        case EUiResultNoCodeSigningExtension:
-        case EUiResultNoSupportedPolicyExtension:  
-        case EUiResultMandatorySignatureMissing:
-            ShowErrorL( R_SISXUI_CERTIFICATE_ERROR );
-            break;            
-        case EUiResultSignatureSelfSigned:    
-            ShowErrorL( R_SISXUI_SELFSIGNED_ERROR );              
-            break; 
-        case EUiResultCertificateExpired:
-            ShowErrorL( R_SISXUI_CERT_EXPIRED );
-            break;
-            
-        case EUiResultCertificateValidInFuture:
-            ShowErrorL( R_SISXUI_CERT_DATE_INVALID );
-            break;
-
-        case EUiResultInvalidRevocationServerResponse:
-        case EUiResultInvalidRevocationServerUrl:
-        case EUiResultResponseSignatureValidationFailure:
-            ShowErrorL( R_SISXUI_OCSP_SETTINGS_ERROR );
-            break;
-
-        case EUiResultUnableToObtainCertificateStatus:  
-        case EUiResultInvalidCertificateStatusInformation:
-        case EUiResultCertificateStatusIsUnknown:
-        case EUiResultCertificateStatusIsUnknownSelfSigned:
-            ShowErrorL( R_SISXUI_OCSP_GENERAL_ERROR );
-            break;            
-            
-        case EUiResultCertificateStatusIsRevoked:   
-            ShowErrorL( R_SISXUI_OCSP_REVOKED );
-            break;
-
-        case EUiResultAccessDenied:
-        case EUiResultOSExeViolation:
-            ShowErrorL( R_SISXUI_ACCESS_DENIED );
-            break;            
-
-        case EUiResultMissingBasePackage:
-            ShowErrorL( R_SISXUI_BASE_MISSING );
-            break;    
-
-        case EUiResultCannotUninstallPartialUpgrade:
-            ShowErrorL( R_SISXUI_UNINSTALL_PARTIAL_ERROR );
-            break; 
-
-        case EUiResultSIDViolation:
-        case EUiResultVIDViolation:
-        case EUiResultUIDPackageViolation:
-        case EUiResultSIDMismatch:
-            ShowErrorL( R_SISXUI_PROTECTED_ERROR );
-            break;            
-
-        case EUiResultConstraintsExceeded:
-            ShowErrorL( R_SISXUI_CONSTRAINED_ERROR );
-            break;            
-            
-            //These should not come here
-        case EUiResultMissingDependency:			
-        case EUiResultRequireVer:		
-        case EUiResultRequireVerOrGreater:
-            //
-        case EUiResultGeneralError:
-        case EUiResultNoResult:
-        default:            
-            if ( iMode == EModeInstall )
-                {                
-                ShowErrorL( R_SISXUI_INSTALL_ERROR );
-                }
-            else
-                {
-                ShowErrorL( R_SISXUI_UNINSTALL_ERROR );
-                }         
-            break;            
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ProcessedPackages
-// Return the package information about this install/uninstall.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ProcessedPackages( RPointerArray<CSisxUIAppInfo>& aPackages )
-    {
-    for ( TInt index = 0; index < iPackages.Count(); index++ )
-        {
-        aPackages.Append( iPackages[index] );        
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::InstallMode
-// Return the install mode of this instance.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-CSisxUIHandler::TInstallMode CSisxUIHandler::InstallMode() const
-    {
-    return iMode;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::SetOcspProcedure
-// Sets the ocsp procedure for the installation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::SetOcspProcedure( const TSisxUIOcspProc& aOcspProc )
-    {
-    iOcspProc = aOcspProc;
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::IsShowingDialog
-// Indicates if a dialog is shown to user and expecting some user input.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//  
-TBool CSisxUIHandler::IsShowingDialog()
-    {
-    return iShowingDialog;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ShowCancellingL
-// Shows a cancelling wait dialog.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ShowCancellingL()
-    {
-    // We need to show this only in case of ocsp.
-    if ( iOcspInProgress )
-        {        
-        // Show cancelling wait dialog    
-        iCommonDialogs->ShowDelayedWaitDialogL( R_SISXUI_CANCELLING, 
-                                                this, 
-                                                R_AVKON_SOFTKEYS_EMPTY );
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DoNotShowFinalNote
-// Sets the UI not to show final note.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::DoNotShowFinalNote()
-    {
-    iShownFinalNote = ETrue;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ResetResult
-// Resets the result to no result.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ResetResult()
-    {
-    iResult.iResult = EUiResultNoResult;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::SetFileForDrm
-// Sets the file handle for showing drm details.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::SetFileForDrm( RFile& aFile )  
-    {
-    iDrmFile.Duplicate( aFile );
-    iIsDrmFileSet = ETrue;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::SetAllowUntrusted
-// Sets the policy for allowing the installation of untrusted packages.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::SetAllowUntrusted( TBool aAllowUntrusted )
-    {
-    iAllowUntrusted = aAllowUntrusted;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayCancelL
-// Displays a cancel note.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::DisplayCancelL()
-    {
-    if ( !iShownFinalNote )
-        {  
-        // Make sure that no wait or progress dialog is running
-        Finalize();
-  
-        HBufC* string = NULL;        
-        if ( iMode == EModeInstall )
-            {            
-            string = StringLoader::LoadLC( R_SISXUI_INSTALL_CANCELLED );
-            }
-        else
-            {
-            string = StringLoader::LoadLC( R_SISXUI_UNINSTALL_CANCELLED );
-            }
-        
-        CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue );
-        note->ExecuteLD( *string );
-        CleanupStack::PopAndDestroy( string ); 
-        }
-
-    iShownFinalNote = ETrue;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::DisplayCompleteL
-// Displays a complete note.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::DisplayCompleteL()
-    {
-    if ( !iShownFinalNote )
-        {        
-        // Make sure that no wait or progress dialog is running
-        Finalize();        
-
-        HBufC* string = NULL;        
-        if ( iMode == EModeInstall )
-            {            
-            string = StringLoader::LoadLC( R_SISXUI_INSTALL_COMPLETED );
-            }
-        else
-            {
-            string = StringLoader::LoadLC( R_SISXUI_UNINSTALL_COMPLETED );
-            }
-        
-        CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote( ETrue );
-        note->ExecuteLD( *string );
-        CleanupStack::PopAndDestroy( string ); 
-        }   
-
-    iShownFinalNote = ETrue;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ShowErrorL
-// Convenience function for showing a Sisx specific error.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ShowErrorL( TInt aResourceString )
-    {
-    if ( !iShownFinalNote )
-        {
-        Finalize();
-
-        HBufC* errorString = StringLoader::LoadLC( aResourceString );
-
-        RFs fs;
-        User::LeaveIfError( fs.Connect() );
-        CleanupClosePushL( fs );
-
-        CAknErrorNote* note = new (ELeave) CAknErrorNote( ETrue );
-
-        TEntry entry;
-        TInt status = fs.Entry( KSwiTempFile, entry );
-
-        if ( status == KErrNone )
-            {
-            // File exists. Status code will be appended to the message
-            HBufC* detailedMessage = HBufC::NewLC( errorString->Length() + KSpaceForErrorCode );
-            if( iResult.iResult != EUiResultGeneralError ) {
-                detailedMessage->Des().Format( KDetailedError, errorString, iResult.iResult );
-            } else {
-                detailedMessage->Des().Format( KDetailedError, errorString,
-                        iResult.iDetailedErrorCode );
-            }
-            note->ExecuteLD( *detailedMessage );
-            CleanupStack::PopAndDestroy( detailedMessage );
-            }
-        else
-            {
-            // File doesn't exist. Show the message without status code
-            note->ExecuteLD( *errorString );
-            }
-
-        CleanupStack::PopAndDestroy( 2 );  // fs, errorString
-
-        // No notes after error
-        iShownFinalNote = ETrue;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ShowErrorL
-// Convenience function for showing a Sisx specific error.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::ShowErrorL( const TDesC& aDes )
-    {
-    if ( !iShownFinalNote )
-        { 
-        Finalize();    
-        
-        CAknErrorNote* note = new (ELeave) CAknErrorNote( ETrue );
-        note->ExecuteLD( aDes );
-        
-        // No notes after error
-        iShownFinalNote = ETrue;   
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::AddCapabilityL
-// Adds the given capability string to the descriptor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::AddCapabilityL( HBufC*& aString, TInt aResourceId )
-    {
-    HBufC* tmpString = StringLoader::LoadLC( aResourceId );
-    HBufC* newString;
-    
-    if ( aString->Length() > 0 )
-        {
-        newString = HBufC::NewL( tmpString->Length() + aString->Length() + 1 ); // + \n
-        
-        TPtr ptr( newString->Des() );
-        ptr += *aString;        
-        ptr += KNextLine;        
-        ptr += *tmpString;
-        }
-    else
-        {
-        newString = HBufC::NewL( tmpString->Length() );
-
-        TPtr ptr( newString->Des() );                
-        ptr += *tmpString;
-        }
-
-    CleanupStack::PopAndDestroy( tmpString );
-    CleanupStack::PopAndDestroy( aString );  
-  
-    aString = newString;    
-    CleanupStack::PushL( aString );    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::Finalize
-// Finalizes the installation by closing all open dialogs.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIHandler::Finalize()
-    {
-    TRAP_IGNORE( iCommonDialogs->CloseWaitDialogL() );
-    TRAP_IGNORE( iCommonDialogs->CloseProgressDialogL() );   
-    // No notes after this
-    iShownFinalNote = ETrue;        
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIHandler::ShowCapabilitiesHelp
-// Callback used in message query. 
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CSisxUIHandler::ShowCapabilitiesHelp( TAny* aPtr )
-    {
-    //TRAP_IGNORE( 
-    //    reinterpret_cast<CSisxUIHandler*>(aPtr)->iCommonDialogs->LaunchHelpL( KAM_HLP_INSTALL_CAPAB )    
-    //    );    
-
-    return KErrNone;    
-    }
-
-
-//  End of File