201035_01
authorhgs
Fri, 03 Sep 2010 17:01:40 +0300
changeset 69 b18a4bf55ddb
parent 64 48c14c385b0e
child 74 4947cba933ad
child 75 2d2d25361590
201035_01
appinstall_plat/sifui_api/bwins/sifuiu.def
appinstall_plat/sifui_api/eabi/sifuiu.def
appinstall_plat/sifui_api/inc/sifui.h
appinstall_plat/sifui_api/inc/sifuiprivate.h
appinstall_plat/sifui_api/src/sifui.cpp
appinstall_plat/sifui_api/src/sifuiprivate.cpp
appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h
appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp
appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp
appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp
appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugininstallparams.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlerbase.h
appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlersilent.h
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugininstallparams.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlerbase.cpp
appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlersilent.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp
appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h
iaupdate/IAD/backgroundchecker/group/iaupdatebg.mmp
iaupdate/IAD/backgroundchecker/src/iaupdatbgnotifyhandler.cpp
iaupdate/IAD/backgroundchecker/src/iaupdatebgnotifyhandler.cpp
iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp
iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp
iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h
iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp
iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp
iaupdate/IAD/engine/controller/src/iaupdateutils.cpp
iaupdate/IAD/engine/inc/iaupdateutils.h
iaupdate/IAD/ui/inc/iaupdateuids.h
iaupdate/IAD/ui/src/iaupdateengine.cpp
iaupdate/IAD/ui/src/iaupdatesettingdialog.cpp
iaupdate/IAD/ui/src/iaupdateuicontroller.cpp
iaupdate/IAD/updater/inc/iaupdaterinstaller.h
iaupdate/IAD/updater/inc/iaupdatersilentlauncher.h
iaupdate/IAD/updater/src/iaupdaterinstaller.cpp
iaupdate/IAD/updater/src/iaupdatersilentlauncher.cpp
iaupdate/rom/iaupdate.iby
installationservices/swcomponentregistry/group/bld.inf
ncdengine/engine/engine.pro
ncdengine/engine/group/bld.inf
ncdengine/engine/group/catalogsserver.mmp
ncdengine/engine/group/ncddevicemgmt.mmp
ncdengine/engine/src/catalogsdebug.cpp
ncdengine/engine/transport/inc/catalogshttpdownload.h
ncdengine/engine/transport/inc/catalogshttpdownloadmanagerimpl.h
ncdengine/engine/transport/inc/catalogshttpsessionmanager.h
ncdengine/engine/transport/inc/catalogshttpsessionmanagerimpl.h
ncdengine/engine/transport/inc/catalogshttpstack.h
ncdengine/engine/transport/inc/catalogstransportimpl.h
ncdengine/engine/transport/src/catalogshttpdownload.cpp
ncdengine/engine/transport/src/catalogshttpdownloadmanagerimpl.cpp
ncdengine/engine/transport/src/catalogshttpsessionmanagerimpl.cpp
ncdengine/engine/transport/src/catalogstransportimpl.cpp
ncdengine/inc/catalogsconstants.h
ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h
ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h
ncdengine/provider/deviceinteraction/inc/ncdsilentinstallactiveobserver.h
ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp
ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp
ncdengine/provider/server/inc/ncdfavoritemanagerimpl.h
ncdengine/provider/server/inc/ncdloadnodeoperationimpl.h
ncdengine/provider/server/src/ncdprovidermanager.cpp
package_definition.xml
package_map.xml
--- a/appinstall_plat/sifui_api/bwins/sifuiu.def	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstall_plat/sifui_api/bwins/sifuiu.def	Fri Sep 03 17:01:40 2010 +0300
@@ -32,4 +32,5 @@
 	?ShowSingleSelectionL@CSifUi@@QAEHABVTDesC16@@ABVMDesC16Array@@AAH@Z @ 31 NONAME ; int CSifUi::ShowSingleSelectionL(class TDesC16 const &, class MDesC16Array const &, int &)
 	?ShowFailedL@CSifUi@@QAEXABVCSifUiErrorInfo@@@Z @ 32 NONAME ; void CSifUi::ShowFailedL(class CSifUiErrorInfo const &)
 	?NewLC@CSifUi@@SAPAV1@XZ @ 33 NONAME ; class CSifUi * CSifUi::NewLC(void)
+	?CancelDialogs@CSifUi@@QAEXXZ @ 34 NONAME ; void CSifUi::CancelDialogs(void)
 
--- a/appinstall_plat/sifui_api/eabi/sifuiu.def	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstall_plat/sifui_api/eabi/sifuiu.def	Fri Sep 03 17:01:40 2010 +0300
@@ -42,4 +42,5 @@
 	_ZTV15CSifUiErrorInfo @ 41 NONAME
 	_ZTV21CSifUiCertificateInfo @ 42 NONAME
 	_ZTV6CSifUi @ 43 NONAME
+	_ZN6CSifUi13CancelDialogsEv @ 44 NONAME
 
--- a/appinstall_plat/sifui_api/inc/sifui.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstall_plat/sifui_api/inc/sifui.h	Fri Sep 03 17:01:40 2010 +0300
@@ -263,6 +263,11 @@
         IMPORT_C TBool ShowSelectOptionsL( const MDesCArray& aSelectableItems,
                 RArray<TInt>& aSelectedIndexes );
 
+        /**
+         * Closes dialogs immediately and resets the CSifUi object.
+         */
+        IMPORT_C void CancelDialogs();
+
 
         //=================================================
         // DEPRECATED METHODS
--- a/appinstall_plat/sifui_api/inc/sifuiprivate.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstall_plat/sifui_api/inc/sifuiprivate.h	Fri Sep 03 17:01:40 2010 +0300
@@ -62,6 +62,7 @@
         TInt ShowSelectLanguageL( const RArray<TLanguage>& aLanguages );
         TBool ShowSelectOptionsL( const MDesCArray& aSelectableItems,
                 RArray<TInt>& aSelectedIndexes );
+        void CancelDialogs();
 
     protected:  // from CActive
         void DoCancel();
--- a/appinstall_plat/sifui_api/src/sifui.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstall_plat/sifui_api/src/sifui.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -183,6 +183,15 @@
     return iPrivate->ShowSelectOptionsL( aSelectableItems, aSelectedIndexes );
     }
 
+// ---------------------------------------------------------------------------
+// CSifUi::CancelDialogs()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CSifUi::CancelDialogs()
+    {
+    iPrivate->CancelDialogs();
+    }
+
 
 // ---------------------------------------------------------------------------
 // DEPRECATED: CSifUi::ShowFailedL()
--- a/appinstall_plat/sifui_api/src/sifuiprivate.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstall_plat/sifui_api/src/sifuiprivate.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -364,6 +364,16 @@
     }
 
 // ---------------------------------------------------------------------------
+// CSifUiPrivate::ShowSelectOptionsL()
+// ---------------------------------------------------------------------------
+//
+void CSifUiPrivate::CancelDialogs()
+    {
+    Cancel();
+    ClearParams();
+    }
+
+// ---------------------------------------------------------------------------
 // CSifUiPrivate::DoCancel()
 // ---------------------------------------------------------------------------
 //
@@ -374,6 +384,7 @@
         {
         iDeviceDialog->Cancel();        // Closes the device dialog.
         }
+    iDialogReturnValue = KErrCancel;
 
     // Cancelled device dialog does not call DeviceDialogClosed() hence have
     // to complete the request now. CActive::Cancel() waits until the request
--- a/appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h	Fri Sep 03 17:01:40 2010 +0300
@@ -27,6 +27,7 @@
 #include "daemoninstaller.h"
 #include "programstatus.h"   //For uninstaller
 #include "swidaemonplugin.h" //For SWI plugin support
+#include "sisregistrywritablesession.h"
 
 class CSwiDaemonPlugin;
 
@@ -141,7 +142,10 @@
     // Contains inserted drives.
     RArray<TInt> iDriveArray;   
     // General program status. Note this do not affect to plug-in.
-    TInt iGeneralProcessStatus; //For uninstaller   
+    TInt iGeneralProcessStatus; //For uninstaller  
+    
+    Swi::RSisRegistryWritableSession iRegistrySession;
+    TBool iRegSessionConnected;
     };
 
 } // namespace Swi
--- a/appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -44,51 +44,29 @@
 //
 void CSilentLauncher::ConstructL()
     {
-    iConnected = EFalse;
-    
+    iConnected = EFalse;   
     iSifOptions = Usif::COpaqueNamedParams::NewL();
     iSifResults = Usif::COpaqueNamedParams::NewL();
     
-    // Set needed parameters for silent install.
-    FLOG( _L("Daemon: CSilentLauncher::ConstructL: InstallSilently") );
+    // Set needed parameters for silent install.      
+    FLOG( _L("Daemon: CSilentLauncher::ConstructL: InstallSilently: ETrue") );
+    // Note InstallSilently is not a policy so use boolean ETure.
     iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );
 
-    iSifOptions->AddIntL( Usif::KSifInParam_PerformOCSP, EFalse );   
+    iSifOptions->AddIntL( Usif::KSifInParam_PerformOCSP, Usif::ENotAllowed );   
     // Note if upgrade is allowed, see NeedsInstallingL function.
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowUpgrade, EFalse );
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowUntrusted, EFalse );
-    iSifOptions->AddIntL( Usif::KSifInParam_GrantCapabilities, EFalse ); 
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowUpgrade, Usif::ENotAllowed );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowUntrusted, Usif::ENotAllowed );
+    iSifOptions->AddIntL( Usif::KSifInParam_GrantCapabilities, Usif::ENotAllowed ); 
     // Defined for the install.
-    iSifOptions->AddIntL( Usif::KSifInParam_InstallOptionalItems, ETrue );          
-    iSifOptions->AddIntL( Usif::KSifInParam_IgnoreOCSPWarnings, ETrue );            
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, ETrue );
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowDownload, ETrue );
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowOverwrite, ETrue );
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowOverwrite, ETrue );
-    
+    iSifOptions->AddIntL( Usif::KSifInParam_InstallOptionalItems, Usif::EAllowed );          
+    iSifOptions->AddIntL( Usif::KSifInParam_IgnoreOCSPWarnings, Usif::EAllowed );            
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, Usif::EAllowed );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowDownload, Usif::EAllowed );
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowOverwrite, Usif::EAllowed );
+        
 // TODO: is this defined in USIF?    
-    //iSifOptions->AddIntL( Usif::KSifInParam_Languages, NULL );
-// TODO: Not supported anymore after wk18, do we have some other param for this.
-    //iSifOptions->AddIntL( Usif::KSifInParam_DisplayPackageInfo, ETrue );
-    
-// TODO: remove old params.
-    /*
-    // Old swinstdefs.inl defines for install.   
-    iUpgrade( EPolicyAllowed ),
-    iOptionalItems( EPolicyAllowed ),
-    iOCSP( EPolicyAllowed ),    
-    iIgnoreOCSPWarnings( EPolicyAllowed ),
-    iUntrusted( EPolicyNotAllowed ),
-    iPackageInfo( EPolicyAllowed ),
-    iCapabilities( EPolicyAllowed ),
-    iKillApp( EPolicyAllowed ),
-    iDownload( EPolicyAllowed ),
-    iOverwrite( EPolicyAllowed ),
-    iDrive( 'C' ),
-    iLang( ELangNone ),
-    iUsePhoneLang( ETrue ),
-    iUpgradeData( EPolicyAllowed )
-    */        
+    //iSifOptions->AddIntL( Usif::KSifInParam_Languages, NULL );    
     }
 
 // -----------------------------------------------------------------------------
@@ -143,16 +121,12 @@
          }
         
     // Set drive for installer.
-//    delete iDrive  
-//    iDrive = NULL;
-//    iDrive = HBufC::NewLC( 8 );
-//    TPtr drivePtr = iDrive->Des();
-//     
-//    TInt driveNumber = 0;
-//    TDriveInfo driveInfo;
-//    aFileHandle.Drive( driveNumber, driveInfo );
-// TODO: how is this used? Is this drive letter?      
-//    iSifOptions->AddStringL( Usif::KSifInParam_Drive , *drive );
+    TInt driveNumber = 0;
+    TDriveInfo driveInfo;
+    aFileHandle.Drive( driveNumber, driveInfo );
+    FLOG_1( _L("Daemon: Drive number = %d"), driveNumber );
+// TODO: Use TUint array for drive numbers when plugin does support it.      
+    iSifOptions->AddIntL( Usif::KSifInParam_Drive, driveNumber );
                                  
     FLOG( _L("Daemon: Launch install") );
     iSWInstallerFW.Install( aFileHandle, 
--- a/appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -65,7 +65,9 @@
     // For uninstaller
     iSisInstaller = CSisInstaller::NewL( this, aMainStatus );
     // Create plugin
-    TRAP_IGNORE( iSwiDaemonPlugin = CSwiDaemonPlugin::NewL() );   
+    TRAP_IGNORE( iSwiDaemonPlugin = CSwiDaemonPlugin::NewL() ); 
+    
+    iRegSessionConnected = EFalse;
     }
 
 // -----------------------------------------------------------------------
@@ -82,7 +84,12 @@
     delete iSisInstaller;
     iSisInstaller = NULL;
     iFs.Close();                
-    iDriveArray.Close();        
+    iDriveArray.Close(); 
+    
+    if ( iRegSessionConnected )
+        {   
+        iRegistrySession.Close();        
+        }
     }
 
 // -----------------------------------------------------------------------
@@ -102,12 +109,13 @@
 void CDaemonBehaviour::MediaChangeL(TInt aDrive, TChangeType aChangeType)
     {
     FLOG_1( _L("Daemon: MediaChangeL: Media change %d"), aDrive );
-    RSisRegistryWritableSession registrySession;
-    
-    User::LeaveIfError( registrySession.Connect() );
-    CleanupClosePushL( registrySession );
-    
-    
+        
+    if ( !iRegSessionConnected )
+        {   
+        User::LeaveIfError( iRegistrySession.Connect() );
+        iRegSessionConnected = ETrue;
+        }
+            
     if ( aChangeType==EMediaInserted )
         {
         FLOG( _L("Daemon: MediaChangeL: Media inserted") ); 
@@ -119,7 +127,7 @@
         // We need call sis registry since this call will
         // activate sis registry to clean uninstalled components
         // from inserted media.
-        registrySession.AddDriveL( aDrive );
+        iRegistrySession.AddDriveL( aDrive );
                                                 
         // Scan directory on the card and run pre-installed through SWIS
         FLOG( _L("Daemon: MediaChangeL: Process preinstalled files") );
@@ -185,8 +193,9 @@
                 }                
             }                      
         }
-    
-    CleanupStack::PopAndDestroy(&registrySession);
+        
+    iRegistrySession.Close();
+    iRegSessionConnected = EFalse;
     }
 
 // -----------------------------------------------------------------------
@@ -475,6 +484,22 @@
         // Check if component or part of it is in the media.
         if ( isInTargetDrive )
             {
+            // Update SCR status for the component. Note SCR 
+            // needs to be updated because AppArc will check 
+            // status from SCR.                                             
+            FLOG( _L("Daemon: Set component status to SCR") );
+                        
+            if ( aChangeType == EMediaInserted )
+                {  
+                FLOG( _L("Daemon: Set component presence = TRUE") );                                                                                              
+                iRegistrySession.SetComponentPresenceL( aComponentId, ETrue );                                                            
+                }
+            else if ( aChangeType == EMediaRemoved )
+                {
+                FLOG( _L("Daemon: Set component presence = FALSE") ); 
+                iRegistrySession.SetComponentPresenceL( aComponentId, EFalse );                                                                                                               
+                }                        
+                                                                      
             // We need to update applications status to AppArc when
             // there is some media change. AppArc needs application
             // UID (not package UID) so we need to get all app. UIDs
@@ -510,23 +535,7 @@
                 
                 aAppInfoArray.Append( appInfo );   
                 }                           
-            CleanupStack::PopAndDestroy(&appUidArray);
-// Set do not work, it will leave.
-/*            
-            FLOG( _L("Daemon: Set component status to SCR") );
-            // Update component flag to SCR. 
-            if ( aChangeType == EMediaInserted )
-                {  
-                FLOG( _L("Daemon: Set component present = TRUE") );                                  
-                TRAP( err, aScrServer.SetIsComponentPresentL( aComponentId, ETrue ) );                                                                            
-                }
-            else if ( aChangeType==EMediaRemoved )
-                {
-                FLOG( _L("Daemon: Set component present = FALSE") );                              
-                TRAP( err, aScrServer.SetIsComponentPresentL( aComponentId, EFalse ) );                                                                               
-                }            
-            FLOG_1( _L("Daemon: SetIsComponentPresentL TRAP err = %d"), err );
-*/                                                          
+            CleanupStack::PopAndDestroy(&appUidArray);       
             }   // if isInTargetDrive        
         }   // if err
     
--- a/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -46,8 +46,8 @@
     iSifResults = Usif::COpaqueNamedParams::NewL();    
     // Set parameters for silent uninstall.    
     iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );       
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, ETrue );    
-    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppBreakDependency, EFalse );     
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, Usif::EAllowed );    
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppBreakDependency, Usif::ENotAllowed );     
     }
 
 
--- a/appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp	Fri Sep 03 17:01:40 2010 +0300
@@ -61,6 +61,7 @@
 LIBRARY         x509.lib                // TValidationStatus
 LIBRARY         centralrepository.lib   // CRepository
 LIBRARY         HbWidgets.lib           // CHbDeviceMessageBoxSymbian
+LIBRARY         HbCore.lib              // HbTextResolverSymbian
 LIBRARY         syslangutil.lib         // GetInstalledLanguages
 
 SMPSAFE
--- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugininstallparams.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugininstallparams.h	Fri Sep 03 17:01:40 2010 +0300
@@ -36,8 +36,8 @@
     public:     // new functions
         TBool IsSilentMode() const;
         TBool IsInstallInactive() const;
-        TUint Drive() const;
-        TLanguage Language() const;
+        const RArray<TUint>& Drives() const;
+        const RArray<TLanguage>& Languages() const;
         const TDesC& OCSPUrl() const;
         TSifPolicy PerformOCSP() const;
         TSifPolicy IgnoreOCSPWarnings() const;
@@ -61,12 +61,14 @@
                 TSifPolicy& aPolicy, const TSifPolicy& aDefault );
         void GetStringParamL( const COpaqueNamedParams& aParams, const TDesC& aParamName,
         		HBufC*& aBuf );
+        void DoProcessDriveParamL( const COpaqueNamedParams& aParams );
+        void DoProcessLangParamL( const COpaqueNamedParams& aParams );
 
     private:    // data
         TBool iUseSilentMode;
         TBool iIsInstallInactive;
-        TUint iDrive;
-        TLanguage iLanguage;
+        RArray<TUint> iDrives;
+        RArray<TLanguage> iLanguages;
         HBufC* iOCSPUrl;
         TSifPolicy iPerformOCSP;
         TSifPolicy iIgnoreOCSPWarnings;
--- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h	Fri Sep 03 17:01:40 2010 +0300
@@ -91,6 +91,7 @@
         void DisplayPreparingInstallL( const TDesC& aFileName );
         void DisplayCompleteL();
         void DisplayFailedL( const CSisxSifPluginErrorHandler& aError );
+        void CancelDialogs();
 
     public:     // new functions
         void SetDriveSelectionRequired( TBool aIsRequired );
--- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlerbase.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlerbase.h	Fri Sep 03 17:01:40 2010 +0300
@@ -46,6 +46,7 @@
         virtual void DisplayPreparingInstallL( const TDesC& aFileName ) = 0;
         virtual void DisplayCompleteL() = 0;
         virtual void DisplayFailedL( const CSisxSifPluginErrorHandler& aError ) = 0;
+        virtual void CancelDialogs() = 0;
 
     public:     // new functions
         void SetInstallParamsL( const CSisxSifPluginInstallParams& aInstallParams );
@@ -54,8 +55,8 @@
         TBool IsOcspMandatoryL() const;
 
         // functions to publish operation progress
-        void PublishStartL( const CComponentInfo::CNode& aRootNode );
-        void PublishStartL( const CComponentEntry& aEntry );
+        void PublishStartL( const CComponentInfo::CNode& aRootNode, TSifOperationPhase aPhase );
+        void PublishStartL( const CComponentEntry& aEntry, TSifOperationPhase aPhase );
         void PublishProgressL( TSifOperationSubPhase aSubPhase );
         void PublishCompletionL();
 
@@ -66,6 +67,10 @@
         void SetOcspErrorL( Swi::TRevocationDialogMessage aMessage );
         TBool ShowQuestionL( const TDesC& aText ) const;
         void ShowQuestionWithContinueL( const TDesC& aText ) const;
+        static TBool CompareDriveLetters( const TChar& aDriveFirst, const TChar& aDriveSecond );
+
+    private:    // new functions
+        void SetLocalisedErrorMessageText( const TDesC& aLogicalName );
 
     protected:	// data
         RFs& iFs;
--- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlersilent.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlersilent.h	Fri Sep 03 17:01:40 2010 +0300
@@ -86,6 +86,7 @@
         void DisplayPreparingInstallL( const TDesC& aFileName );
         void DisplayCompleteL();
         void DisplayFailedL( const CSisxSifPluginErrorHandler& aError );
+        void CancelDialogs();
 
     protected:  // new functions
         CSisxSifPluginUiHandlerSilent( RFs& aFs, CSisxSifPluginErrorHandler& aErrorHandler );
--- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -104,13 +104,14 @@
 
     if( iClientStatus )
         {
+        if( iUiHandler )
+            {
+            iUiHandler->CancelDialogs();
+            }
         if( iAsyncLauncher )
             {
             iAsyncLauncher->CancelOperation();
-            delete iAsyncLauncher;
-            iAsyncLauncher = NULL;
             }
-
         CompleteClientRequest( KErrCancel );
         }
     }
@@ -544,7 +545,6 @@
         User::RequestComplete( iClientStatus, aResult );
         iClientStatus = NULL;
         }
-    __ASSERT_DEBUG( !IsActive(), Panic( ESisxSifInternalError ) );
     iOperation = ENoOperation;
     iPhase = ENotActive;
     }
@@ -637,7 +637,7 @@
     TUid uid;
     CComponentEntry *entry = CComponentEntry::NewLC();
     GetComponentAndUidL( aComponentId, *entry, uid );
-    iUiHandler->PublishStartL( *entry );
+    iUiHandler->PublishStartL( *entry, EUninstalling );
     CleanupStack::PopAndDestroy( entry );
 
     iAsyncLauncher->UninstallL( *iUiHandler, uid, iStatus );
@@ -896,7 +896,7 @@
 	TInt maxInstalledSize = rootNode.MaxInstalledSize();
 	iUiHandler->SetMaxInstalledSize( maxInstalledSize );
 
-	iUiHandler->PublishStartL( rootNode );
+	iUiHandler->PublishStartL( rootNode, EInstalling );
 
 	UpdateInstallPrefsForPerformingOcspL();
 	FillDeviceSupportedLanguagesL();
--- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugininstallparams.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugininstallparams.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -55,6 +55,8 @@
 //
 CSisxSifPluginInstallParams::~CSisxSifPluginInstallParams()
     {
+    iDrives.Close();
+    iLanguages.Close();
     delete iOCSPUrl;
     }
 
@@ -77,21 +79,21 @@
     }
 
 // ---------------------------------------------------------------------------
-// CSisxSifPluginInstallParams::Drive()
+// CSisxSifPluginInstallParams::Drives()
 // ---------------------------------------------------------------------------
 //
-TUint CSisxSifPluginInstallParams::Drive() const
+const RArray<TUint>& CSisxSifPluginInstallParams::Drives() const
     {
-    return iDrive;
+    return iDrives;
     }
 
 // ---------------------------------------------------------------------------
-// CSisxSifPluginInstallParams::Language()
+// CSisxSifPluginInstallParams::Languages()
 // ---------------------------------------------------------------------------
 //
-TLanguage CSisxSifPluginInstallParams::Language() const
+const RArray<TLanguage>& CSisxSifPluginInstallParams::Languages() const
     {
-    return iLanguage;
+    return iLanguages;
     }
 
 // ---------------------------------------------------------------------------
@@ -222,10 +224,13 @@
     {
     iUseSilentMode = GetIntParam( aParams, KSifInParam_InstallSilently, EFalse );
     iIsInstallInactive = GetIntParam( aParams, KSifInParam_InstallInactive, EFalse );
-    // TODO: change drive and language params as arrays when available
-    iDrive = static_cast<TUint>( GetIntParam( aParams, KSifInParam_Drive, EDriveC ) );
-    iLanguage = static_cast<TLanguage>( GetIntParam( aParams, KSifInParam_Languages,
-            ELangNone ) );
+    TRAPD( err, DoProcessDriveParamL( aParams ) );
+    if( err )
+        {
+        TInt defaultDrive = GetIntParam( aParams, KSifInParam_Drive, EDriveC );
+        iDrives.AppendL( defaultDrive );
+        }
+    TRAP_IGNORE( DoProcessLangParamL( aParams ) );  // no default language
     GetStringParamL( aParams, KSifInParam_OCSPUrl, iOCSPUrl );
     GetPolicyParam( aParams, KSifInParam_PerformOCSP, iPerformOCSP, EAllowed );
     GetPolicyParam( aParams, KSifInParam_IgnoreOCSPWarnings, iIgnoreOCSPWarnings, EAllowed );
@@ -249,8 +254,14 @@
     {
 	iUseSilentMode = aParams.iUseSilentMode;
 	iIsInstallInactive = aParams.iIsInstallInactive;
-    iDrive = aParams.iDrive;
-    iLanguage = aParams.iLanguage;
+	for( TInt index = 0; index < aParams.iDrives.Count(); index++ )
+	    {
+	    iDrives.AppendL( aParams.iDrives[ index ] );
+	    }
+	for( TInt index = 0; index < aParams.iLanguages.Count(); index++ )
+	    {
+	    iLanguages.AppendL( aParams.iLanguages[ index ] );
+	    }
     if( aParams.iOCSPUrl )
         {
         iOCSPUrl = aParams.iOCSPUrl->AllocL();
@@ -320,3 +331,31 @@
         }
     }
 
+// ---------------------------------------------------------------------------
+// CSisxSifPluginInstallParams::DoProcessDriveParamL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginInstallParams::DoProcessDriveParamL( const COpaqueNamedParams& aParams )
+    {
+    const RArray<TInt>& driveArray = aParams.IntArrayByNameL( KSifInParam_Drive );
+    iDrives.Reset();
+    for( TInt index = 0; index < driveArray.Count(); index++ )
+        {
+        iDrives.AppendL( driveArray[ index ] );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginInstallParams::DoProcessLangParamL()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginInstallParams::DoProcessLangParamL( const COpaqueNamedParams& aParams )
+    {
+    const RArray<TInt>& langArray = aParams.IntArrayByNameL( KSifInParam_Languages );
+    iLanguages.Reset();
+    for( TInt index = 0; index < langArray.Count(); index++ )
+        {
+        iLanguages.AppendL( static_cast<TLanguage>( langArray[ index ] ) );
+        }
+    }
+
--- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -188,7 +188,7 @@
         const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayInstallL") );
-    iOperationPhase = EInstalling;
+    ASSERT( iOperationPhase == EInstalling );
     return ETrue;
     }
 
@@ -226,15 +226,11 @@
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayDriveL") );
 
-    TInt err = KErrNone;
     TInt driveNumber = EDriveC;
-    if( iSifUi )
+    TInt err = iSifUi->SelectedDrive( driveNumber );
+    if( err )
         {
-        err = iSifUi->SelectedDrive( driveNumber );
-        if( err )
-            {
-            FLOG_1( _L("CSisxSifPluginUiHandler::DisplayDriveL; SelectedDrive err=%d"), err );
-            }
+        FLOG_1( _L("CSisxSifPluginUiHandler::DisplayDriveL; SelectedDrive err=%d"), err );
         }
 
     TChar driveLetter = 'C';
@@ -260,7 +256,6 @@
         const Swi::CAppInfo& /*aExistingAppInfo*/ )
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayUpgradeL") );
-
     return ETrue;
     }
 
@@ -302,47 +297,48 @@
         Swi::TInstallEvent aEvent, TInt aValue, const TDesC& /*aDes*/ )
     {
     FLOG_2( _L("CSisxSifPluginUiHandler::HandleInstallEventL: aEvent %d, aValue %d"), aEvent, aValue );
+    TBool okToContinue = EFalse;
 
-    if( iSifUi->IsCancelled() )
+    if( !iSifUi->IsCancelled() )
         {
-        return EFalse;
+        okToContinue = ETrue;
+
+        switch( aEvent )
+            {
+            case Swi::EEventSetProgressBarFinalValue:
+                iProgressBarFinalValue = aValue;
+                if( iOperationPhase == EInstalling )
+                    {
+                    ShowProgressL( aAppInfo, iProgressBarFinalValue, CSifUi::EInstalling );
+                    }
+                break;
+
+            case Swi::EEventUpdateProgressBar:
+                if( iOperationPhase == EInstalling )
+                    {
+                    iSifUi->IncreaseProgressBarValueL( aValue );
+                    }
+                iProgressBarCurrentValue += aValue;
+                PublishProgressL( EFileOperation );
+                break;
+
+            case Swi::EEventDevCert:
+                // TODO: show "developer certificate" warning note
+                break;
+
+            case Swi::EEventOcspCheckEnd:
+            case Swi::EEventAbortedInstall:
+            case Swi::EEventAbortedUnInstall:
+            case Swi::EEventCompletedInstall:
+            case Swi::EEventCompletedUnInstall:
+            case Swi::EEventCompletedNoMessage:
+            case Swi::EEventLeave:
+            default:
+                break;
+            }
         }
 
-    switch( aEvent )
-        {
-        case Swi::EEventSetProgressBarFinalValue:
-            iProgressBarFinalValue = aValue;
-            if( iOperationPhase == EInstalling )
-                {
-                ShowProgressL( aAppInfo, iProgressBarFinalValue, CSifUi::EInstalling );
-                }
-            break;
-
-        case Swi::EEventUpdateProgressBar:
-            if( iOperationPhase == EInstalling )
-                {
-                iSifUi->IncreaseProgressBarValueL( aValue );
-                }
-            iProgressBarCurrentValue += aValue;
-            PublishProgressL( EFileOperation );
-            break;
-
-        case Swi::EEventDevCert:
-            // TODO: show "developer certificate" warning note
-            break;
-
-        case Swi::EEventOcspCheckEnd:
-        case Swi::EEventAbortedInstall:
-        case Swi::EEventAbortedUnInstall:
-        case Swi::EEventCompletedInstall:
-        case Swi::EEventCompletedUnInstall:
-        case Swi::EEventCompletedNoMessage:
-        case Swi::EEventLeave:
-        default:
-            break;
-        }
-
-    return ETrue;
+    return okToContinue;
     }
 
 // ---------------------------------------------------------------------------
@@ -461,7 +457,7 @@
         const Swi::CAppInfo& /*aInstalledAppInfo*/, const TDesC& /*aFileName*/ )
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayCannotOverwriteFileL") );
-
+    // TODO: implement
     }
 
 // ---------------------------------------------------------------------------
@@ -473,7 +469,7 @@
         TVersion /*aWantedVersionTo*/, TVersion /*aInstalledVersion*/ )
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayMissingDependencyL") );
-
+    // TODO: implement
     return ETrue;
     }
 
@@ -484,8 +480,7 @@
 TBool CSisxSifPluginUiHandler::DisplayUninstallL( const Swi::CAppInfo& /*aAppInfo*/ )
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayUninstallL") );
-
-    iOperationPhase = EUninstalling;
+    ASSERT( iOperationPhase == EUninstalling );
     return ETrue;       // uninstall is always silent
     }
 
@@ -506,7 +501,6 @@
 void CSisxSifPluginUiHandler::DisplayCompleteL()
     {
     FLOG( _L("CSisxSifPluginUiHandler::DisplayCompleteL") );
-
     iSifUi->ShowCompleteL();
     }
 
@@ -517,7 +511,6 @@
 void CSisxSifPluginUiHandler::DisplayFailedL( const CSisxSifPluginErrorHandler& aError )
     {
     FLOG_1( _L("CSisxSifPluginUiHandler::DisplayFailedL, error code %d"), aError.ErrorCode() );
-
     CSifUiErrorInfo* errorInfo = CSifUiErrorInfo::NewLC( aError.ErrorCategory(),
         aError.ErrorCode(), aError.ExtendedErrorCode(), aError.ErrorMessage(),
         aError.ErrorMessageDetails() );
@@ -526,6 +519,15 @@
     }
 
 // ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandler::CancelDialogs()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandler::CancelDialogs()
+    {
+    iSifUi->CancelDialogs();
+    }
+
+// ---------------------------------------------------------------------------
 // CSisxSifPluginUiHandler::CSisxSifPluginUiHandler()
 // ---------------------------------------------------------------------------
 //
@@ -577,6 +579,7 @@
                 }
             }
         }
+
     iSifUi->SetMemorySelectionL( iSelectableDrives );
     }
 
@@ -589,7 +592,6 @@
         RPointerArray<CPKIXValidationResultBase>& aPkixResults )
     {
     ASSERT( aCertificates.Count() == aPkixResults.Count() );
-
     RPointerArray<CSifUiCertificateInfo> certificates;
     CleanupResetAndDestroyPushL( certificates );
 
@@ -604,6 +606,7 @@
             }
         }
     iSifUi->SetCertificateInfoL( certificates );
+
     CleanupStack::PopAndDestroy( &certificates );
     }
 
--- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlerbase.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlerbase.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -22,10 +22,29 @@
 #include <centralrepository.h>              // CRepository
 #include <SWInstallerInternalCRKeys.h>      // KCRUidSWInstallerSettings
 #include <hb/hbwidgets/hbdevicemessageboxsymbian.h> // CHbDeviceMessageBoxSymbian
+#include <hb/hbcore/hbtextresolversymbian.h> // HbTextResolverSymbian
 #include <usif/scr/screntries.h>            // CComponentEntry
 
 using namespace Usif;
 
+_LIT( KTextResolverPath, "z:/resource/qt/translations/" );
+_LIT( KSifUiTranslationFile, "sifuidevicedialogplugin" );
+_LIT( KCommonButtonContinue, "txt_common_button_continue" );
+
+_LIT( KMemoryFull, "txt_error_info_memory_full" );
+_LIT( KUnexpectedError, "txt_error_info_an_unexpected_error_occurred" );
+_LIT( KNotEnoughSpace, "txt_error_info_there_is_not_enough_space_currently" );
+_LIT( KNetworkUnavailable, "txt_error_info_network_is_unavailable_currently" );
+_LIT( KInstallerBusy , "txt_error_info_installer_is_busy_currently" );
+_LIT( KCorruptedPackage , "txt_error_info_installation_package_is_corrupted" );
+_LIT( KNotCompatible , "txt_error_info_application_is_not_compatible_with" );
+_LIT( KSecurityIssue , "txt_error_info_there_is_a_security_issue_with_this" );
+_LIT( KNotInstalled , "txt_error_info_application_not_installed" );
+_LIT( KNotDeleted , "txt_error_info_application_not_deleted" );
+_LIT( KCannotBeDeleted , "txt_error_info_application_cannot_be_deleted" );
+
+const TInt KDefaultTimeout = 6000;  // milliseconds
+
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -37,6 +56,7 @@
         CSisxSifPluginErrorHandler& aErrorHandler ) : iFs( aFs ),
         iErrorHandler( aErrorHandler )
     {
+    HbTextResolverSymbian::Init( KSifUiTranslationFile, KTextResolverPath );
     }
 
 // ---------------------------------------------------------------------------
@@ -100,8 +120,11 @@
 // CSisxSifPluginUiHandlerBase::PublishStartL()
 // ---------------------------------------------------------------------------
 //
-void CSisxSifPluginUiHandlerBase::PublishStartL( const CComponentInfo::CNode& aRootNode )
+void CSisxSifPluginUiHandlerBase::PublishStartL( const CComponentInfo::CNode& aRootNode,
+        TSifOperationPhase aPhase )
     {
+    iOperationPhase = aPhase;
+
     RPointerArray<HBufC> appNames;
     CleanupResetAndDestroyPushL( appNames );
     RPointerArray<HBufC> appIcons;
@@ -142,8 +165,11 @@
 // CSisxSifPluginUiHandlerBase::PublishStartL()
 // ---------------------------------------------------------------------------
 //
-void CSisxSifPluginUiHandlerBase::PublishStartL( const CComponentEntry& aEntry )
+void CSisxSifPluginUiHandlerBase::PublishStartL( const CComponentEntry& aEntry,
+        TSifOperationPhase aPhase )
     {
+    iOperationPhase = aPhase;
+
     RPointerArray<HBufC> appNames;
     CleanupResetAndDestroyPushL( appNames );
     RPointerArray<HBufC> appIcons;
@@ -205,57 +231,45 @@
     iErrorHandler.SetErrorCode( aErrorCode );
     iErrorHandler.SetExtendedErrorCode( aExtErrorCode );
 
-    // TODO: localized UI strings needed
     switch( iErrorHandler.ErrorCategory() )
         {
         case ELowMemory:
-            // txt_error_info_there_is_not_enough_memory_currentl
-            iErrorHandler.SetErrorMessage( _L("There is not enough memory currently.") );
+            SetLocalisedErrorMessageText( KMemoryFull );
             break;
         case ELowDiskSpace:
-            // txt_error_info_there_is_not_enough_space_currently
-            iErrorHandler.SetErrorMessage( _L("There is not enough space currently in this drive.") );
+            SetLocalisedErrorMessageText( KNotEnoughSpace );
             break;
         case ENetworkUnavailable:
-            // txt_error_info_network_is_unavailable_currently
-            iErrorHandler.SetErrorMessage( _L("Network  is unavailable currently.") );
+            SetLocalisedErrorMessageText( KNetworkUnavailable );
             break;
         case EInstallerBusy:
-            // txt_error_info_installer_is_busy_currently
-            iErrorHandler.SetErrorMessage( _L("Installer is busy currently.") );
+            SetLocalisedErrorMessageText( KInstallerBusy );
             break;
         case ECorruptedPackage:
-            // txt_error_info_installation_package_is_corrupted
-            iErrorHandler.SetErrorMessage( _L("Installation package is corrupted. You may want to try again.") );
+            SetLocalisedErrorMessageText( KCorruptedPackage );
             break;
         case EApplicationNotCompatible:
-            // txt_error_info_application_is_not_compatible_with
-            iErrorHandler.SetErrorMessage( _L("Application is not compatible with this device.") );
+            SetLocalisedErrorMessageText( KNotCompatible );
             break;
         case ESecurityError:
-            // txt_error_info_there_is_a_security_issue_with_this
-            iErrorHandler.SetErrorMessage( _L("There is a security issue with this application.") );
+            SetLocalisedErrorMessageText( KSecurityIssue );
             break;
         case EUnexpectedError:
         case EUnknown:
-            // txt_error_info_an_unexpected_error_occurred
-            iErrorHandler.SetErrorMessage( _L("An unexpected error occurred.") );
+            SetLocalisedErrorMessageText( KUnexpectedError );
             break;
         case EUserCancelled:
             if( iOperationPhase == EInstalling )
                 {
-                // txt_error_info_application_not_installed
-                iErrorHandler.SetErrorMessage( _L("Application not installed.") );
+                SetLocalisedErrorMessageText( KNotInstalled );
                 }
             else
                 {
-                // txt_error_info_application_not_deleted
-                iErrorHandler.SetErrorMessage( _L("Application not deleted. ") );
+                SetLocalisedErrorMessageText( KNotDeleted );
                 }
             break;
         case EUninstallationBlocked:
-            // txt_error_info_application_cannot_be_deleted
-            iErrorHandler.SetErrorMessage( _L("Application cannot be deleted.") );
+            SetLocalisedErrorMessageText( KCannotBeDeleted );
             break;
         case ENone:
         default:
@@ -418,7 +432,7 @@
     CleanupStack::PushL( note );
 
     note->SetTextL( aText );
-    note->SetTimeout( 0 );
+    note->SetTimeout( KDefaultTimeout );
     if( note->ExecL() == CHbDeviceMessageBoxSymbian::EAcceptButton )
         {
         questionAccepted = ETrue;
@@ -439,13 +453,35 @@
     CleanupStack::PushL( note );
 
     note->SetTextL( aText );
-    note->SetTimeout( 0 );
+    note->SetTimeout( KDefaultTimeout );
     note->SetButton( CHbDeviceMessageBoxSymbian::EAcceptButton, EFalse );
     note->SetButton( CHbDeviceMessageBoxSymbian::ERejectButton, ETrue );
-    // TODO: localized UI string needed
-    note->SetButtonTextL( CHbDeviceMessageBoxSymbian::ERejectButton, _L("Continue") );
+    HBufC* contButton = HbTextResolverSymbian::LoadLC( KCommonButtonContinue );
+    note->SetButtonTextL( CHbDeviceMessageBoxSymbian::ERejectButton, contButton->Des() );
     (void)note->ExecL();
+    CleanupStack::PopAndDestroy( contButton );
 
     CleanupStack::PopAndDestroy( note );
     }
 
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandlerBase::CompareDriveLetters()
+// ---------------------------------------------------------------------------
+//
+TBool CSisxSifPluginUiHandlerBase::CompareDriveLetters( const TChar& aDriveFirst,
+        const TChar& aDriveSecond )
+    {
+    return( aDriveFirst.GetLowerCase() == aDriveSecond.GetLowerCase() );
+    }
+
+// ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandlerBase::SetLocalisedErrorMessageText()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandlerBase::SetLocalisedErrorMessageText( const TDesC& aLogicalName )
+    {
+    HBufC* errorText = HbTextResolverSymbian::LoadLC( aLogicalName );
+    iErrorHandler.SetErrorMessage( errorText->Des() );
+    CleanupStack::PopAndDestroy( errorText );
+    }
+
--- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlersilent.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlersilent.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -228,7 +228,7 @@
         const CApaMaskedBitmap* /*aLogo*/,
         const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )
     {
-    iOperationPhase = EInstalling;
+    ASSERT( iOperationPhase == EInstalling );
     return ETrue;
     }
 
@@ -271,13 +271,16 @@
 	TInt languageCount = aLanguages.Count();
 	if( iInstallParams )
 		{
-		TLanguage lang = iInstallParams->Language();
-		TInt index = aLanguages.Find( lang );
-		if( index >= 0 && index < languageCount )
-			{
-			languageIndex = index;
-			found = ETrue;
-			}
+		const RArray<TLanguage>& preferredLanguages = iInstallParams->Languages();
+		for( TInt prefIndex = 0; prefIndex < preferredLanguages.Count() && !found; prefIndex++ )
+		    {
+	        TInt selectedIndex = aLanguages.Find( preferredLanguages[ prefIndex ] );
+	        if( selectedIndex >= 0 && selectedIndex < languageCount )
+	            {
+	            languageIndex = selectedIndex;
+	            found = ETrue;
+	            }
+		    }
 		}
 	if( !found )
 		{
@@ -304,22 +307,26 @@
 	TInt driveCount = aDriveLetters.Count();
 	if( iInstallParams )
 		{
+	    const RArray<TUint>& preferredDrives = iInstallParams->Drives();
 		TChar driveLetter = 0;
-		RFs::DriveToChar( iInstallParams->Drive(), driveLetter );
-		TInt index = aDriveLetters.Find( driveLetter );
-		if( index >= 0 && index < driveCount )
-			{
-			if( aDriveSpaces[ index ] > aSize )
-				{
-				driveIndex = index;
-				found = ETrue;
-				}
-			}
+		TIdentityRelation<TChar> relation(CompareDriveLetters);
+		for( TInt prefIndex = 0; prefIndex < preferredDrives.Count() && !found; prefIndex++ )
+		    {
+		    RFs::DriveToChar( preferredDrives[ prefIndex ], driveLetter );
+		    TInt index = aDriveLetters.Find( driveLetter, relation );
+            if( index >= 0 && index < driveCount )
+                {
+                if( aDriveSpaces[ index ] > aSize )
+                    {
+                    driveIndex = index;
+                    found = ETrue;
+                    }
+                }
+		    }
 		}
-	// TODO: should there be some default drive?
 	if( !found )
 		{
-		User::Leave( KErrNoMemory );
+		driveIndex = KErrNotFound;
 		}
     return driveIndex;
     }
@@ -342,6 +349,7 @@
 			case EUserConfirm:
 			case ENotAllowed:
 			default:
+			    // TODO: SetError
 				break;
 			}
 		}
@@ -366,6 +374,7 @@
 			case EUserConfirm:
 			case ENotAllowed:
 			default:
+			    // TODO: SetError
 				break;
 			}
 		}
@@ -468,6 +477,7 @@
 					case EUserConfirm:
 					case ENotAllowed:
 					default:
+					    // TODO: SetError
 						break;
 					}
                 }
@@ -502,6 +512,7 @@
                 case EUserConfirm:
                 case ENotAllowed:
                 default:
+                    // TODO: SetError
                     break;
                 }
 	        }
@@ -548,6 +559,7 @@
 			case EUserConfirm:
 			case ENotAllowed:
 			default:
+			    // TODO: SetError
 				break;
 			}
 		}
@@ -566,7 +578,7 @@
 //
 TBool CSisxSifPluginUiHandlerSilent::DisplayUninstallL( const Swi::CAppInfo& /*aAppInfo*/ )
     {
-    iOperationPhase = EUninstalling;
+    ASSERT( iOperationPhase == EUninstalling );
     return ETrue;
     }
 
@@ -599,6 +611,15 @@
     }
 
 // ---------------------------------------------------------------------------
+// CSisxSifPluginUiHandlerSilent::CancelDialogs()
+// ---------------------------------------------------------------------------
+//
+void CSisxSifPluginUiHandlerSilent::CancelDialogs()
+    {
+    // nothing to do
+    }
+
+// ---------------------------------------------------------------------------
 // CSisxSifPluginUiHandlerSilent::CSisxSifPluginUiHandlerSilent()
 // ---------------------------------------------------------------------------
 //
--- a/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -155,9 +155,23 @@
         iResults = NULL;
         iResults = Usif::COpaqueNamedParams::NewL();
 
+        RArray<TInt> driveArray;
+        CleanupClosePushL( driveArray );
+        RArray<TInt> languageArray;
+        CleanupClosePushL( languageArray );
+
         if( aSilent )
             {
             iArguments->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );
+
+            driveArray.AppendL( EDriveE );
+            driveArray.AppendL( EDriveC );
+            iArguments->AddIntArrayL( Usif::KSifInParam_Drive, driveArray );
+
+            languageArray.AppendL( ELangFinnish );
+            languageArray.AppendL( ELangSwedish );
+            languageArray.AppendL( ELangEnglish );
+            iArguments->AddIntArrayL( Usif::KSifInParam_Languages, languageArray );
             }
         if( aOcsp )
             {
@@ -173,6 +187,9 @@
             {
             iSoftwareInstall.Install( fileName, *iArguments, *iResults, iStatus );
             }
+
+        CleanupStack::PopAndDestroy( &languageArray );
+        CleanupStack::PopAndDestroy( &driveArray );
         }
     else
         {
--- a/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -27,6 +27,7 @@
 #include <hbmessagebox.h>
 #include <QGraphicsLinearLayout>
 #include <QDir>
+#include <QTimer>
 #include <xqappmgr.h>                       // XQApplicationManager
 #include <usif/scr/scr.h>                   // RSoftwareComponentRegistry
 
@@ -39,114 +40,25 @@
 #define INSTALLS_PATH_5 "E:\\"
 #define INSTALLS_PATH_6 "F:\\"
 
+const int KCancelInstallDelay = 30000;  // milliseconds
+const int KCancelRemoveDelay = 5000;    // milliseconds
+
 
 TestInstaller::TestInstaller(int& argc, char* argv[]) : HbApplication(argc, argv),
     mMainWindow(0), mInstallView(0), mRemoveView(0),
     mUseSilentInstall(false), mUseSilentUninstall(false), mUseRFileInstall(false), mOcsp(false),
+    mCancelInstallShortly(false), mCancelRemoveShortly(false),
     mInstallDirectories(0), mInstallableFiles(0), mRemovableApps(0),
     mCurrentDirPath(), mCurrentFile(), mRunner(0)
 {
     mMainWindow = new HbMainWindow();
 
-    // Install view
-    mInstallView = new HbView();
-    mInstallView->setTitle(tr("Test Installer"));
-
-    QGraphicsLinearLayout *installLayout = new QGraphicsLinearLayout(Qt::Vertical);
-
-    HbLabel *installTitle = new HbLabel(tr("Install:"));
-    installLayout->addItem(installTitle);
-
-    mInstallDirectories = new HbComboBox;
-    mInstallDirectories->setEditable(false);
-    QStringList dirList;
-    getInstallDirs(dirList);
-    mInstallDirectories->setItems(dirList);
-    connect(mInstallDirectories, SIGNAL(currentIndexChanged(int)),
-        this, SLOT(installableDirChanged(int)));
-    installLayout->addItem(mInstallDirectories);
-
-    mInstallableFiles = new HbComboBox;
-    mInstallableFiles->setEditable(false);
-    connect(mInstallableFiles, SIGNAL(currentIndexChanged(int)),
-            this, SLOT(installableFileChanged(int)));
-    installLayout->addItem(mInstallableFiles);
-
-    QGraphicsLinearLayout *checkboxesLayout = new QGraphicsLinearLayout(Qt::Horizontal);
-    HbCheckBox *silentInstallCheckBox = new HbCheckBox;
-    silentInstallCheckBox->setText(tr("Silent"));
-    connect(silentInstallCheckBox, SIGNAL(stateChanged(int)),
-            this, SLOT(silentInstallCheckChanged(int)));
-    checkboxesLayout->addItem(silentInstallCheckBox);
-    HbCheckBox *rfileCheckBox = new HbCheckBox;
-    rfileCheckBox->setText(tr("Use RFile"));
-    connect(rfileCheckBox, SIGNAL(stateChanged(int)), this, SLOT(rfileCheckChanged(int)));
-    checkboxesLayout->addItem(rfileCheckBox);
-    HbCheckBox *ocspCheckBox = new HbCheckBox;
-    ocspCheckBox->setText(tr("OCSP"));
-    connect(ocspCheckBox, SIGNAL(stateChanged(int)), this, SLOT(ocspCheckChanged(int)));
-    checkboxesLayout->addItem(ocspCheckBox);
-    installLayout->addItem(checkboxesLayout);
-    installLayout->addStretch();
-
-    HbPushButton *installNew = new HbPushButton(tr("Install using new API"));
-    installLayout->addItem(installNew);
-    HbPushButton *installOld = new HbPushButton(tr("Install using old API"));
-    installLayout->addItem(installOld);
-    HbPushButton *launchApp = new HbPushButton(tr("Install by opening file"));
-    installLayout->addItem(launchApp);
-    HbPushButton *cancelInstall = new HbPushButton(tr("Cancel installing"));
-    installLayout->addItem(cancelInstall);
-    installLayout->addStretch();
-    connect(installNew, SIGNAL(clicked()), this, SLOT(installUsingNewApi()));
-    connect(installOld, SIGNAL(clicked()), this, SLOT(installUsingOldApi()));
-    connect(launchApp, SIGNAL(clicked()), this, SLOT(installByOpeningFile()));
-    connect(cancelInstall, SIGNAL(clicked()), this, SLOT(cancelInstalling()));
-
-    HbToolBar *installToolBar = new HbToolBar();
-    installToolBar->addAction(tr("RemoveView"), this, SLOT(removeViewActivated()));
-    installToolBar->addAction(tr("Exit"), this, SLOT(closeApp()));
-    mInstallView->setToolBar(installToolBar);
-
-    mInstallView->setLayout(installLayout);
+    createInstallView();
     mMainWindow->addView(mInstallView);
 
-    // Remove view
-    mRemoveView = new HbView();
-    mRemoveView->setTitle(tr("Test Uninstaller"));
-
-    QGraphicsLinearLayout *removeLayout = new QGraphicsLinearLayout(Qt::Vertical);
-
-    HbLabel *uninstallTitle = new HbLabel(tr("Uninstall:"));
-    removeLayout->addItem(uninstallTitle);
-
-    mRemovableApps = new HbComboBox;
-    mRemovableApps->setEditable(false);
-    removeLayout->addItem(mRemovableApps);
-
-    HbCheckBox *silentRemoveCheckBox = new HbCheckBox;
-    silentRemoveCheckBox->setText(tr("Silent"));
-    connect(silentRemoveCheckBox, SIGNAL(stateChanged(int)),
-            this, SLOT(silentCheckChanged(int)));
-    removeLayout->addItem(silentRemoveCheckBox);
-    removeLayout->addStretch();
-
-    HbPushButton *removeNew = new HbPushButton(tr("Remove using new API"));
-    removeLayout->addItem(removeNew);
-    HbPushButton *removeOld = new HbPushButton(tr("Remove using old API"));
-    removeLayout->addItem(removeOld);
-    removeLayout->addStretch();
-    connect(removeNew, SIGNAL(clicked()), this, SLOT(removeUsingNewApi()));
-    connect(removeOld, SIGNAL(clicked()), this, SLOT(removeUsingOldApi()));
-
-    mRemoveView->setLayout(removeLayout);
+    createRemoveView();
     mMainWindow->addView(mRemoveView);
 
-    HbToolBar *removeToolBar = new HbToolBar();
-    removeToolBar->addAction(tr("InstallView"), this, SLOT(installViewActivated()));
-    removeToolBar->addAction(tr("Exit"), this, SLOT(closeApp()));
-    mRemoveView->setToolBar(removeToolBar);
-
     mMainWindow->setCurrentView(mInstallView);
     mMainWindow->show();
 
@@ -196,6 +108,18 @@
     mOcsp = (s == Qt::Checked);
 }
 
+void TestInstaller::cancelInstallingChanged(int state)
+{
+    Qt::CheckState s = static_cast<Qt::CheckState>(state);
+    mCancelInstallShortly = (s == Qt::Checked);
+}
+
+void TestInstaller::cancelRemovingChanged(int state)
+{
+    Qt::CheckState s = static_cast<Qt::CheckState>(state);
+    mCancelRemoveShortly = (s == Qt::Checked);
+}
+
 void TestInstaller::installableDirChanged(int /*index*/)
 {
     if (mInstallDirectories) {
@@ -232,17 +156,6 @@
     }
 }
 
-void TestInstaller::cancelInstalling()
-{
-    if (mRunner) {
-        delete mRunner;
-        mRunner = 0;
-        HbMessageBox::warning(tr("Running operation deleted"));
-    } else {
-        HbMessageBox::warning(tr("No operation running"));
-    }
-}
-
 void TestInstaller::removeUsingNewApi()
 {
     if (isFileSelected() && createRunner(true)) {
@@ -297,6 +210,132 @@
     HbMessageBox::warning(tr("Open failed: %1: %2").arg(errorCode).arg(errorMsg));
 }
 
+void TestInstaller::cancelInstalling()
+{
+    HbMessageBox::warning(tr("Timeout, cancelling"));
+    delete mRunner;
+    mRunner = 0;
+    HbMessageBox::warning(tr("Installing cancelled"));
+}
+
+void TestInstaller::cancelRemoving()
+{
+    HbMessageBox::warning(tr("Timeout, cancelling"));
+    delete mRunner;
+    mRunner = 0;
+    HbMessageBox::warning(tr("Removing cancelled"));
+}
+
+void TestInstaller::createInstallView()
+{
+    Q_ASSERT( mInstallView == 0 );
+    mInstallView = new HbView();
+    mInstallView->setTitle(tr("Test Installer"));
+
+    QGraphicsLinearLayout *installLayout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    HbLabel *installTitle = new HbLabel(tr("Install:"));
+    installLayout->addItem(installTitle);
+
+    mInstallDirectories = new HbComboBox;
+    mInstallDirectories->setEditable(false);
+    QStringList dirList;
+    getInstallDirs(dirList);
+    mInstallDirectories->setItems(dirList);
+    connect(mInstallDirectories, SIGNAL(currentIndexChanged(int)),
+        this, SLOT(installableDirChanged(int)));
+    installLayout->addItem(mInstallDirectories);
+
+    mInstallableFiles = new HbComboBox;
+    mInstallableFiles->setEditable(false);
+    connect(mInstallableFiles, SIGNAL(currentIndexChanged(int)),
+            this, SLOT(installableFileChanged(int)));
+    installLayout->addItem(mInstallableFiles);
+
+    QGraphicsLinearLayout *checkboxesLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+    HbCheckBox *silentInstallCheckBox = new HbCheckBox;
+    silentInstallCheckBox->setText(tr("Silent"));
+    connect(silentInstallCheckBox, SIGNAL(stateChanged(int)),
+            this, SLOT(silentInstallCheckChanged(int)));
+    checkboxesLayout->addItem(silentInstallCheckBox);
+    HbCheckBox *rfileCheckBox = new HbCheckBox;
+    rfileCheckBox->setText(tr("Use RFile"));
+    connect(rfileCheckBox, SIGNAL(stateChanged(int)), this, SLOT(rfileCheckChanged(int)));
+    checkboxesLayout->addItem(rfileCheckBox);
+    HbCheckBox *ocspCheckBox = new HbCheckBox;
+    ocspCheckBox->setText(tr("OCSP"));
+    connect(ocspCheckBox, SIGNAL(stateChanged(int)), this, SLOT(ocspCheckChanged(int)));
+    checkboxesLayout->addItem(ocspCheckBox);
+    installLayout->addItem(checkboxesLayout);
+    installLayout->addStretch();
+
+    HbCheckBox *cancelInstall = new HbCheckBox;
+    cancelInstall->setText(tr("Cancel after %1 seconds").arg(KCancelInstallDelay/1000));
+    connect(cancelInstall, SIGNAL(stateChanged(int)), this, SLOT(cancelInstallingChanged(int)));
+    installLayout->addItem(cancelInstall);
+
+    HbPushButton *installNew = new HbPushButton(tr("Install using new API"));
+    installLayout->addItem(installNew);
+    HbPushButton *installOld = new HbPushButton(tr("Install using old API"));
+    installLayout->addItem(installOld);
+    HbPushButton *launchApp = new HbPushButton(tr("Install by opening file"));
+    installLayout->addItem(launchApp);
+    installLayout->addStretch();
+    connect(installNew, SIGNAL(clicked()), this, SLOT(installUsingNewApi()));
+    connect(installOld, SIGNAL(clicked()), this, SLOT(installUsingOldApi()));
+    connect(launchApp, SIGNAL(clicked()), this, SLOT(installByOpeningFile()));
+
+    HbToolBar *installToolBar = new HbToolBar();
+    installToolBar->addAction(tr("RemoveView"), this, SLOT(removeViewActivated()));
+    installToolBar->addAction(tr("Exit"), this, SLOT(closeApp()));
+    mInstallView->setToolBar(installToolBar);
+
+    mInstallView->setLayout(installLayout);
+}
+
+void TestInstaller::createRemoveView()
+{
+    Q_ASSERT( mRemoveView == 0 );
+    mRemoveView = new HbView();
+    mRemoveView->setTitle(tr("Test Uninstaller"));
+
+    QGraphicsLinearLayout *removeLayout = new QGraphicsLinearLayout(Qt::Vertical);
+
+    HbLabel *uninstallTitle = new HbLabel(tr("Uninstall:"));
+    removeLayout->addItem(uninstallTitle);
+
+    mRemovableApps = new HbComboBox;
+    mRemovableApps->setEditable(false);
+    removeLayout->addItem(mRemovableApps);
+
+    HbCheckBox *silentRemoveCheckBox = new HbCheckBox;
+    silentRemoveCheckBox->setText(tr("Silent"));
+    connect(silentRemoveCheckBox, SIGNAL(stateChanged(int)),
+            this, SLOT(silentCheckChanged(int)));
+    removeLayout->addItem(silentRemoveCheckBox);
+    removeLayout->addStretch();
+
+    HbCheckBox *cancelRemove = new HbCheckBox;
+    cancelRemove->setText(tr("Cancel after %1 seconds").arg(KCancelRemoveDelay/1000));
+    connect(cancelRemove, SIGNAL(stateChanged(int)), this, SLOT(cancelRemovingChanged(int)));
+    removeLayout->addItem(cancelRemove);
+
+    HbPushButton *removeNew = new HbPushButton(tr("Remove using new API"));
+    removeLayout->addItem(removeNew);
+    HbPushButton *removeOld = new HbPushButton(tr("Remove using old API"));
+    removeLayout->addItem(removeOld);
+    removeLayout->addStretch();
+    connect(removeNew, SIGNAL(clicked()), this, SLOT(removeUsingNewApi()));
+    connect(removeOld, SIGNAL(clicked()), this, SLOT(removeUsingOldApi()));
+
+    HbToolBar *removeToolBar = new HbToolBar();
+    removeToolBar->addAction(tr("InstallView"), this, SLOT(installViewActivated()));
+    removeToolBar->addAction(tr("Exit"), this, SLOT(closeApp()));
+    mRemoveView->setToolBar(removeToolBar);
+
+    mRemoveView->setLayout(removeLayout);
+}
+
 void TestInstaller::getInstallDirs(QStringList& dirList)
 {
     QStringList possibleDirs;
@@ -404,6 +443,10 @@
         mRunner = new ActiveRunner(useSif);
         connect(mRunner, SIGNAL(opCompleted()), this, SLOT(handleComplete()));
         connect(mRunner, SIGNAL(opFailed(int)), this, SLOT(handleError(int)));
+
+        if (mCancelInstallShortly) {
+            QTimer::singleShot(KCancelInstallDelay, this, SLOT(cancelInstalling()));
+        }
     } else {
         HbMessageBox::warning(tr("Already running"));
         return false;
@@ -450,6 +493,10 @@
         int index = mRemovableApps->currentIndex();
         const TComponentId &compId(mRemovableComponentIds.at(index));
         mRunner->remove(compId, mUseSilentUninstall);
+
+        if (mCancelRemoveShortly) {
+            QTimer::singleShot(KCancelRemoveDelay, this, SLOT(cancelRemoving()));
+        }
     }
 }
 
--- a/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h	Fri Sep 03 17:01:40 2010 +0300
@@ -44,12 +44,13 @@
     void silentRemoveCheckChanged(int state);
     void rfileCheckChanged(int state);
     void ocspCheckChanged(int state);
+    void cancelInstallingChanged(int state);
+    void cancelRemovingChanged(int state);
     void installableDirChanged(int index);
     void installableFileChanged(int index);
     void installUsingNewApi();
     void installUsingOldApi();
     void installByOpeningFile();
-    void cancelInstalling();
     void removeUsingNewApi();
     void removeUsingOldApi();
     void handleComplete();
@@ -57,8 +58,12 @@
     void closeApp();
     void fileOpenOk(const QVariant &result);
     void fileOpenFailed(int errorCode, const QString &errorMsg);
+    void cancelInstalling();
+    void cancelRemoving();
 
 private:    // functions
+    void createInstallView();
+    void createRemoveView();
     void getInstallDirs(QStringList& dirList);
     void changeDir(const QString& dirPath);
     void getRemovableApps();
@@ -78,6 +83,8 @@
     bool         mUseSilentUninstall;
     bool         mUseRFileInstall;
     bool         mOcsp;
+    bool         mCancelInstallShortly;
+    bool         mCancelRemoveShortly;
     HbComboBox   *mInstallDirectories;
     HbComboBox   *mInstallableFiles;
     HbComboBox   *mRemovableApps;
--- a/iaupdate/IAD/backgroundchecker/group/iaupdatebg.mmp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/backgroundchecker/group/iaupdatebg.mmp	Fri Sep 03 17:01:40 2010 +0300
@@ -45,7 +45,7 @@
 SOURCE              iaupdatebgfirsttimehandler.cpp
 SOURCE              iaupdatebginternalfilehandler.cpp
 SOURCE              iaupdatebgsoftnotification.cpp 
-SOURCE              iaupdatbgnotifyhandler.cpp
+SOURCE              iaupdatebgnotifyhandler.cpp
 
 
 LIBRARY             euser.lib 
@@ -53,14 +53,11 @@
 LIBRARY             iaupdateapi.lib 
 LIBRARY             ws32.lib 
 LIBRARY             apgrfx.lib 
-LIBRARY             Aknnotify.lib 
-LIBRARY             AknNotifyPlugin.lib
 LIBRARY             efsrv.lib	
 LIBRARY             bafl.lib 
 LIBRARY             estor.lib
 LIBRARY             CenRepNotifHandler.lib
 LIBRARY             apparc.lib 
-LIBRARY             AknDynamicSoftNote.lib
 LIBRARY             commonengine.lib
 LIBRARY             sysversioninfo.lib
 LIBRARY             FeatMgr.lib
--- a/iaupdate/IAD/backgroundchecker/src/iaupdatbgnotifyhandler.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-/*
-* Copyright (c) 2010 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 module contains the implementation of CIAUpdateBGNotifyHandler class 
-*                member functions.
-*
-*/
-
-
-//INCLUDES
-#include <e32property.h>
-
-#include "iaupdatebgnotifyhandler.h"
-#include "iaupdateuids.h"
-#include "iaupdatebglogger.h"
-
-//CONSTANTS (-> to iaupdaeuids.h)
-#define KIAUpdateBgcUid1 0x200211f4    // Bg checker UID
-const TUint32 KIAUpdateBGNotifyIndicatorRemove = 0x00000003;
-
-const TUid KPSUid = { KIAUpdateBgcUid1 };
-
-//MACROS
-_LIT_SECURITY_POLICY_PASS( KReadPolicy );
-_LIT_SECURITY_POLICY_C1( KWritePolicy, ECapabilityWriteDeviceData );
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CIAUpdateBGNotifyHandler* CIAUpdateBGNotifyHandler::NewL()
-    {
-    CIAUpdateBGNotifyHandler* self = CIAUpdateBGNotifyHandler::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CIAUpdateBGNotifyHandler* CIAUpdateBGNotifyHandler::NewLC()
-    {
-    CIAUpdateBGNotifyHandler* self = new( ELeave ) CIAUpdateBGNotifyHandler();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-//  CIAUpdateBGNotifyHandler::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CIAUpdateBGNotifyHandler::ConstructL()
-    {
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::ConstructL() begin");
-    CActiveScheduler::Add( this );
-    TInt err = RProperty::Define( KPSUid, 
-                                  KIAUpdateBGNotifyIndicatorRemove, 
-                                  RProperty::EInt,
-                                  KReadPolicy,
-                                  KWritePolicy );	
-    if ( err != KErrAlreadyExists )
-        {		
-        User::LeaveIfError( err );	
-        }
-    
-    // If not definined, set initial (dummy) value
-    if ( err == KErrNone )
-        {
-        RProperty::Set(KPSUid, KIAUpdateBGNotifyIndicatorRemove, 0);
-        }
-    
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::ConstructL() end");   
-    }    
-
-// ---------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::CIAUpdateBGNotifyHandler
-// constructor
-// ---------------------------------------------------------------------------
-//
-CIAUpdateBGNotifyHandler::CIAUpdateBGNotifyHandler()  
-: CActive( CActive::EPriorityStandard )
-    {
-
-    }
-
-// ---------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler()
-    {
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler() begin");
-    
-    Cancel();
-    iProperty.Close();
-  
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler() end");    
-    }
-
-// ---------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::StartListeningL()
-// 
-// ---------------------------------------------------------------------------
-// 
-void CIAUpdateBGNotifyHandler::StartListeningL( MIAUpdateBGNotifyObserver* aObserver )
-    {
-    
-    //#define KIAHelloWorldUiUid1 0xA000017F
-    //const TUid KPSUid1 = { KIAUpdateUiUid1 };
-    
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::StartListeningL() begin");
-    
-    if ( !iObserver )
-        {
-    	iObserver = aObserver;
-    	User::LeaveIfError( 
-    	        iProperty.Attach( KPSUid, KIAUpdateBGNotifyIndicatorRemove ) );
-        }
- 
-   	Cancel();
-	iProperty.Subscribe( iStatus );
-    SetActive();
-    
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::StartListeningL() end");
-    }
-
-// -----------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::DoCancel
-// 
-// -----------------------------------------------------------------------------
-//
-void CIAUpdateBGNotifyHandler::DoCancel()
-    {
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::DoCancel() begin");
-    
-    iProperty.Cancel();
-    
-    
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::DoCancel() end");
-    }
-
-// -----------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::RunL
-// 
-// -----------------------------------------------------------------------------
-//
-void CIAUpdateBGNotifyHandler::RunL()
-    {
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::RunL() begin");
-   	iProperty.Subscribe( iStatus );
-    SetActive();
-    
-    /* No need to read value so far
-    TInt value = 0;
-	User::LeaveIfError( RProperty::Get( KPSUid, 
-                                        KIAUpdateUiRefresh, 
-                                        wgId ) );
-    */
-    
-    iObserver->HandleIndicatorRemoveL();
-    
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::RunL() end");
-    }
-
-
-// -----------------------------------------------------------------------------
-// CIAUpdateBGNotifyHandler::RunError
-// 
-// -----------------------------------------------------------------------------
-//
-TInt CIAUpdateBGNotifyHandler::RunError( TInt /*aError*/ )
-    {
-    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::RunError()");
-	return KErrNone;
-    }
-    
-// End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgnotifyhandler.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2010 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 module contains the implementation of CIAUpdateBGNotifyHandler class 
+*                member functions.
+*
+*/
+
+
+//INCLUDES
+#include <e32property.h>
+
+#include "iaupdatebgnotifyhandler.h"
+#include "iaupdateuids.h"
+#include "iaupdatebglogger.h"
+
+//MACROS
+_LIT_SECURITY_POLICY_PASS( KReadPolicy );
+_LIT_SECURITY_POLICY_C1( KWritePolicy, ECapabilityWriteDeviceData );
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CIAUpdateBGNotifyHandler* CIAUpdateBGNotifyHandler::NewL()
+    {
+    CIAUpdateBGNotifyHandler* self = CIAUpdateBGNotifyHandler::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CIAUpdateBGNotifyHandler* CIAUpdateBGNotifyHandler::NewLC()
+    {
+    CIAUpdateBGNotifyHandler* self = new( ELeave ) CIAUpdateBGNotifyHandler();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+
+
+// ---------------------------------------------------------------------------
+//  CIAUpdateBGNotifyHandler::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CIAUpdateBGNotifyHandler::ConstructL()
+    {
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::ConstructL() begin");
+    CActiveScheduler::Add( this );
+    TInt err = RProperty::Define( KPSUidBgc, 
+                                  KIAUpdateBGNotifyIndicatorRemove, 
+                                  RProperty::EInt,
+                                  KReadPolicy,
+                                  KWritePolicy );	
+    if ( err != KErrAlreadyExists )
+        {		
+        User::LeaveIfError( err );	
+        }
+    
+    // If not definined, set initial (dummy) value
+    if ( err == KErrNone )
+        {
+        RProperty::Set(KPSUidBgc, KIAUpdateBGNotifyIndicatorRemove, 0);
+        }
+    
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::ConstructL() end");   
+    }    
+
+// ---------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::CIAUpdateBGNotifyHandler
+// constructor
+// ---------------------------------------------------------------------------
+//
+CIAUpdateBGNotifyHandler::CIAUpdateBGNotifyHandler()  
+: CActive( CActive::EPriorityStandard )
+    {
+
+    }
+
+// ---------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler()
+    {
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler() begin");
+    
+    Cancel();
+    iProperty.Close();
+  
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::~CIAUpdateBGNotifyHandler() end");    
+    }
+
+// ---------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::StartListeningL()
+// 
+// ---------------------------------------------------------------------------
+// 
+void CIAUpdateBGNotifyHandler::StartListeningL( MIAUpdateBGNotifyObserver* aObserver )
+    {
+    
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::StartListeningL() begin");
+    
+    if ( !iObserver )
+        {
+    	iObserver = aObserver;
+    	User::LeaveIfError( 
+    	        iProperty.Attach( KPSUidBgc, KIAUpdateBGNotifyIndicatorRemove ) );
+        }
+ 
+   	Cancel();
+	iProperty.Subscribe( iStatus );
+    SetActive();
+    
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::StartListeningL() end");
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::DoCancel
+// 
+// -----------------------------------------------------------------------------
+//
+void CIAUpdateBGNotifyHandler::DoCancel()
+    {
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::DoCancel() begin");
+    
+    iProperty.Cancel();
+    
+    
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::DoCancel() end");
+    }
+
+// -----------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::RunL
+// 
+// -----------------------------------------------------------------------------
+//
+void CIAUpdateBGNotifyHandler::RunL()
+    {
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::RunL() begin");
+   	iProperty.Subscribe( iStatus );
+    SetActive();
+    
+    /* No need to read value so far
+    TInt value = 0;
+	User::LeaveIfError( RProperty::Get( KPSUidBgc, 
+	                                    KIAUpdateBGNotifyIndicatorRemove, 
+                                        value ) );
+    */
+    
+    iObserver->HandleIndicatorRemoveL();
+    
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::RunL() end");
+    }
+
+
+// -----------------------------------------------------------------------------
+// CIAUpdateBGNotifyHandler::RunError
+// 
+// -----------------------------------------------------------------------------
+//
+TInt CIAUpdateBGNotifyHandler::RunError( TInt /*aError*/ )
+    {
+    FLOG("[IAUPDATE] CIAUpdateBGNotifyHandler::RunError()");
+	return KErrNone;
+    }
+    
+// End of File  
--- a/iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -44,6 +44,17 @@
 _LIT8( KRefreshFromNetworkDenied, "1" );
 _LIT(KIAUpdateLauncherExe, "iaupdatelauncher.exe" );
 
+// translator
+_LIT(KPath, "z:/resource/qt/translations/"); 
+_LIT(KFileName, "swupdate_");
+
+// loc texts
+_LIT(KTitleFirstTime, "txt_software_dpophead_update_checking");
+_LIT(KTitleOneUpdate, "txt_software_dpophead_update_available");
+_LIT(KTitleSeveralUpdates, "txt_software_dpophead_updates_available");
+_LIT(KSecondRow, "txt_software_dpopinfo_tap_to_view");
+
+
 //CONSTANTS
 const TUint KIADUpdateLauncherUid( 0x2001FE2F );
 
@@ -82,14 +93,12 @@
     
     iIndicatorNotifyHandler = CIAUpdateBGNotifyHandler::NewL();
     
-    // loc: initialize localisation text loader
-    /*
-    TBool res = HbTextResolverSymbian::Init(KLocFile, KLocFilePath);
+    // initialize localisation text loader
+    TBool res = HbTextResolverSymbian::Init(KFileName, KPath);
     if ( res != KErrNone )
         {
         // nothing to do
         }
-    */
     }
     
 // ----------------------------------------------------------
@@ -1294,129 +1303,39 @@
 // ----------------------------------------------------------
 void CIAUpdateBGTimer::LaunchNotificationL( const int aNrOfUpdates )
     {
-   
-    _LIT( KFirstTimeText, "Update checking" );
-    _LIT( KNormalText, "Updates available" );
-    _LIT( KSecondText, "Tap to view" );
-
-    // loc:
-    /*
-    _LIT( KIcon, "z:\\resource\\iaupdate\\qgn_note_swupdate_notification.svg" );
-    _LIT(KLocFile, "Text_Map_Swupdate_");
-    _LIT(KLocFilePath, "z:\\resource\\iaupdate\\");
-    
-    _LIT(KTitleFirstTime, "txt_software_dpophead_update_checking");
-    _LIT(KTitleOneUpdate, "txt_software_dpophead_update_available");
-    _LIT(KTitleSeveralUpdates, "txt_software_dpophead_updates_available");
-    
-    
-    _LIT(KSecondFirstTime, "txt_software_dpopinfo_tap_to_view");
-    _LIT(KSecondOneUpdate, "txt_software_dpopinfo_tap_to_view");
-    _LIT(KSecondSeveralUpdates, "txt_software_dpopinfo_tap_to_view");
-   */
     
     FLOG("[bgchecker] LaunchNotificationL ");
         
     iMode = ModeL();
     
-    // loc: initialize localisation text loader
-    /*
-    TBool res = HbTextResolverSymbian::Init(KLocFile, KLocFilePath);
-    if ( res != KErrNone )
-        {
-        // nothing to do
-        }
-    */
-    
-    
-    // loc: Resolve title text
-    /*
+    // Resolve title text
     HBufC*  titleText;
     if ( aNrOfUpdates == 0 )
         {
         // First time case
-        titleText = HbTextResolverSymbian::LoadL( KTitleFirstTime );
+        titleText = HbTextResolverSymbian::LoadLC( KTitleFirstTime );
         }
     else if ( aNrOfUpdates == 1 )
         {
         // one update available
-        titleText = HbTextResolverSymbian::LoadL( KTitleOneUpdate );
-        }
-    else
-        {
-        // several updates available
-        titleText = HbTextResolverSymbian::LoadL( KTitleSeveralUpdates );
-        }
-    
-    // Resolve second text
-    HBufC*  secondText;
-    if ( aNrOfUpdates == 0 )
-        {
-        // First time case
-        secondText = HbTextResolverSymbian::LoadL( KSecondFirstTime );
-        }
-    else if ( aNrOfUpdates == 1 )
-        {
-        // one update available
-        secondText = HbTextResolverSymbian::LoadL( KSecondOneUpdate, aNrOfUpdates );
+        titleText = HbTextResolverSymbian::LoadLC( KTitleOneUpdate );
         }
     else
         {
         // several updates available
-        // loc: text.append(hbTrId("txt_software_dblist_updates_available"));
-        secondText = HbTextResolverSymbian::LoadL( KSecondSeveralUpdates, aNrOfUpdates );
-        }
-     */
-    
-    // loc: Load title and second line
-    // HBufC* titleText = HbTextResolverSymbian::LoadL(KTextTitle);
-    // CleanupStack::PushL( titleText );
-    // HBufC* secondText3 = HbTextResolverSymbian::LoadL(KTextSecond);
-    // CleanupStack::PushL( titleText );
-    
-    
-    TBuf<128> titleText;
-    TBuf<128> secondText;
-    
-    //title text (normal/first time)
-    if ( iMode == ENormalMode )
-        {
-        titleText.Append(KNormalText);
-        }
-    else
-        {
-        titleText.Append(KFirstTimeText);
+        titleText = HbTextResolverSymbian::LoadLC( KTitleSeveralUpdates );
         }
     
-    //text for 2nd line
-    secondText.Append(KSecondText);
-            
-    // icon
-    /* HLa-->
-    if ( iMode == ENormalMode )
-        {
-        TFileName path;
-        TInt err = GetPrivatePathL( path ); 
-        
-        if ( err == KErrNone )
-            {
-            iSoftNotification->SetImagePathL( path );
-            //HBufC8* image = LoadFileLC( path );   
-            //iSoftNotification->SetImageL( *image );
-            //CleanupStack::PopAndDestroy( image );
-            }
-        }
-    */
-    // loc: set image path
-    // iSoftNotification->SetImagePathL( KIcon );
-  
+    // Resolve second text
+    HBufC*  secondText;
+    secondText = HbTextResolverSymbian::LoadLC( KSecondRow );
+    
     // Set texts
-    // loc: iSoftNotification->SetTextL( titleText->Des(), secondText->Des() );
-    iSoftNotification->SetTextL( titleText, secondText );
+    iSoftNotification->SetTextL( titleText->Des(), secondText->Des() );
     
-    // loc: delete text buffers
-    // CleanupStack::PopAndDestroy( titleText );
-    // CleanupStack::PopAndDestroy( titleText );
+    // delete text buffers
+    CleanupStack::PopAndDestroy( secondText );
+    CleanupStack::PopAndDestroy( titleText );
     
     // Set number of updates for dialog and internal file
     iSoftNotification->SetNrOfUpdates( aNrOfUpdates );
--- a/iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -29,6 +29,9 @@
 // Indicator type
 _LIT(KIndicatorTypeBgc, "com.nokia.iaupdate.indicatorplugin/1.0");
 
+// Icon name
+_LIT( KIconName, "qtg_large_swupdate" );
+
 // ============================ MEMBER FUNCTIONS ===============================
 void CIAUpdateBGSoftNotification::NotificationDialogActivated(
         const CHbDeviceNotificationDialogSymbian* /* aDialog */)
@@ -130,6 +133,7 @@
     // fill texts, icon & behaviour parameters
     FillNotificationParams();
     
+    iNotificationDialog->SetIconNameL( KIconName );
     iNotificationDialog->ShowL();
     
     return;
--- a/iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h	Fri Sep 03 17:01:40 2010 +0300
@@ -21,6 +21,7 @@
 #include <QObject>
 
 #include <hbindicatorinterface.h>
+#include <hbtranslator.h>
 
 /**
  * Message indicator class. 
@@ -63,9 +64,15 @@
     
 private:
     /**
-     * Nr of updates
+     * Owned
      */
     int mNrOfUpdates;
+    /**
+      * Owned
+      */
+    HbTranslator *mTranslator;
+
+    
     
 };
 
--- a/iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -20,12 +20,13 @@
 #include <apacmdln.h>
 #include <xqservicerequest.h>
 
-#include <hb/hbcore/hbtranslator.h>
-
 #include <hbicon.h>
 
 #include "bgcindicator.h" 
 
+const char KTranslatorFileName[] = "swupdate";
+const char KIconName[] = "qtg_large_swupdate";
+
 //----------------------------------------------------------------------
 
 
@@ -37,8 +38,12 @@
 HbIndicatorInterface(indicatorType,
         HbIndicatorInterface::NotificationCategory,
         InteractionActivated), 
-        mNrOfUpdates(0)
+        mNrOfUpdates(0),
+        mTranslator(0)
     {
+  
+    HbTranslator* mTranslator = new HbTranslator(KTranslatorFileName);
+    
     }
 
 // ----------------------------------------------------------------------------
@@ -47,6 +52,11 @@
 // ----------------------------------------------------------------------------
 BgcIndicator::~BgcIndicator()
     {
+    if (mTranslator) 
+        {
+        delete mTranslator;
+        mTranslator = 0;
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -77,10 +87,8 @@
 // ----------------------------------------------------------------------------
 QVariant BgcIndicator::indicatorData(int role) const
 {
-    // use iaupdate's translate file
-    // loc: HbTranslator trans("z:\\resource\\iaupdate\\","Text_Map_Swupdate_");
         
-switch(role)
+    switch(role)
     {
     case PrimaryTextRole: 
         {
@@ -88,20 +96,17 @@
         if ( mNrOfUpdates == 0 )
             {
             // First time case
-            // loc: text.append(hbTrId("txt_software_dblist_update_checking"));
-            text.append(QString("Update checking"));
+            text.append(hbTrId("txt_software_dblist_update_checking"));
             }
         else if ( mNrOfUpdates == 1 )
             {
             // one update available
-            // loc: text.append(hbTrId("txt_software_dblist_update_available"));
-            text.append(QString("Update available"));
+            text.append(hbTrId("txt_software_dblist_update_available"));
             }
         else
             {
             // several updates available
-            // loc: text.append(hbTrId("txt_software_dblist_updates_available"));
-            text.append(QString("Updates available"));
+            text.append(hbTrId("txt_software_dblist_updates_available"));
             }
         return text;        
         }
@@ -111,28 +116,20 @@
         if ( mNrOfUpdates == 0 )
             {
             // First time case
-            // loc: QString text(hbTrId("txt_software_dblist_val_not_activated"));
-            text.append(QString("Not activated"));
+            text.append(hbTrId("txt_software_dblist_val_not_activated"));
             }
-        else if ( mNrOfUpdates == 1 )
+        else 
             {
-            // one update available
-            // loc: QString text(hbTrId("txt_software_dblist_1_val_ln_update"));
-            text.append(QString("%Ln updates").arg(mNrOfUpdates));
+            // update(s) available
+            text.append(hbTrId("txt_software_dblist_val_ln_update", mNrOfUpdates));
             }
-        else
-            {
-            // several updates available
-            // loc: QString text(hbTrId("txt_software_dblist_1_val_ln_update"));
-            text.append(QString("%%Ln updates").arg(mNrOfUpdates));
-            }
+
         return text; 
         }
     case DecorationNameRole:
     case MonoDecorationNameRole:
         {
-        QString iconName("");
-        return iconName;
+        return QString(KIconName);
         }
     default: 
         return QVariant();      
--- a/iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -208,7 +208,7 @@
         // Get silent install parameters 
         Usif::COpaqueNamedParams * options = Usif::COpaqueNamedParams::NewLC();
 
-        IAUpdateUtils::UsifSilentInstallOptionsL ( options );
+        IAUpdateUtils::UsifSilentInstallOptionsL ( Node(), options );
         
         operation = install->SilentInstallL( *this, options );
 
--- a/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -509,12 +509,13 @@
 // 
 // ---------------------------------------------------------------------------
 
-void  IAUpdateUtils::UsifSilentInstallOptionsL( 
-        Usif::COpaqueNamedParams * aOptions )
+void  IAUpdateUtils::UsifSilentInstallOptionsL(
+        const CIAUpdateBaseNode& aNode, Usif::COpaqueNamedParams * aOptions )
     {
-
+    
+    // Install silently
     aOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );
-
+    
     // Upgrades are allowed 
     aOptions->AddIntL( Usif::KSifInParam_AllowUpgrade, Usif::EAllowed );
     
@@ -547,16 +548,47 @@
     aOptions->AddIntL( Usif::KSifInParam_AllowIncompatible, Usif::EAllowed  );
     
     // This only affects Java applications.
-    aOptions->AddIntL( Usif::KSifInParam_AllowDownload, Usif::EAllowed  );
+    // TODO: Add when bigger parameter buffer exists
+    // aOptions->AddIntL( Usif::KSifInParam_AllowDownload, Usif::EAllowed  );
     
     // Where to save.
-    //aOptions->AddIntL( Usif::KSifInParam_Drive, EDriveC );
+    
+    TDriveUnit driveUnit;
+    
+    if ( aNode.Mime().Compare( IAUpdateProtocolConsts::KMimeWidget ) == 0 )
+        {
+        driveUnit = IAUpdateUtils::DriveToInstallWidgetL( aNode.Identifier() );
+        }
+    else
+        {
+        driveUnit = IAUpdateUtils::DriveToInstallL( aNode.Uid(), aNode.OwnContentSizeL() );
+        }
+    
+    /* TODO: Add when installer plugin supports integer lists 
+    RArray<TInt> driveArray;
+    CleanupClosePushL( driveArray );
+    User::LeaveIfError( driveArray.Append( driveUnit ) );
+    aOptions->AddIntArrayL( Usif::KSifInParam_Drive, driveArray );
+    CleanupStack::PopAndDestroy( &driveArray );
+    */
+    
+     aOptions->AddIntL( Usif::KSifInParam_Drive, driveUnit ); // to be removed
+     
     
     // Choose the phone language.
+     
     TLanguage lang = User::Language();
+    /* TODO: Add when installer plugin supports integer lists
+    RArray<TInt> langArray;
+    CleanupClosePushL( langArray );
+    User::LeaveIfError( langArray.Append( lang ) );
+    aOptions->AddIntArrayL( Usif::KSifInParam_Drive, langArray );
+    CleanupStack::PopAndDestroy( &langArray );
+    
+    */
+     
     //aOptions->AddIntL( Usif::KSifInParam_Languages, lang ); // User::Language() );
     
-    //aOptions->AddIntL( Usif::KSifInParam_Drive, IAUpdateUtils::DriveToInstallL( aUid, aSize ) );
     }
 // -----------------------------------------------------------------------------
 // IAUpdateUtils::InstalledDriveL
@@ -671,39 +703,33 @@
 // 
 // -----------------------------------------------------------------------------
 // 
-void IAUpdateUtils::InstalledDriveWidgetL( RFs& aFs, 
-                                           RWidgetRegistryClientSession& aWidgetRegistry, 
-                                           const TUid& aUid, 
-                                           TDriveUnit& aLocationDrive )
+void IAUpdateUtils::InstalledDriveWidgetL( TDriveUnit& aLocationDrive )
     {
     IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() begin");
-    aLocationDrive = EDriveC;
     
-    //HLa: Widget registry remove
     
-    /*
-    TFileName widgetPath;
-    aWidgetRegistry.GetWidgetPath( aUid, widgetPath );
-    aLocationDrive = widgetPath.Mid( 0, 2 );
-    IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Drive in registry: %S", &aLocationDrive.Name() );
+    // Check drive
     if ( aLocationDrive == EDriveZ )
-        {
-        // if the installation is in ROM, then install to C drive
-        aLocationDrive = EDriveC;
-        IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Exists in ROM, install to C:");
-        }
+       {
+       // if the installation is in ROM, then install to C drive
+       aLocationDrive = EDriveC;
+       IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Exists in ROM, install to C:");
+       }
     else
-        {
-        TUint driveStatus = 0;
-        User::LeaveIfError( DriveInfo::GetDriveStatus( aFs, aLocationDrive, driveStatus ) );
-        // if the installation drive physically removable and it's not available, then install to C drive
-        if ( ( driveStatus & DriveInfo::EDriveRemovable ) && ( !(driveStatus & DriveInfo::EDrivePresent) ) )
-            {
-            aLocationDrive = EDriveC;
-            IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Physically removable drive not present, install to C:");
-            }
-        }
-    */
+       {
+       RFs fs;
+       User::LeaveIfError( fs.Connect() );
+       CleanupClosePushL( fs );
+       TUint driveStatus = 0;
+       User::LeaveIfError( DriveInfo::GetDriveStatus( fs, aLocationDrive, driveStatus ) );
+       // if the installation drive physically removable and it's not available, then install to C drive
+       if ( ( driveStatus & DriveInfo::EDriveRemovable ) && ( !(driveStatus & DriveInfo::EDrivePresent) ) )
+           {
+           aLocationDrive = EDriveC;
+           IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() Physically removable drive not present, install to C:");
+           }
+       CleanupStack::PopAndDestroy( &fs );
+       }
     
     IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::InstalledDriveWidgetL() begin");
     }
@@ -794,45 +820,50 @@
     IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() begin");
     IAUPDATE_TRACE_1("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() identifier: %S", &aIdentifier );
     
-
     TDriveUnit targetDriveUnit( EDriveC );
     
-    //HLa: Widget registry remove
-    /*
-    RWidgetRegistryClientSession widgetRegistry;
-
-    User::LeaveIfError( widgetRegistry.Connect() );
-        
-    CleanupClosePushL( widgetRegistry );
-        
-    RPointerArray<CWidgetInfo> widgetInfoArr;
-    CleanupResetAndDestroyPushL( widgetInfoArr );
-    TInt err = widgetRegistry.InstalledWidgetsL(widgetInfoArr); 
+    // Connect to registry
+    Usif::RSoftwareComponentRegistry scrSession;  
+    CleanupClosePushL( scrSession );
+    User::LeaveIfError( scrSession.Connect());
+    
+    // Get widget component id by identifier
+    Usif::TComponentId compId = 0;
+    TRAPD( err, compId = 
+           scrSession.GetComponentIdL( aIdentifier, Usif::KSoftwareTypeWidget ));
     
-    TBool foundInRegistry( EFalse );
-    for( TInt i( widgetInfoArr.Count() - 1 ); !foundInRegistry && i >= 0; --i ) 
+     if ( err == KErrNotFound )
+        {
+        targetDriveUnit = EDriveC ;
+        }
+     else if  (err != KErrNone )
+        {
+        User::Leave( err );
+        }
+     else
         {
-        CWidgetInfo* widgetInfo( widgetInfoArr[i] );  
-            
-        CWidgetPropertyValue* BundleId = widgetRegistry.GetWidgetPropertyValueL(widgetInfo->iUid, EBundleIdentifier );
-        CleanupStack::PushL( BundleId );
-            
-        if( aIdentifier.Compare( *(BundleId->iValue.s) )== 0 )
+        // Get entry 
+        Usif::CComponentEntry* entry = Usif::CComponentEntry::NewLC();
+        TBool retVal = scrSession.GetComponentL(compId, *entry);
+        
+        // Get drive
+        TDriveList installedDrives = entry->InstalledDrives();
+        for ( TInt index(0); index < KMaxDrives; index++ )
             {
-            IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() Found in registry");
-            foundInRegistry = ETrue;
-            RFs fs;
-            User::LeaveIfError( fs.Connect() );
-            CleanupClosePushL( fs );
-            InstalledDriveWidgetL( fs, widgetRegistry, widgetInfo->iUid, targetDriveUnit );
-            CleanupStack::PopAndDestroy( &fs );
-            }
-        CleanupStack::PopAndDestroy( BundleId );
+            if ( installedDrives[index] )
+                {
+                targetDriveUnit = index;
+                }
+             }
+        
+        // Check drive validity
+        InstalledDriveWidgetL( targetDriveUnit );
+        
+        CleanupStack::PopAndDestroy(entry);
         }
-        
-    CleanupStack::PopAndDestroy( &widgetInfoArr );
-    CleanupStack::PopAndDestroy( &widgetRegistry);
-    */
+    
+    CleanupStack::PopAndDestroy( &scrSession ); 
+    
     IAUPDATE_TRACE("[IAUPDATE] IAUpdateUtils::DriveToInstallWidgetL() end");
 
     return targetDriveUnit;
--- a/iaupdate/IAD/engine/inc/iaupdateutils.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/engine/inc/iaupdateutils.h	Fri Sep 03 17:01:40 2010 +0300
@@ -24,7 +24,6 @@
 #include <driveinfo.h>
 
 // For silent installation
-#include <SWInstDefs.h>
 #include <usif/sif/sif.h>
 #include <swi/sisregistryentry.h>
 
@@ -120,22 +119,15 @@
  **/
 IMPORT_C TBool IsInstalledL( const TUid& aPUid, const TDesC& aExecutable );  
 
-/**
- * Creates options for silent install.
- * Uses DriveToInstallL to etermine target drive to install.
- * 
- * @param aNode
- */
-SwiUI::TInstallOptions SilentInstallOptionsL( const CIAUpdateBaseNode& aNode );
-                                                     
 
 /**
  * Creates options for silent install.
- * Uses DriveToInstallL to etermine target drive to install.
+ * Uses DriveToInstallL to determine target drive to install.
  * 
  * @param aOptions  Silent install options
  */
-void  UsifSilentInstallOptionsL( Usif::COpaqueNamedParams * aOptions );
+void  UsifSilentInstallOptionsL( 
+        const CIAUpdateBaseNode& aNode,Usif::COpaqueNamedParams * aOptions );
 
 /**
  * Finds drive where a package is currently installed
@@ -145,10 +137,7 @@
  **/
 TBool InstalledDriveL( RFs& aFs, const TUid& aUid, TDriveUnit& aLocationDrive );
 
-void InstalledDriveWidgetL( RFs& aFs, 
-                            RWidgetRegistryClientSession& aWidgetRegistry, 
-                            const TUid& aUid, 
-                            TDriveUnit& aLocationDrive );
+void InstalledDriveWidgetL( TDriveUnit& aLocationDrive );
 
 TBool NextInternalDriveL( RFs& aFs, 
                           TDriveUnit aCurrentDrive, 
--- a/iaupdate/IAD/ui/inc/iaupdateuids.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/ui/inc/iaupdateuids.h	Fri Sep 03 17:01:40 2010 +0300
@@ -31,4 +31,11 @@
  */
 #define KIAUpdateFamilyUid KIAUpdateUiUid
 
+/**
+ * Id:s  for informing background checker about main list refresh
+ */
+#define KIAUpdateBgcUid1 0x200211f4    // Bg checker UID; P&S Category
+const TUid KPSUidBgc = { KIAUpdateBgcUid1 };
+const TUint32 KIAUpdateBGNotifyIndicatorRemove = 0x00000003; // P&S Category
+
 #endif // IA_UPDATE_UIDS_H
--- a/iaupdate/IAD/ui/src/iaupdateengine.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/ui/src/iaupdateengine.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -576,6 +576,11 @@
     else
         {
         emit refresh(iController->Nodes(), iController->FwNodes(), aError);
+        
+        // inform bgchecker to clear indicator menu
+        User::LeaveIfError( 
+                RProperty::Set(KPSUidBgc, KIAUpdateBGNotifyIndicatorRemove, 0) );
+        
         //if ( aWithViewActivation)
         //  {
         //  ActivateLocalViewL( TUid::Uid( EIAUpdateMainViewId ) );
--- a/iaupdate/IAD/ui/src/iaupdatesettingdialog.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/ui/src/iaupdatesettingdialog.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -306,6 +306,8 @@
     
     aItemName = XQConversions::s60DescToQString( temp->Des() );
 
+    delete temp;
+    
     if ( aItemName.size() == 0 ) 
         {
         User::Leave(KErrNotFound);
@@ -319,40 +321,49 @@
 void CIAUpdateSettingDialog::initializeView()
     {
     
-    setTitle("Software update"); // txt_software_title_software_update
-    mSettingsForm->setHeading("Settings"); // txt_software_subhead_settings
+    setTitle("Software update"); 
+    //setTitle(hbTrId("txt_software_title_software_update")); 
+    
+    mSettingsForm->setHeading("Settings"); 
+    //mSettingsForm->setHeading(hbTrId("txt_software_subhead_settings"));
+    
+    //create a model class
+    HbDataFormModel *mModel = new HbDataFormModel();
 
-     //create a model class
-     HbDataFormModel *mModel = new HbDataFormModel();
-
-     // add Destination item
-     mDestinationItem = mModel->appendDataFormItem(
-         HbDataFormModelItem::ToggleValueItem, QString("Network connection")); // txt_software_formlabel_access_point
+    // add Destination item
+    mDestinationItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::ToggleValueItem, QString("Network connection"));
+        //HbDataFormModelItem::ToggleValueItem, hbTrId("txt_software_formlabel_network_connection"));
 
-     // add auto update item
-     mAutoUpdateItem = mModel->appendDataFormItem(
-        HbDataFormModelItem::ComboBoxItem, QString("Auto-check for updates")); // txt_software_setlabel_autocheck_for_updates
-     
-     // auto update selection values
-     QStringList list;
-     list.insert(0, QString("On")); // txt_software_setlabel_val_on
-     list.append(QString("Off")); // txt_software_setlabel_val_off
-     list.append(QString("On in home network")); // txt_software_setlabel_val_on_in_home_network
-     mAutoUpdateItem->setContentWidgetData("items", list);
+    // add auto update item
+    mAutoUpdateItem = mModel->appendDataFormItem(
+       HbDataFormModelItem::ComboBoxItem, QString("Auto-check for updates"));
+       //HbDataFormModelItem::ComboBoxItem, hbTrId("txt_software_setlabel_autocheck_for_updates"));
+    
+    // auto update selection values
+    QStringList list;
+    list.insert(0, QString("On"));
+    //list.insert(0, hbTrId("txt_software_setlabel_val_on"));
+    list.append(QString("Off")); 
+    //list.append(hbTrId("txt_software_setlabel_val_off"));
+    list.append(QString("On in home network"));
+    //list.append(hbTrId("txt_software_setlabel_val_on_in_home_network"));
+    
+    mAutoUpdateItem->setContentWidgetData("items", list);
 
      // connect data changes for launching the access point selection dialog
-     connect(mModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), 
-                 this, SLOT(toggleChange(QModelIndex, QModelIndex)));
+    connect(mModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), 
+                this, SLOT(toggleChange(QModelIndex, QModelIndex)));
 
-     // connect to function called when data items are displayed
-     connect(mSettingsForm, SIGNAL(activated(QModelIndex)), 
-                      this, SLOT(activated(QModelIndex)));
-     
-     mSettingsForm->setModel(mModel);
-         
-     // set values for items
-     TRAPD(err, initializeFieldsL());
-     qt_symbian_throwIfError(err);
+    // connect to function called when data items are displayed
+    connect(mSettingsForm, SIGNAL(activated(QModelIndex)), 
+                this, SLOT(activated(QModelIndex)));
+    
+    mSettingsForm->setModel(mModel);
+    
+    // set values for items
+    TRAPD(err, initializeFieldsL());
+    qt_symbian_throwIfError(err);
 }
 
 // -----------------------------------------------------------------------------
--- a/iaupdate/IAD/ui/src/iaupdateuicontroller.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/ui/src/iaupdateuicontroller.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -20,7 +20,6 @@
 
 // INCLUDES
 #include <centralrepository.h>
-#include <SWInstDefs.h>
 #include <featurecontrol.h>
 #include <cmmanager.h>
 #include <qapplication.h>
@@ -1452,7 +1451,7 @@
     iState = EIdle;
     //CIAUpdateAppUi* appUi = static_cast<CIAUpdateAppUi*>( iEikEnv->EikAppUi() );
     //appUi->StopWGListChangeMonitoring();
-    if ( aError == SwiUI::KSWInstErrFileInUse )
+    if ( aError == KErrInUse )
         {
     	iFileInUseError = ETrue;
         }
--- a/iaupdate/IAD/updater/inc/iaupdaterinstaller.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/updater/inc/iaupdaterinstaller.h	Fri Sep 03 17:01:40 2010 +0300
@@ -23,6 +23,8 @@
 #include <e32base.h>
 #include <f32file.h>
 
+#include <usif/sif/sif.h>
+
 class CIAUpdaterMngr;
 class CIAUpdaterSilentLauncher;
         
@@ -194,7 +196,10 @@
 
     // CActiveSchedulerWait object can be used as a data member 
     // inside other CBase derived classes.
-    CActiveSchedulerWait iWaiter;    
+    CActiveSchedulerWait iWaiter;   
+    
+    // Installaion results
+    Usif::COpaqueNamedParams* iResults;
 
     };		
 
--- a/iaupdate/IAD/updater/inc/iaupdatersilentlauncher.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/updater/inc/iaupdatersilentlauncher.h	Fri Sep 03 17:01:40 2010 +0300
@@ -22,7 +22,6 @@
 
 #include <e32base.h>
 #include <f32file.h>
-#include <SWInstApi.h>
 
 #include <usif/sif/sif.h>
 
@@ -53,9 +52,11 @@
      * @since 
      * @param aFile Name of the file to install
      * @param aStatus Request status
+     * @param aResults Installation results 
      */
-    void InstallL( const TDesC& aFile, TRequestStatus& aStatus );
-
+    void CIAUpdaterSilentLauncher::InstallL ( const TDesC& aFile, 
+            TRequestStatus& aStatus, Usif::COpaqueNamedParams* aResults  );
+    
     /**
      * Cancel the current installation.
      *
@@ -85,7 +86,6 @@
     
     Usif::RSoftwareInstall iLauncher;
     Usif::COpaqueNamedParams* iOptionsPckg; 
-    Usif::COpaqueNamedParams* iResults;
 
     RFs& iFs;        
     
--- a/iaupdate/IAD/updater/src/iaupdaterinstaller.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/updater/src/iaupdaterinstaller.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -16,13 +16,14 @@
 */
 
 
-
 #include "iaupdaterinstaller.h"
 #include "iaupdatermngr.h"
 #include "iaupdatersilentlauncher.h"
 #include "iaupdaterdefs.h"
 #include "iaupdatedebug.h"
 
+#include <usif/usiferror.h>
+
 
 // ======== LOCAL FUNCTIONS =========
 
@@ -81,6 +82,8 @@
             
     iFilesToInstall.ResetAndDestroy();
     delete iInstallLauncher;
+    
+    delete iResults;
 
     IAUPDATE_TRACE("[IAUpdater] CIAUpdaterInstaller::~CIAUpdaterInstaller end");
     }
@@ -95,6 +98,7 @@
     {
     IAUPDATE_TRACE("[IAUpdater] CIAUpdaterInstaller::ConstructL begin");       
     User::LeaveIfError( iTimer.CreateLocal() );
+    iResults = Usif::COpaqueNamedParams::NewL();
     IAUPDATE_TRACE("[IAUpdater] CIAUpdaterInstaller::ConstructL end");
     }
 
@@ -247,8 +251,12 @@
         case EDSisInstallerStateInstalling:
             { 
             IAUPDATE_TRACE("[IAUpdater] RunL() Sis Inst. state INSTALLING");                    
-                                                                                     
-            if ( iStatus.Int() == SwiUI::KSWInstErrBusy )
+            
+            // Get error category
+            TInt errCategory = iResults->GetIntByNameL
+                    (Usif::KSifOutParam_ErrCategory, errCategory);
+            
+            if ( errCategory == Usif::EInstallerBusy )
                 {
                 IAUPDATE_TRACE("[IAUpdater] RunL() SWInstaller Busy"); 
                 
@@ -260,10 +268,10 @@
                 SetActive();                        
                 break;                        
                 }                
-            else if ( (iStatus.Int() == SwiUI::KSWInstErrSecurityFailure && 
+            else if ( (errCategory == Usif::ESecurityError && 
                 iInstallErr == KErrNone) ||
                 (iStatus.Int() != KErrNone && 
-                iStatus.Int() != SwiUI::KSWInstErrSecurityFailure) )
+                 iStatus.Int() != errCategory == Usif::ESecurityError) )
                 {
                 IAUPDATE_TRACE("[IAUpdater] RunL() Ins. err or sec. failure"); 
                 
@@ -296,7 +304,7 @@
                 ++iFileIndex;
 
                 IAUPDATE_TRACE_1("[IAUpdater] RunL() Start install %S", &iSisFile ); 
-                iInstallLauncher->InstallL( iSisFile, iStatus );                
+                iInstallLauncher->InstallL( iSisFile, iStatus, iResults );                
                 iState = EDSisInstallerStateInstalling;                    
                 SetActive();
                 }
@@ -312,7 +320,7 @@
             IAUPDATE_TRACE("[IAUpdater] RunL() Sis Inst. state INSTALLER BUSY");  
             IAUPDATE_TRACE_1("[IAUpdater] RunL() Start install for %S", &iSisFile ); 
                         
-            iInstallLauncher->InstallL( iSisFile, iStatus );
+            iInstallLauncher->InstallL( iSisFile, iStatus, iResults );
             iState = EDSisInstallerStateInstalling;
 
             SetActive();                 
--- a/iaupdate/IAD/updater/src/iaupdatersilentlauncher.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/IAD/updater/src/iaupdatersilentlauncher.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -18,7 +18,6 @@
 
 
 #include "iaupdatersilentlauncher.h"
-#include "SWInstDefs.h"
 #include "iaupdaterdefs.h"
 #include "iaupdatedebug.h"
 
@@ -45,7 +44,6 @@
     {
     
     iOptionsPckg = Usif::COpaqueNamedParams::NewL();
-    iResults = Usif::COpaqueNamedParams::NewL();
     
     UsifSilentInstallOptionsL( iOptionsPckg );    
 
@@ -75,7 +73,6 @@
     iLauncher.Close();
     
     delete iOptionsPckg;
-    delete iResults;
     
     }
 
@@ -84,7 +81,8 @@
 // Perform installation.
 // -----------------------------------------------------------------------------
 //
-void CIAUpdaterSilentLauncher::InstallL( const TDesC& aFile, TRequestStatus& aStatus )
+void CIAUpdaterSilentLauncher::InstallL ( const TDesC& aFile, 
+        TRequestStatus& aStatus, Usif::COpaqueNamedParams* aResults  )
     {
     IAUPDATE_TRACE("[IAUpdater] CIAUpdaterSilentLauncher::InstallL() begin"); 
         
@@ -97,7 +95,7 @@
 
     // Launch the installation   
     IAUPDATE_TRACE("[IAUpdater] Launch silent install");                    
-    iLauncher.Install( aFile, *iOptionsPckg, *iResults, aStatus );
+    iLauncher.Install( aFile, *iOptionsPckg, *aResults, aStatus );
 
     IAUPDATE_TRACE("[IAUpdater] CIAUpdaterSilentLauncher::InstallL() end"); 
     }
@@ -162,13 +160,18 @@
     aOptions->AddIntL( Usif::KSifInParam_AllowDownload, Usif::EAllowed  );
     
     // Where to save.
-    //aOptions->AddIntL( Usif::KSifInParam_Drive, EDriveC );
+    // Notice! Here we use always the same drive for the IAD.
+    // So, this will not change automatically according to the disk spaces 
+    // and when new memory cards are inserted into the phone. 
+    // TODO: remove comment when parameter buffer increased in USIF
+    TDriveUnit driveUnit(IAUpdaterDefs::KIAUpdaterDrive);
+    //aOptions->AddIntL( Usif::KSifInParam_Drive, driveUnit );
     
     // Choose the phone language.
+    // TODO: remove comment when parameter buffer increased in USIF
     TLanguage lang = User::Language();
-    //aOptions->AddIntL( Usif::KSifInParam_Languages, lang ); // User::Language() );
+    //aOptions->AddIntL( Usif::KSifInParam_Languages, lang ); 
     
-    //aOptions->AddIntL( Usif::KSifInParam_Drive, IAUpdateUtils::DriveToInstallL( aUid, aSize ) );
     }
 
 
--- a/iaupdate/rom/iaupdate.iby	Fri Aug 20 11:39:56 2010 +0300
+++ b/iaupdate/rom/iaupdate.iby	Fri Sep 03 17:01:40 2010 +0300
@@ -37,7 +37,12 @@
 file=ABI_DIR\BUILD_DIR\iaupdatebg.exe            SHARED_LIB_DIR\iaupdatebg.exe 
 file=ABI_DIR\BUILD_DIR\iaupdatefwupdate.dll      SHARED_LIB_DIR\iaupdatefwupdate.dll
 
+#ifdef _IMAGE_TYPE_RND
+data=ZPRIVATE\2000F85A\iaupdateengineconfig_testing.xml  PRIVATE\2000F85A\iaupdateengineconfig.xml
+#else
 data=ZPRIVATE\2000F85A\iaupdateengineconfig.xml  PRIVATE\2000F85A\iaupdateengineconfig.xml
+#endif //_IMAGE_TYPE_RND
+
 data=ZPRIVATE\2000F85A\backup_registration.xml   PRIVATE\2000F85A\backup_registration.xml
 
 data=ZSYSTEM\install\iaupdate_stub.sis           system\install\iaupdate_stub.sis
--- a/installationservices/swcomponentregistry/group/bld.inf	Fri Aug 20 11:39:56 2010 +0300
+++ b/installationservices/swcomponentregistry/group/bld.inf	Fri Sep 03 17:01:40 2010 +0300
@@ -21,7 +21,7 @@
  @file
 */
 
-#include "../sqlite_secure/GROUP/BLD.INF"
+#include "../sqlite_secure/group/bld.inf"
 
 PRJ_PLATFORMS
 DEFAULT
--- a/ncdengine/engine/engine.pro	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/engine.pro	Fri Sep 03 17:01:40 2010 +0300
@@ -54,7 +54,7 @@
 	INCLUDEPATH += /epoc32/include/platform/mw/cwrt
 	INCLUDEPATH += /epoc32/include/ecom
 
-	LIBS += -lcommonui -lWrtDownloadMgr -lapmime -lcmmanager -lecom -lapengine -lmsgs -lsmcm -lgsmu -linetprotutil 
+	LIBS += -lWrtDownloadMgr -lapmime -lcmmanager -lecom -lapengine -lmsgs -lsmcm -lgsmu -linetprotutil 
 	LIBS += -lhttpfiltercommon -lecom -lhttp -lesock -lcommdb -lsysutil -lhash -lestlib -lestor -lbafl -lplatformenv
 	LIBS += -lXmlEngineUtils  -lXmlEngineDOM -lXmlEngine -lXmlInterface -lxmlframework  -lcharconv -ledbms -lefsrv
   LIBS += -lncdutils_20019119 -lncddevicemgmt_20019119
--- a/ncdengine/engine/group/bld.inf	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/group/bld.inf	Fri Sep 03 17:01:40 2010 +0300
@@ -17,7 +17,7 @@
 
 
 PRJ_MMPFILES
-catalogsdebug.mmp
+//catalogsdebug.mmp
 ncdutils.mmp
 ncddevicemgmt.mmp
 //catalogsserver.mmp
--- a/ncdengine/engine/group/catalogsserver.mmp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/group/catalogsserver.mmp	Fri Sep 03 17:01:40 2010 +0300
@@ -445,7 +445,6 @@
 #endif
 
 LIBRARY         apmime.lib // TDataType
-LIBRARY         commonui.lib // CDocumentHandler
 
 START WINS
 //DEFFILE ../BWINS/catalogsserverwins.def
--- a/ncdengine/engine/group/ncddevicemgmt.mmp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/group/ncddevicemgmt.mmp	Fri Sep 03 17:01:40 2010 +0300
@@ -78,12 +78,10 @@
 LIBRARY         sisregistryclient.lib   // SIS Registry
 LIBRARY         cone.lib
 LIBRARY         apmime.lib
-LIBRARY         commonui.lib
 LIBRARY         centralrepository.lib
 LIBRARY         webutils.lib            // CUserAgent
 LIBRARY         sysutil.lib
 LIBRARY         apparc.lib
-LIBRARY         avkon.lib
 LIBRARY         etel3rdparty.lib 
 LIBRARY         apgrfx.lib
 
--- a/ncdengine/engine/src/catalogsdebug.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/src/catalogsdebug.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -332,22 +332,26 @@
     VA_LIST list;
     VA_START( list, aFmt );
 
+    HBufC8* buffer = NULL;
+    HBufC* buffer16 = NULL;
+    HBufC8* buffer16to8  = NULL;
+
     if( iOutput & EOutputExtLogger )
         if( !DebugHeap()->IsEnabled( iType ) ) return;
 
     // Disable debug heap (if installed) to prevent infinite recursion.
     TBool debugHeapActive = RCatalogsDebugHeap::Activate( EFalse );
 
-    HBufC8* buffer = HBufC8::New( KCatalogsDebugBufferSize );
+    buffer = HBufC8::New( KCatalogsDebugBufferSize );
     if ( buffer == NULL ) goto exit1;
 
     PrintGeneral( buffer->Des() );
     
-    HBufC* buffer16 = HBufC::New( KCatalogsDebugBufferSize );
+    buffer16 = HBufC::New( KCatalogsDebugBufferSize );
     if ( buffer16 == NULL ) goto exit2;
     buffer16->Des().AppendFormatList( aFmt, list );
 
-    HBufC8* buffer16to8 = HBufC8::New( buffer16->Length() );
+    buffer16to8 = HBufC8::New( buffer16->Length() );
     if ( buffer16to8 == NULL ) goto exit3;
     buffer16to8->Des().Copy( *buffer16 );
 
--- a/ncdengine/engine/transport/inc/catalogshttpdownload.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/inc/catalogshttpdownload.h	Fri Sep 03 17:01:40 2010 +0300
@@ -481,7 +481,7 @@
     TBool ContainsData( const HBufC* aDes ) const;
     
     /**
-     * Gets the correct extension for iTempFilename by using dochandler
+     * Gets the correct extension for iTempFilename 
      * and ContentType() and sets it to iConfig
      */
     void UpdateExtensionL();
--- a/ncdengine/engine/transport/inc/catalogshttpdownloadmanagerimpl.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/inc/catalogshttpdownloadmanagerimpl.h	Fri Sep 03 17:01:40 2010 +0300
@@ -209,8 +209,6 @@
     
 
         CCatalogsHttpConnectionManager& ConnectionManager();
-                
-        CDocumentHandler& DocumentHandler();
         
         TInt NewDownloadId();
         
--- a/ncdengine/engine/transport/inc/catalogshttpsessionmanager.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/inc/catalogshttpsessionmanager.h	Fri Sep 03 17:01:40 2010 +0300
@@ -27,7 +27,6 @@
 class MCatalogsHttpObserver;
 class CCatalogsHttpConnectionCreator;
 class CCatalogsHttpConnectionManager;
-class CDocumentHandler;
 
 class MCatalogsHttpSessionManager
     {
@@ -69,12 +68,6 @@
         virtual void SetResumeMode( TBool aResumeQueued ) = 0;
         
         /**
-         * Document handler getter
-         * @return Document handler instance
-         */
-        virtual CDocumentHandler& DocumentHandler() = 0;
-        
-        /**
          * Disconnects network connection if it is not used by any
          * client anymore
          * 
--- a/ncdengine/engine/transport/inc/catalogshttpsessionmanagerimpl.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/inc/catalogshttpsessionmanagerimpl.h	Fri Sep 03 17:01:40 2010 +0300
@@ -25,7 +25,6 @@
 #include "catalogsconnection.h"
 
 class CCatalogsNetworkManager;
-class CDocumentHandler;
 
 class CCatalogsHttpSessionManager : public CActive,
     public MCatalogsHttpSessionManager,
@@ -60,9 +59,7 @@
         /**
         * NewL
         */
-        static CCatalogsHttpSessionManager* NewL( 
-            CDocumentHandler& aDocHandler );
-        
+        static CCatalogsHttpSessionManager* NewL( );
         
         /**  
         * Destructor
@@ -113,9 +110,6 @@
 
         static CCatalogsNetworkManager& NetworkManagerL();
         
-        
-        CDocumentHandler& DocumentHandler();
-        
         TBool DisconnectL();
         
     public:
@@ -165,8 +159,7 @@
         /**
         * Constructor
         */
-        CCatalogsHttpSessionManager( CDocumentHandler& aDocHandler );
-        
+        CCatalogsHttpSessionManager();
         void ConstructL();
         
     private:
@@ -237,7 +230,6 @@
         // APN
         TBool iSwitchApTimer;
         
-        CDocumentHandler& iDocHandler; // not owned
         TCatalogsConnectionMethod iLatestConnectionMethod;
     };
     
--- a/ncdengine/engine/transport/inc/catalogshttpstack.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/inc/catalogshttpstack.h	Fri Sep 03 17:01:40 2010 +0300
@@ -29,7 +29,7 @@
 
 
 // Constants
-const TInt KRequestTimeoutMicroseconds( 180000000 );
+const TInt KRequestTimeoutMicroseconds( 60000000 );
 
 // Forward declarations
 class RHTTPSession;
--- a/ncdengine/engine/transport/inc/catalogstransportimpl.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/inc/catalogstransportimpl.h	Fri Sep 03 17:01:40 2010 +0300
@@ -24,7 +24,6 @@
 
 class MCatalogsTransportSession;
 class CCatalogsHttpSessionManager;
-class CDocumentHandler;
 
 /**
 * Catalogs Transport implementation
@@ -36,11 +35,9 @@
 	    /**
 	    * Creator
 	    *
-	    * @param aDocHandler Document handler
 	    * @return A new CCatalogsTransport-object
 	    */
-	    static CCatalogsTransport* NewL( CDocumentHandler& aDocHandler );
-	    
+        static CCatalogsTransport* NewL();
 	    
 	    /**
 	    * Destructor
@@ -85,7 +82,7 @@
         /** 
         * 2nd phase constructor
         */
-        void ConstructL( CDocumentHandler& aDocHandler );
+	    void ConstructL();
 	    
 	private:
 	
--- a/ncdengine/engine/transport/src/catalogshttpdownload.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/src/catalogshttpdownload.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -20,7 +20,6 @@
 
 #include <bautils.h>
 #include <e32err.h>
-#include <DocumentHandler.h>
 #include <apmstd.h> // TDataType
 #include <escapeutils.h>
 #include <downloadmanager.h>
@@ -878,8 +877,11 @@
 		        {
 		        errorId = WRT::ConnectionFailed;
 		        }
+		    else
+		        {
+		        errorId = iDownload->attribute(LastError).toInt();
+		        }
             SetTransferring( EFalse );
-            errorId = iDownload->attribute(LastError).toInt();
             if ( errorId > 0 )
                 {
                 // Symbian error codes are always negative numbers 
@@ -2447,8 +2449,8 @@
             CleanupStack::PopAndDestroy( &cmManager ); 
             if ( iOwner.GetDownloadManager() )
                 {
-                iOwner.GetDownloadManager()->attribute(AccessPoints).toStringList();
-                iOwner.GetDownloadManager()->setAttribute(AccessPoint, destname);
+                //iOwner.GetDownloadManager()->attribute(AccessPoints).toStringList();
+                //iOwner.GetDownloadManager()->setAttribute(AccessPoint, destname);
                 }
             }
             
@@ -2558,7 +2560,7 @@
     
     if ( !iConfig->Filename().Length() ) 
         {    
-        // Update filename extension by using dochandler
+        // Update filename extension 
         if ( iConfig->Options() & ECatalogsHttpDisableHeadRequest )
             {
             UpdateExtensionL();    
@@ -2623,7 +2625,7 @@
 
 
 // ---------------------------------------------------------------------------
-// Updates file extension by using dochandler
+// Updates file extension 
 // ---------------------------------------------------------------------------
 //  
 void CCatalogsHttpDownload::UpdateExtensionL()
@@ -2644,7 +2646,9 @@
             ReplaceExtension( filename, KWidgetExtension );
             }
     else
-       iOwner.DocumentHandler().CheckFileNameExtension( filename, type );
+        {
+        ReplaceExtension( filename, KNativeExtension );
+        }
     
     iConfig->SetFilenameL( filename );        
     }
--- a/ncdengine/engine/transport/src/catalogshttpdownloadmanagerimpl.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/src/catalogshttpdownloadmanagerimpl.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -817,17 +817,6 @@
     return iConnectionManager;
     }
 
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//            
-CDocumentHandler& CCatalogsHttpDownloadManager::DocumentHandler()
-    {
-    return iManager.DocumentHandler();
-    }
-
-
 // ---------------------------------------------------------------------------
 // Event handling
 // ---------------------------------------------------------------------------
--- a/ncdengine/engine/transport/src/catalogshttpsessionmanagerimpl.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/src/catalogshttpsessionmanagerimpl.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -57,11 +57,10 @@
 // NewL
 // ---------------------------------------------------------------------------
 //	
-CCatalogsHttpSessionManager* CCatalogsHttpSessionManager::NewL(
-    CDocumentHandler& aDocHandler )
+CCatalogsHttpSessionManager* CCatalogsHttpSessionManager::NewL()
     {
     CCatalogsHttpSessionManager* self = new( ELeave ) 
-        CCatalogsHttpSessionManager( aDocHandler );
+        CCatalogsHttpSessionManager();
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
@@ -328,16 +327,6 @@
     return *iNetworkManager;
     }
 
-
-// ---------------------------------------------------------------------------
-// 
-// ---------------------------------------------------------------------------
-//  
-CDocumentHandler& CCatalogsHttpSessionManager::DocumentHandler()
-    {
-    return iDocHandler;
-    }
-
 // ---------------------------------------------------------------------------
 // 
 // ---------------------------------------------------------------------------
@@ -411,17 +400,14 @@
 // CCatalogsHttpSessionManager
 // ---------------------------------------------------------------------------
 //	
-CCatalogsHttpSessionManager::CCatalogsHttpSessionManager(
-    CDocumentHandler& aDocHandler ) : 
+CCatalogsHttpSessionManager::CCatalogsHttpSessionManager() : 
     CActive( CActive::EPriorityStandard ),
     iRefCount( 1 ),
-    iResumeQueued( ETrue ),
-    iDocHandler( aDocHandler )
+    iResumeQueued( ETrue )
     {
     CActiveScheduler::Add( this );
     }
 
-
 // ---------------------------------------------------------------------------
 // ResumeOperation
 // ---------------------------------------------------------------------------
--- a/ncdengine/engine/transport/src/catalogstransportimpl.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/engine/transport/src/catalogstransportimpl.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -32,16 +32,14 @@
 // NewL
 // ---------------------------------------------------------------------------
 //
-CCatalogsTransport* CCatalogsTransport::NewL( CDocumentHandler& aDocHandler )
+CCatalogsTransport* CCatalogsTransport::NewL()
     {
     CCatalogsTransport* self = new( ELeave ) CCatalogsTransport();
     CleanupStack::PushL( self );
-    self->ConstructL( aDocHandler );
+    self->ConstructL();
     CleanupStack::Pop( self );
     return self;    
     }
-
-
 // ---------------------------------------------------------------------------
 // Destructor
 // ---------------------------------------------------------------------------
@@ -244,10 +242,10 @@
 // ---------------------------------------------------------------------------
 // 2nd phase constructor
 // ---------------------------------------------------------------------------
-//			
-void CCatalogsTransport::ConstructL( CDocumentHandler& aDocHandler )
+//	
+void CCatalogsTransport::ConstructL()
     {
     DLTRACEIN( ( "" ) );
-    iHttpSessionManager = CCatalogsHttpSessionManager::NewL( aDocHandler );
+    iHttpSessionManager = CCatalogsHttpSessionManager::NewL();
     DLTRACEOUT( ( "" ) );
     }
--- a/ncdengine/inc/catalogsconstants.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/inc/catalogsconstants.h	Fri Sep 03 17:01:40 2010 +0300
@@ -161,6 +161,9 @@
 // File extension for widget
 _LIT( KWidgetExtension, ".wgz" );
 
+// File extension for native packages
+_LIT( KNativeExtension, ".sis" );
+
 // Default widget version number
 _LIT( KDefVersion, "000" );
 
--- a/ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h	Fri Sep 03 17:01:40 2010 +0300
@@ -19,10 +19,6 @@
 #ifndef M_NCD_INSTALLATION_SERVICE_H
 #define M_NCD_INSTALLATION_SERVICE_H
 
-// SwiUI namespace contains install options 
-// and install options package definitions
-// that are used for the silent install.
-//#include <SWInstDefs.h>
 #include <usif/sif/sifcommon.h>
 
 #include "ncditempurpose.h"
@@ -32,8 +28,6 @@
 class TDataType;
 class RFile;
 class RFs;
-class CDocumentHandler;
-
 
 /**
  * Theme SIS UID
@@ -270,12 +264,6 @@
      */
     virtual HBufC* RecognizeDataL( const TDesC& aFileName ) = 0;
 
-    
-    /**
-     * Document handler getter
-     * @return Document handler instance
-     */
-    virtual CDocumentHandler& DocumentHandler() = 0;
     };
 
 #endif // M_NCD_INSTALLATION_SERVICE_H
--- a/ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h	Fri Sep 03 17:01:40 2010 +0300
@@ -20,7 +20,6 @@
 #define C_NCD_INSTALLATION_SERVICE_IMPL_H
 
 #include <e32base.h>
-#include <AknServerApp.h>
 #include <AknsSrvClient.h>
 #include <swi/sisregistrysession.h>
 #include <swi/sisregistryentry.h>
@@ -36,8 +35,6 @@
 
 #include "ncdwidgetregistrydata.h"
 
-class CDocumentHandler;
-
 class MNcdInstallationServiceObserver;
 class TCatalogsVersion;
 class CNcdActiveOperationObserver;
@@ -49,7 +46,6 @@
  */
 class CNcdInstallationService : public CBase,
                                 public MNcdInstallationService,
-                                public MAknServerAppExitObserver,
                                 public MNcdAsyncOperationObserver,
                                 public MNcdAsyncSilentInstallObserver
     {
@@ -219,12 +215,7 @@
      * @see MNcdInstallationService::WriteJadL()
      */
     HBufC* WriteJadL( const TDesC& aJarFileName, const TDesC8& aJad  );
-
-    
-    /**
-     * @see MNcdInstallationService::DocumentHandler()
-     */
-    CDocumentHandler& DocumentHandler();
+   
     
 public: // From MNcdAsyncOperationObserver
 
@@ -403,7 +394,6 @@
 private: // Data
 
     TBool iBusy;
-    CDocumentHandler* iDocHandler;
     MNcdInstallationServiceObserver* iObserver;
     // Registry session 
     Swi::RSisRegistrySession iRegistrySession;
@@ -446,7 +436,6 @@
     
     CNcdActiveOperationObserver* iInstallStatusObserver;
 
-    //SwiUI::RSWInstLauncher iInstaller;
     Usif::RSoftwareInstall iInstaller;
     Usif::COpaqueNamedParams* iArguments; 
     Usif::COpaqueNamedParams* iResults;
--- a/ncdengine/provider/deviceinteraction/inc/ncdsilentinstallactiveobserver.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/deviceinteraction/inc/ncdsilentinstallactiveobserver.h	Fri Sep 03 17:01:40 2010 +0300
@@ -145,7 +145,7 @@
 
 
     /**
-     * @return SwiUI::RSWInstSilentLauncher& The launcher
+     * @return Usif::RSoftwareInstall& The launcher
      * that handles the installation operations that this
      * class object observes. Ownerhsip is not transferred.
      */
@@ -177,7 +177,6 @@
 
     // The silent launcher handles the install operations that
     // this class object observes. 
-    // SwiUI::RSWInstSilentLauncher iSilentLauncher;
     Usif::RSoftwareInstall iInstaller;
     Usif::COpaqueNamedParams* iResults;
     Usif::COpaqueNamedParams* iArguments;
--- a/ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -18,7 +18,6 @@
 
 #include "ncdinstallationserviceimpl.h"
 
-#include <DocumentHandler.h>
 #include <apmstd.h>
 #include <apmrec.h>
 #include <bautils.h>
@@ -100,7 +99,6 @@
     DLTRACEIN((""));
     delete iSilentInstallActiveObserver;
     iSilentInstallActiveObserver = NULL;
-    delete iDocHandler;
     iRegistrySession.Close();
     iFs.Close();
     iAknsSrv.Close();
@@ -147,9 +145,6 @@
     iResults = 0;
     iArguments = 0;
     
-    iDocHandler = CDocumentHandler::NewL();
-    iDocHandler->SetExitObserver( this );
-    
     User::LeaveIfError( iFs.Connect() );
     User::LeaveIfError( iFs.ShareProtected() );
     User::LeaveIfError( iRegistrySession.Connect() );
@@ -878,17 +873,6 @@
     return jadFileName;
     }
 
-
-// ---------------------------------------------------------------------------
-// Documenthandler getter
-// ---------------------------------------------------------------------------
-//
-CDocumentHandler& CNcdInstallationService::DocumentHandler()
-    {
-    return *iDocHandler;
-    }
-
-
 // ---------------------------------------------------------------------------
 // Callback function of MNcdAsyncOperationObserver interface
 // This is called when an async operation has finished.
@@ -1293,8 +1277,6 @@
     {
     DLTRACEIN(( _L("iBusy=%d, MIME: %S"),iBusy, &aMimeType ));    
     DASSERT( iObserver );
-    DASSERT( iDocHandler );
-
     
     // Check if some installation is already in progress.
     if ( iBusy )
@@ -1389,7 +1371,6 @@
             {
             DLINFO(("Normal install"));
             InitializeInstallerL();
-            //iCancelCode = SwiUI::ERequestInstallHandle;
             
             if ( !iArguments )
                 {
@@ -1403,7 +1384,7 @@
             iArguments->AddIntL( Usif::KSifInParam_InstallSilently, EFalse );
             
             iInstaller.Install( aFile, *iArguments, *iResults, iInstallStatusObserver->iStatus ); 
-            //iInstaller.Install( iInstallStatusObserver->iStatus, aFile );
+
             iInstallStatusObserver->StartToObserve();            
             }
         else
@@ -1424,55 +1405,12 @@
         DLINFO(("Installing content"));
         // File is some common format.
         iInstallType = EFileInstall;
-        TDataType dataType;
-    
-        if ( aMimeType != KNullDesC )
-            {
-            // If mime type is given, it will be used in document handler.
-            HBufC8* tempBuf = Des16ToDes8LC( aMimeType );
-            dataType = TDataType( *tempBuf );
-            CleanupStack::PopAndDestroy( tempBuf );
-            DLINFO(("DataType: %S", &dataType.Des8() ));
-            }
-                
-        TInt docHandlerError( KErrNone );
         
-        DLINFO(("Normal install"));
-        // Have to use CopyL since MoveL works only with filepaths
-        // We can't use SilentMoveL either
-        docHandlerError = 
-            iDocHandler->CopyL( aFile, 
-                                KNullDesC(),
-                                dataType, 
-                                KEntryAttNormal );            
+        // content not supported
+        iObserver->InstallationCompleteL( KNullDesC, KNullUid, KErrNotSupported );
+        
+        }
 
-        DLTRACE(("After move"));
-        if( docHandlerError != KErrNone )
-            {
-            DLINFO(("error=%d",docHandlerError));
-            
-            // Use KErrAbort for user cancellation
-            if ( docHandlerError == KUserCancel ) 
-                {
-                docHandlerError = KErrAbort;
-                }
-            iObserver->InstallationCompleteL( KNullDesC, KNullUid, docHandlerError );
-            }
-        else
-            { 
-            DLTRACE(("Installation successful"));
-            
-            RBuf installFileName;
-            CleanupClosePushL( installFileName );
-            
-            installFileName.CreateL( KMaxPath );
-                        
-            User::LeaveIfError( iDocHandler->GetPath( installFileName ) );
-            iObserver->InstallationCompleteL( installFileName, KNullUid, KErrNone );
-            CleanupStack::PopAndDestroy( &installFileName );            
-
-            }
-        }
     DLTRACEOUT((""));    
     }
 
@@ -1527,7 +1465,6 @@
             {
             DLTRACE(("Installing JAD+JAR"));
             // JAD+JAR install
-            //iCancelCode = SwiUI::ERequestInstall;
             if ( !iArguments )
                 {
                 iArguments = Usif::COpaqueNamedParams::NewL();
@@ -1540,13 +1477,11 @@
              iArguments->AddIntL( Usif::KSifInParam_InstallSilently, EFalse );
                         
             iInstaller.Install( *iJadFileName, *iArguments, *iResults, iInstallStatusObserver->iStatus ); 
-            //iInstaller.Install( iInstallStatusObserver->iStatus, *iJadFileName );
             }
         else
             {
             DLTRACE(("Installing JAR"));
             // JAR install
-            //iCancelCode = SwiUI::ERequestInstallHandle;
             if ( !iArguments )
                 {
                 iArguments = Usif::COpaqueNamedParams::NewL();
@@ -1560,7 +1495,6 @@
              
              iInstaller.Install( aFile, *iArguments, *iResults, iInstallStatusObserver->iStatus ); 
             
-            //iInstaller.Install( iInstallStatusObserver->iStatus, aFile );
             }
         
         iInstallStatusObserver->StartToObserve();
@@ -1620,7 +1554,6 @@
         {
         DLINFO(("Normal install"));
         InitializeInstallerL();
-        //iCancelCode = SwiUI::ERequestInstallHandle;
         if ( !iArguments )
             {
             iArguments = Usif::COpaqueNamedParams::NewL();
@@ -1633,7 +1566,6 @@
         iArguments->AddIntL( Usif::KSifInParam_InstallSilently, EFalse );
         iInstaller.Install(aFile, *iArguments, *iResults, iInstallStatusObserver->iStatus  );
          
-        //iInstaller.Install( iInstallStatusObserver->iStatus, aFile );
         iInstallStatusObserver->StartToObserve();            
         }
     else
@@ -1661,12 +1593,6 @@
     iInstallStatusObserver = CNcdActiveOperationObserver::NewL( *this );
     
     User::LeaveIfError( iInstaller.Connect() );
-    /*
-    if ( !iInstaller.Handle() ) 
-        {
-        User::LeaveIfError( iInstaller.Connect() );
-        }
-    */
     }
     
 
@@ -1677,13 +1603,11 @@
 void CNcdInstallationService::CancelInstall()
     {
     DLTRACEIN((""));
-    //if ( iInstallStatusObserver &&
-    //     iInstaller.Handle() ) 
+    
     if ( iInstallStatusObserver )
         {
         DLTRACE(("Cancelling installation"));
         iInstaller.CancelOperation();
-        //iInstaller.CancelAsyncRequest( iCancelCode );
         }
     
     DeletePtr( iInstallStatusObserver );
--- a/ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -156,16 +156,17 @@
     // The launcher is shown in the application list.
     // So, it would not be nice to leave it there after operation is completed.
     
-   
+    /* Uncomment for testing
     TInt ErrCategory = 0;
     TInt ErrCode = 0;
     TInt ExtendedErrCode =0;
     
-    TBool ret = iResults->GetIntByNameL(Usif::KSifOutParam_ErrCategory, ErrCategory);
-    ret = iResults->GetIntByNameL(Usif::KSifOutParam_ErrCode, ErrCode);
-    ret = iResults->GetIntByNameL(Usif::KSifOutParam_ExtendedErrCode, ExtendedErrCode);
+    ErrCategory = iResults->GetIntByNameL(Usif::KSifOutParam_ErrCategory, ErrCategory);
+    ErrCode = iResults->GetIntByNameL(Usif::KSifOutParam_ErrCode, ErrCode);
+    ExtendedErrCode = iResults->GetIntByNameL(Usif::KSifOutParam_ExtendedErrCode, ExtendedErrCode);
     SilentLauncher().Close();
-
+    */
+    
     TInt errorCode( ConvertErrorCode( iStatus.Int() ) );
     
     // Just forward the information to the observer.
@@ -180,7 +181,6 @@
 
 Usif::RSoftwareInstall& CNcdSilentInstallActiveObserver::SilentLauncher()
     {
-    // return iSilentLauncher;
     return iInstaller;
     }
 
--- a/ncdengine/provider/server/inc/ncdfavoritemanagerimpl.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/server/inc/ncdfavoritemanagerimpl.h	Fri Sep 03 17:01:40 2010 +0300
@@ -192,8 +192,6 @@
     MNcdStorageManager& iStorageManager;       
     
 protected:
-
-    class CNcdTemporaryFavorites;
     
     CNcdFavoriteManager( CNcdGeneralManager& aGeneralManager );
     
--- a/ncdengine/provider/server/inc/ncdloadnodeoperationimpl.h	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/server/inc/ncdloadnodeoperationimpl.h	Fri Sep 03 17:01:40 2010 +0300
@@ -89,6 +89,7 @@
                                   public MCatalogsHttpObserver,
                                   public MNcdParserDataBlocksObserver
     {
+protected:
 class CNcdNodeIconMap;    
 public:
 
--- a/ncdengine/provider/server/src/ncdprovidermanager.cpp	Fri Aug 20 11:39:56 2010 +0300
+++ b/ncdengine/provider/server/src/ncdprovidermanager.cpp	Fri Sep 03 17:01:40 2010 +0300
@@ -79,8 +79,7 @@
     iEngineRootPath = WritableEnginePathL( CNcdProviderUtils::FileSession() );                        
     
     // Create transport
-    iTransport = CCatalogsTransport::NewL( 
-        CNcdProviderUtils::InstallationServiceL().DocumentHandler() );
+    iTransport = CCatalogsTransport::NewL();
     
     iStorageManager = CNcdStorageManager::NewL( 
         CNcdProviderUtils::FileSession(), *iEngineRootPath );
--- a/package_definition.xml	Fri Aug 20 11:39:56 2010 +0300
+++ b/package_definition.xml	Fri Sep 03 17:01:40 2010 +0300
@@ -1,6 +1,83 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
+<SystemDefinition schema="3.0.0" xmlns:qt="http://www.nokia.com/qt">
   <package id="appinstall" name="Application Installation" levels="tool framework generic api">
+  <collection id="appinstall_plat" name="Application Installation Platform Interfaces" level="api">
+   <component id="iaupdate_api" name="IA Update API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/iaupdate_api/iaupdate_api.metaxml"/>
+    <unit bldFile="appinstall_plat/iaupdate_api/group"/>
+   </component>
+   <component id="task_plugin_api" name="Task Plugin API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/task_plugin_api/task_plugin_api.metaxml"/>
+    <unit bldFile="appinstall_plat/task_plugin_api/group"/>
+   </component>
+   <component id="sw_installer_common_ui_api" name="SW Installer Common UI API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/sw_installer_common_ui_api/sw_installer_common_ui_api.metaxml"/>
+    <unit bldFile="appinstall_plat/sw_installer_common_ui_api/group"/>
+   </component>
+   <component id="sw_installer_launcher_api" name="SW Installer Launcher API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/sw_installer_launcher_api/sw_installer_launcher_api.metaxml"/>
+    <unit bldFile="appinstall_plat/sw_installer_launcher_api/group"/>
+   </component>
+   <component id="task_management_api" name="Task Management API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/task_management_api/task_management_api.metaxml"/>
+    <unit bldFile="appinstall_plat/task_management_api/group"/>
+   </component>
+   <component id="sw_installer_ui_plugin_api" name="SW Installer UI Plugin API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/sw_installer_ui_plugin_api/sw_installer_ui_plugin_api.metaxml"/>
+    <unit bldFile="appinstall_plat/sw_installer_ui_plugin_api/group"/>
+   </component>
+   <component id="sw_installer_cr_keys" name="SW Installer CR Keys" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/sw_installer_cr_keys/sw_installer_cr_keys.metaxml"/>
+    <unit bldFile="appinstall_plat/sw_installer_cr_keys/group"/>
+   </component>
+   <component id="sw_installer_ps_keys" name="SW Installer PS Keys" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_plat/sw_installer_ps_keys/sw_installer_ps_keys.metaxml"/>
+    <unit bldFile="appinstall_plat/sw_installer_ps_keys/group"/>
+   </component>
+   <component id="sifui_api" name="STIF UI API" class="api" filter="s60">
+    <unit bldFile="appinstall_plat/sifui_api/group"/>
+   </component>
+  </collection>
+  <collection id="appinstall_pub" name="Application Installation Public Interfaces" level="api">
+   <component id="startup_list_management_api" name="Startup List Management API" class="api" filter="s60">
+    <meta rel="Api" href="appinstall_pub/startup_list_management_api/startup_list_management_api.metaxml"/>
+    <unit bldFile="appinstall_pub/startup_list_management_api/group"/>
+   </component>
+  </collection>
+    <collection id="ncdengine" name="Nokia Content Discover" level="framework">
+      <component id="ncdengine_build" filter="s60" name="NCD Engine" introduced="^1">
+        <unit bldFile="ncdengine/group"/>
+      </component>
+      <component id="ncdengine_qt_build" filter="s60" name="NCD Qt Engine">
+        <unit bldFile="ncdengine/engine"  qt:proFile="engine.pro"/>
+      </component>
+    </collection>
+    <collection id="appinstaller" name="Application Installer" level="generic">
+      <component id="appinstui" filter="s60" name="Application Installer UI" introduced="^2">
+        <unit bldFile="appinstaller/appinstui/group"/>
+      </component>
+      <component id="appinstui_qt" filter="s60" name="Application Installer Qt UI" introduced="^2">
+        <unit bldFile="appinstaller/appinstui" qt:proFile="appinstui.pro"/>
+      </component>
+    </collection>
+    <collection id="iaupdateapi_stub" name="IA Update API Stub" level="api">
+    	<!-- the collection is really a component. Move down a directory.-->
+      <component id="iaupdateapi_stub_build" name="IA Update API Stub Build" filter="s60" introduced="^2">
+        <unit bldFile="iaupdateapi_stub/group"/>
+      </component>
+    </collection>
+    <collection id="iaupdate" name="Independent Apps Update" level="api">
+    	<!-- Should reorganise into actual components -->
+      <component id="iad" name="Independent App delivery" filter="s60" introduced="^4" purpose="development">
+        <unit bldFile="iaupdate" qt:proFile="iaupdate.pro"/>
+      </component>
+      <component id="iaupdate_build" filter="s60" name="IA Update Build" introduced="^2">
+      	<meta rel="config">
+      		<defined condition="FF_IAUPDATE"/>
+      	</meta>  
+        <unit bldFile="iaupdate/group"/>
+      </component>
+    </collection>
     <collection id="installationservices" name="Installation Services" level="generic">
       <component id="swi" name="Secure Software Install" purpose="optional">
         <unit bldFile="installationservices/swi/group" mrp="installationservices/swi/group/security_swi.mrp"/>
@@ -44,5 +121,13 @@
         <unit bldFile="secureswitools/swisistools/group" mrp="secureswitools/swisistools/group/security_sistools.mrp"/>
       </component>
     </collection>
+    <collection id="appinstall_info" name="Application Installation Info" level="api">
+      <component id="appinstall_test" filter="s60,test,api_test" name="Application Installation Test" purpose="development">
+        <unit bldFile="tsrc/group"/>
+      </component>
+      <component id="appinstall_metadata" name="Application Installation Metadata" class="config" introduced="^2" purpose="development" target="desktop">
+        <unit mrp="appinstall_info/appinstall_metadata/appinstall_metadata.mrp"/>
+      </component>
+    </collection>
   </package>
 </SystemDefinition>
--- a/package_map.xml	Fri Aug 20 11:39:56 2010 +0300
+++ b/package_map.xml	Fri Sep 03 17:01:40 2010 +0300
@@ -1,2 +1,1 @@
-<?xml version="1.0"?>
-<PackageMap root="sf" layer="mw" />
\ No newline at end of file
+<PackageMap root="sf" layer="mw"/>