# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284701426 -10800 # Node ID a0dc1407581303c28b3876db09a32a94479fe1b2 # Parent 3a625661d1ceb6e4b9561052e92deff521d83a7a Revision: 201035 Kit: 201037 diff -r 3a625661d1ce -r a0dc14075813 appinstall_plat/sifui_api/bwins/sifuiu.def --- a/appinstall_plat/sifui_api/bwins/sifuiu.def Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstall_plat/sifui_api/bwins/sifuiu.def Fri Sep 17 08:30:26 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) diff -r 3a625661d1ce -r a0dc14075813 appinstall_plat/sifui_api/eabi/sifuiu.def --- a/appinstall_plat/sifui_api/eabi/sifuiu.def Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstall_plat/sifui_api/eabi/sifuiu.def Fri Sep 17 08:30:26 2010 +0300 @@ -42,4 +42,5 @@ _ZTV15CSifUiErrorInfo @ 41 NONAME _ZTV21CSifUiCertificateInfo @ 42 NONAME _ZTV6CSifUi @ 43 NONAME + _ZN6CSifUi13CancelDialogsEv @ 44 NONAME diff -r 3a625661d1ce -r a0dc14075813 appinstall_plat/sifui_api/inc/sifui.h --- a/appinstall_plat/sifui_api/inc/sifui.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstall_plat/sifui_api/inc/sifui.h Fri Sep 17 08:30:26 2010 +0300 @@ -263,6 +263,11 @@ IMPORT_C TBool ShowSelectOptionsL( const MDesCArray& aSelectableItems, RArray& aSelectedIndexes ); + /** + * Closes dialogs immediately and resets the CSifUi object. + */ + IMPORT_C void CancelDialogs(); + //================================================= // DEPRECATED METHODS diff -r 3a625661d1ce -r a0dc14075813 appinstall_plat/sifui_api/inc/sifuiprivate.h --- a/appinstall_plat/sifui_api/inc/sifuiprivate.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstall_plat/sifui_api/inc/sifuiprivate.h Fri Sep 17 08:30:26 2010 +0300 @@ -62,6 +62,7 @@ TInt ShowSelectLanguageL( const RArray& aLanguages ); TBool ShowSelectOptionsL( const MDesCArray& aSelectableItems, RArray& aSelectedIndexes ); + void CancelDialogs(); protected: // from CActive void DoCancel(); diff -r 3a625661d1ce -r a0dc14075813 appinstall_plat/sifui_api/src/sifui.cpp --- a/appinstall_plat/sifui_api/src/sifui.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstall_plat/sifui_api/src/sifui.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -183,6 +183,15 @@ return iPrivate->ShowSelectOptionsL( aSelectableItems, aSelectedIndexes ); } +// --------------------------------------------------------------------------- +// CSifUi::CancelDialogs() +// --------------------------------------------------------------------------- +// +EXPORT_C void CSifUi::CancelDialogs() + { + iPrivate->CancelDialogs(); + } + // --------------------------------------------------------------------------- // DEPRECATED: CSifUi::ShowFailedL() diff -r 3a625661d1ce -r a0dc14075813 appinstall_plat/sifui_api/src/sifuiprivate.cpp --- a/appinstall_plat/sifui_api/src/sifuiprivate.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstall_plat/sifui_api/src/sifuiprivate.cpp Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h --- a/appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/Daemon/Inc/daemonbehaviour.h Fri Sep 17 08:30:26 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 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 diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp --- a/appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/Daemon/Src/SilentLauncher.cpp Fri Sep 17 08:30:26 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, diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp --- a/appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/Daemon/Src/daemonbehaviour.cpp Fri Sep 17 08:30:26 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(®istrySession); + + 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 diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp --- a/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp Fri Sep 17 08:30:26 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 ); } diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp --- a/appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/group/sisxsifplugin.mmp Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugininstallparams.h --- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugininstallparams.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifplugininstallparams.h Fri Sep 17 08:30:26 2010 +0300 @@ -36,8 +36,8 @@ public: // new functions TBool IsSilentMode() const; TBool IsInstallInactive() const; - TUint Drive() const; - TLanguage Language() const; + const RArray& Drives() const; + const RArray& 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 iDrives; + RArray iLanguages; HBufC* iOCSPUrl; TSifPolicy iPerformOCSP; TSifPolicy iIgnoreOCSPWarnings; diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h --- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandler.h Fri Sep 17 08:30:26 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 ); diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlerbase.h --- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlerbase.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlerbase.h Fri Sep 17 08:30:26 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; diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlersilent.h --- a/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlersilent.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginuihandlersilent.h Fri Sep 17 08:30:26 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 ); diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginactiveimpl.cpp Fri Sep 17 08:30:26 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(); diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugininstallparams.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugininstallparams.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifplugininstallparams.cpp Fri Sep 17 08:30:26 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& CSisxSifPluginInstallParams::Drives() const { - return iDrive; + return iDrives; } // --------------------------------------------------------------------------- -// CSisxSifPluginInstallParams::Language() +// CSisxSifPluginInstallParams::Languages() // --------------------------------------------------------------------------- // -TLanguage CSisxSifPluginInstallParams::Language() const +const RArray& 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( GetIntParam( aParams, KSifInParam_Drive, EDriveC ) ); - iLanguage = static_cast( 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& 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& langArray = aParams.IntArrayByNameL( KSifInParam_Languages ); + iLanguages.Reset(); + for( TInt index = 0; index < langArray.Count(); index++ ) + { + iLanguages.AppendL( static_cast( langArray[ index ] ) ); + } + } + diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandler.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -188,7 +188,7 @@ const RPointerArray& /*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& aPkixResults ) { ASSERT( aCertificates.Count() == aPkixResults.Count() ); - RPointerArray certificates; CleanupResetAndDestroyPushL( certificates ); @@ -604,6 +606,7 @@ } } iSifUi->SetCertificateInfoL( certificates ); + CleanupStack::PopAndDestroy( &certificates ); } diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlerbase.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlerbase.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlerbase.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -22,10 +22,29 @@ #include // CRepository #include // KCRUidSWInstallerSettings #include // CHbDeviceMessageBoxSymbian +#include // HbTextResolverSymbian #include // 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 appNames; CleanupResetAndDestroyPushL( appNames ); RPointerArray appIcons; @@ -142,8 +165,11 @@ // CSisxSifPluginUiHandlerBase::PublishStartL() // --------------------------------------------------------------------------- // -void CSisxSifPluginUiHandlerBase::PublishStartL( const CComponentEntry& aEntry ) +void CSisxSifPluginUiHandlerBase::PublishStartL( const CComponentEntry& aEntry, + TSifOperationPhase aPhase ) { + iOperationPhase = aPhase; + RPointerArray appNames; CleanupResetAndDestroyPushL( appNames ); RPointerArray 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 ); + } + diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlersilent.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlersilent.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/src/sisxsifpluginuihandlersilent.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -228,7 +228,7 @@ const CApaMaskedBitmap* /*aLogo*/, const RPointerArray& /*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& 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& 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 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() // --------------------------------------------------------------------------- // diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/activerunner_symbian.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -155,9 +155,23 @@ iResults = NULL; iResults = Usif::COpaqueNamedParams::NewL(); + RArray driveArray; + CleanupClosePushL( driveArray ); + RArray 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 { diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp --- a/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -27,6 +27,7 @@ #include #include #include +#include #include // XQApplicationManager #include // 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(state); + mCancelInstallShortly = (s == Qt::Checked); +} + +void TestInstaller::cancelRemovingChanged(int state) +{ + Qt::CheckState s = static_cast(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())); + } } } diff -r 3a625661d1ce -r a0dc14075813 appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h --- a/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h Thu Sep 02 20:34:03 2010 +0300 +++ b/appinstaller/AppinstUi/sisxsifplugin/tsrc/testinstaller/testinstaller.h Fri Sep 17 08:30:26 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; diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/backgroundchecker/group/iaupdatebg.mmp --- a/iaupdate/IAD/backgroundchecker/group/iaupdatebg.mmp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/backgroundchecker/group/iaupdatebg.mmp Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/backgroundchecker/src/iaupdatbgnotifyhandler.cpp --- a/iaupdate/IAD/backgroundchecker/src/iaupdatbgnotifyhandler.cpp Thu Sep 02 20:34:03 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 - -#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 diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/backgroundchecker/src/iaupdatebgnotifyhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgnotifyhandler.cpp Fri Sep 17 08:30:26 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 + +#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 diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp --- a/iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgrefreshtimer.cpp Fri Sep 17 08:30:26 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 ); diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp --- a/iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/backgroundchecker/src/iaupdatebgsoftnotification.cpp Fri Sep 17 08:30:26 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; diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h --- a/iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/bgcindicatorplugin/inc/bgcindicator.h Fri Sep 17 08:30:26 2010 +0300 @@ -21,6 +21,7 @@ #include #include +#include /** * Message indicator class. @@ -63,9 +64,15 @@ private: /** - * Nr of updates + * Owned */ int mNrOfUpdates; + /** + * Owned + */ + HbTranslator *mTranslator; + + }; diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp --- a/iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/bgcindicatorplugin/src/bgcindicator.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -20,12 +20,13 @@ #include #include -#include - #include #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(); diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp --- a/iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/engine/controller/src/iaupdateinstalloperation.cpp Fri Sep 17 08:30:26 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 ); diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/engine/controller/src/iaupdateutils.cpp --- a/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/engine/controller/src/iaupdateutils.cpp Fri Sep 17 08:30:26 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 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 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 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; diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/engine/inc/iaupdateutils.h --- a/iaupdate/IAD/engine/inc/iaupdateutils.h Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/engine/inc/iaupdateutils.h Fri Sep 17 08:30:26 2010 +0300 @@ -24,7 +24,6 @@ #include // For silent installation -#include #include #include @@ -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, diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/ui/inc/iaupdateuids.h --- a/iaupdate/IAD/ui/inc/iaupdateuids.h Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/ui/inc/iaupdateuids.h Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/ui/src/iaupdateengine.cpp --- a/iaupdate/IAD/ui/src/iaupdateengine.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/ui/src/iaupdateengine.cpp Fri Sep 17 08:30:26 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 ) ); diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/ui/src/iaupdatesettingdialog.cpp --- a/iaupdate/IAD/ui/src/iaupdatesettingdialog.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/ui/src/iaupdatesettingdialog.cpp Fri Sep 17 08:30:26 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); } // ----------------------------------------------------------------------------- diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/ui/src/iaupdateuicontroller.cpp --- a/iaupdate/IAD/ui/src/iaupdateuicontroller.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/ui/src/iaupdateuicontroller.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -20,7 +20,6 @@ // INCLUDES #include -#include #include #include #include @@ -1452,7 +1451,7 @@ iState = EIdle; //CIAUpdateAppUi* appUi = static_cast( iEikEnv->EikAppUi() ); //appUi->StopWGListChangeMonitoring(); - if ( aError == SwiUI::KSWInstErrFileInUse ) + if ( aError == KErrInUse ) { iFileInUseError = ETrue; } diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/updater/inc/iaupdaterinstaller.h --- a/iaupdate/IAD/updater/inc/iaupdaterinstaller.h Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/updater/inc/iaupdaterinstaller.h Fri Sep 17 08:30:26 2010 +0300 @@ -23,6 +23,8 @@ #include #include +#include + 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; }; diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/updater/inc/iaupdatersilentlauncher.h --- a/iaupdate/IAD/updater/inc/iaupdatersilentlauncher.h Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/updater/inc/iaupdatersilentlauncher.h Fri Sep 17 08:30:26 2010 +0300 @@ -22,7 +22,6 @@ #include #include -#include #include @@ -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; diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/updater/src/iaupdaterinstaller.cpp --- a/iaupdate/IAD/updater/src/iaupdaterinstaller.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/updater/src/iaupdaterinstaller.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -16,13 +16,14 @@ */ - #include "iaupdaterinstaller.h" #include "iaupdatermngr.h" #include "iaupdatersilentlauncher.h" #include "iaupdaterdefs.h" #include "iaupdatedebug.h" +#include + // ======== 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(); diff -r 3a625661d1ce -r a0dc14075813 iaupdate/IAD/updater/src/iaupdatersilentlauncher.cpp --- a/iaupdate/IAD/updater/src/iaupdatersilentlauncher.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/IAD/updater/src/iaupdatersilentlauncher.cpp Fri Sep 17 08:30:26 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 ) ); } diff -r 3a625661d1ce -r a0dc14075813 iaupdate/rom/iaupdate.iby --- a/iaupdate/rom/iaupdate.iby Thu Sep 02 20:34:03 2010 +0300 +++ b/iaupdate/rom/iaupdate.iby Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 installationservices/swcomponentregistry/group/bld.inf --- a/installationservices/swcomponentregistry/group/bld.inf Thu Sep 02 20:34:03 2010 +0300 +++ b/installationservices/swcomponentregistry/group/bld.inf Fri Sep 17 08:30:26 2010 +0300 @@ -21,7 +21,7 @@ @file */ -#include "../sqlite_secure/GROUP/BLD.INF" +#include "../sqlite_secure/group/bld.inf" PRJ_PLATFORMS DEFAULT diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/engine.pro --- a/ncdengine/engine/engine.pro Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/engine.pro Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/group/bld.inf --- a/ncdengine/engine/group/bld.inf Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/group/bld.inf Fri Sep 17 08:30:26 2010 +0300 @@ -17,7 +17,7 @@ PRJ_MMPFILES -catalogsdebug.mmp +//catalogsdebug.mmp ncdutils.mmp ncddevicemgmt.mmp //catalogsserver.mmp diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/group/catalogsserver.mmp --- a/ncdengine/engine/group/catalogsserver.mmp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/group/catalogsserver.mmp Fri Sep 17 08:30:26 2010 +0300 @@ -445,7 +445,6 @@ #endif LIBRARY apmime.lib // TDataType -LIBRARY commonui.lib // CDocumentHandler START WINS //DEFFILE ../BWINS/catalogsserverwins.def diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/group/ncddevicemgmt.mmp --- a/ncdengine/engine/group/ncddevicemgmt.mmp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/group/ncddevicemgmt.mmp Fri Sep 17 08:30:26 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 diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/src/catalogsdebug.cpp --- a/ncdengine/engine/src/catalogsdebug.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/src/catalogsdebug.cpp Fri Sep 17 08:30:26 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 ); diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/inc/catalogshttpdownload.h --- a/ncdengine/engine/transport/inc/catalogshttpdownload.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/inc/catalogshttpdownload.h Fri Sep 17 08:30:26 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(); diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/inc/catalogshttpdownloadmanagerimpl.h --- a/ncdengine/engine/transport/inc/catalogshttpdownloadmanagerimpl.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/inc/catalogshttpdownloadmanagerimpl.h Fri Sep 17 08:30:26 2010 +0300 @@ -209,8 +209,6 @@ CCatalogsHttpConnectionManager& ConnectionManager(); - - CDocumentHandler& DocumentHandler(); TInt NewDownloadId(); diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/inc/catalogshttpsessionmanager.h --- a/ncdengine/engine/transport/inc/catalogshttpsessionmanager.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/inc/catalogshttpsessionmanager.h Fri Sep 17 08:30:26 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 * diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/inc/catalogshttpsessionmanagerimpl.h --- a/ncdengine/engine/transport/inc/catalogshttpsessionmanagerimpl.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/inc/catalogshttpsessionmanagerimpl.h Fri Sep 17 08:30:26 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; }; diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/inc/catalogshttpstack.h --- a/ncdengine/engine/transport/inc/catalogshttpstack.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/inc/catalogshttpstack.h Fri Sep 17 08:30:26 2010 +0300 @@ -29,7 +29,7 @@ // Constants -const TInt KRequestTimeoutMicroseconds( 180000000 ); +const TInt KRequestTimeoutMicroseconds( 60000000 ); // Forward declarations class RHTTPSession; diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/inc/catalogstransportimpl.h --- a/ncdengine/engine/transport/inc/catalogstransportimpl.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/inc/catalogstransportimpl.h Fri Sep 17 08:30:26 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: diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/src/catalogshttpdownload.cpp --- a/ncdengine/engine/transport/src/catalogshttpdownload.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/src/catalogshttpdownload.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -20,7 +20,6 @@ #include #include -#include #include // TDataType #include #include @@ -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 ); } diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/src/catalogshttpdownloadmanagerimpl.cpp --- a/ncdengine/engine/transport/src/catalogshttpdownloadmanagerimpl.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/src/catalogshttpdownloadmanagerimpl.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -817,17 +817,6 @@ return iConnectionManager; } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CDocumentHandler& CCatalogsHttpDownloadManager::DocumentHandler() - { - return iManager.DocumentHandler(); - } - - // --------------------------------------------------------------------------- // Event handling // --------------------------------------------------------------------------- diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/src/catalogshttpsessionmanagerimpl.cpp --- a/ncdengine/engine/transport/src/catalogshttpsessionmanagerimpl.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/src/catalogshttpsessionmanagerimpl.cpp Fri Sep 17 08:30:26 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 // --------------------------------------------------------------------------- diff -r 3a625661d1ce -r a0dc14075813 ncdengine/engine/transport/src/catalogstransportimpl.cpp --- a/ncdengine/engine/transport/src/catalogstransportimpl.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/engine/transport/src/catalogstransportimpl.cpp Fri Sep 17 08:30:26 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( ( "" ) ); } diff -r 3a625661d1ce -r a0dc14075813 ncdengine/inc/catalogsconstants.h --- a/ncdengine/inc/catalogsconstants.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/inc/catalogsconstants.h Fri Sep 17 08:30:26 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" ); diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h --- a/ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/deviceinteraction/inc/ncdinstallationservice.h Fri Sep 17 08:30:26 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 #include #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 diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h --- a/ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/deviceinteraction/inc/ncdinstallationserviceimpl.h Fri Sep 17 08:30:26 2010 +0300 @@ -20,7 +20,6 @@ #define C_NCD_INSTALLATION_SERVICE_IMPL_H #include -#include #include #include #include @@ -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; diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/deviceinteraction/inc/ncdsilentinstallactiveobserver.h --- a/ncdengine/provider/deviceinteraction/inc/ncdsilentinstallactiveobserver.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/deviceinteraction/inc/ncdsilentinstallactiveobserver.h Fri Sep 17 08:30:26 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; diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp --- a/ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/deviceinteraction/src/ncdinstallationserviceimpl.cpp Fri Sep 17 08:30:26 2010 +0300 @@ -18,7 +18,6 @@ #include "ncdinstallationserviceimpl.h" -#include #include #include #include @@ -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 ); diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp --- a/ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp Fri Sep 17 08:30:26 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; } diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/server/inc/ncdfavoritemanagerimpl.h --- a/ncdengine/provider/server/inc/ncdfavoritemanagerimpl.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/server/inc/ncdfavoritemanagerimpl.h Fri Sep 17 08:30:26 2010 +0300 @@ -192,8 +192,6 @@ MNcdStorageManager& iStorageManager; protected: - - class CNcdTemporaryFavorites; CNcdFavoriteManager( CNcdGeneralManager& aGeneralManager ); diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/server/inc/ncdloadnodeoperationimpl.h --- a/ncdengine/provider/server/inc/ncdloadnodeoperationimpl.h Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/server/inc/ncdloadnodeoperationimpl.h Fri Sep 17 08:30:26 2010 +0300 @@ -89,6 +89,7 @@ public MCatalogsHttpObserver, public MNcdParserDataBlocksObserver { +protected: class CNcdNodeIconMap; public: diff -r 3a625661d1ce -r a0dc14075813 ncdengine/provider/server/src/ncdprovidermanager.cpp --- a/ncdengine/provider/server/src/ncdprovidermanager.cpp Thu Sep 02 20:34:03 2010 +0300 +++ b/ncdengine/provider/server/src/ncdprovidermanager.cpp Fri Sep 17 08:30:26 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 ); diff -r 3a625661d1ce -r a0dc14075813 package_definition.xml --- a/package_definition.xml Thu Sep 02 20:34:03 2010 +0300 +++ b/package_definition.xml Fri Sep 17 08:30:26 2010 +0300 @@ -1,6 +1,83 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -44,5 +121,13 @@ + + + + + + + + diff -r 3a625661d1ce -r a0dc14075813 package_map.xml --- a/package_map.xml Thu Sep 02 20:34:03 2010 +0300 +++ b/package_map.xml Fri Sep 17 08:30:26 2010 +0300 @@ -1,2 +1,1 @@ - - \ No newline at end of file +