diff -r 8110bf1194d1 -r 6e7b00453237 appinstall_plat/sifui_api/src/sifuiprivate.cpp --- a/appinstall_plat/sifui_api/src/sifuiprivate.cpp Fri May 14 15:58:48 2010 +0300 +++ b/appinstall_plat/sifui_api/src/sifuiprivate.cpp Thu May 27 12:58:35 2010 +0300 @@ -11,17 +11,20 @@ * * Contributors: * -* Description: Implementation of RSifUiCli class. +* Description: Implementation of CSifUiPrivate class. * */ #include "sifuiprivate.h" // CSifUiPrivate #include "sifuidefs.h" // SIF UI device dialog parameters +#include "sifuicertificateinfo.h" // CSifUiCertificateInfo +#include "sifuiappinfo.h" // CSifUiAppInfo #include // CHbSymbianVariantMap -#include // Swi::CAppInfo #include // CApaMaskedBitmap +#include // RDesReadStream const TInt KDriveLettersLen = 32; +const TInt KCertificateBufferGranularity = 1024; // ======== MEMBER FUNCTIONS ======== @@ -51,99 +54,120 @@ delete iVariantMap; delete iBitmap; delete iSelectableDrives; + delete iCertificateInfo; } // --------------------------------------------------------------------------- // CSifUiPrivate::ShowConfirmationL() // --------------------------------------------------------------------------- // -TBool CSifUiPrivate::ShowConfirmationL( const Swi::CAppInfo& aAppInfo, - TInt aAppSize, const CApaMaskedBitmap* aAppIcon ) - { - ChangeNoteTypeL( ESifUiConfirmationQuery ); +TBool CSifUiPrivate::ShowConfirmationL( const CSifUiAppInfo& aAppInfo ) + { + ChangeNoteTypeL( ESifUiConfirmationQuery ); - AddParamsAppInfoAndSizeL( aAppInfo, aAppSize ); - if( aAppIcon ) - { - AddParamsIconL( aAppIcon ); - } - if( iSelectableDrives ) - { - AddParamL( KSifUiMemorySelection, *iSelectableDrives ); - } + AddParamsAppInfoL( aAppInfo ); + if( iSelectableDrives ) + { + AddParamL( KSifUiMemorySelection, *iSelectableDrives ); + } + if( iCertificateInfo ) + { + User::LeaveIfError( VariantMapL()->Add( KSifUiCertificates, iCertificateInfo ) ); + iCertificateInfo = NULL; + } - DisplayDeviceDialogL(); - User::LeaveIfError( WaitForResponse() ); - return( iReturnValue == KErrNone ); - } + DisplayDeviceDialogL(); + User::LeaveIfError( WaitForResponse() ); + return( iReturnValue == KErrNone ); + } // --------------------------------------------------------------------------- // CSifUiPrivate::SetMemorySelectionL() // --------------------------------------------------------------------------- // void CSifUiPrivate::SetMemorySelectionL( const RArray& aDriveNumbers ) - { - if( iSelectableDrives ) - { - delete iSelectableDrives; - iSelectableDrives = NULL; - } + { + if( iSelectableDrives ) + { + delete iSelectableDrives; + iSelectableDrives = NULL; + } - TInt driveCount = aDriveNumbers.Count(); - if( driveCount > 0 ) - { - const TChar KComma = ','; - TBuf driveList; - for( TInt index = 0; index < driveCount; ++index ) - { - TChar driveLetter; - TInt err = RFs::DriveToChar( aDriveNumbers[ index ], driveLetter ); - if( !err ) - { - driveList.Append( driveLetter ); - driveList.Append( KComma ); - } - } - iSelectableDrives = driveList.AllocL(); - } - } + TInt driveCount = aDriveNumbers.Count(); + if( driveCount > 0 ) + { + const TChar KComma = ','; + TBuf driveList; + for( TInt index = 0; index < driveCount; ++index ) + { + TChar driveLetter; + TInt err = RFs::DriveToChar( aDriveNumbers[ index ], driveLetter ); + if( !err ) + { + driveList.Append( driveLetter ); + driveList.Append( KComma ); + } + } + iSelectableDrives = driveList.AllocL(); + } + } // --------------------------------------------------------------------------- // CSifUiPrivate::SelectedDrive() // --------------------------------------------------------------------------- // TInt CSifUiPrivate::SelectedDrive( TInt& aDriveNumber ) - { + { if( iSelectedDriveSet ) { return RFs::CharToDrive( iSelectedDrive, aDriveNumber ); } return KErrNotFound; - } + } // --------------------------------------------------------------------------- // CSifUiPrivate::SetCertificateInfoL() // --------------------------------------------------------------------------- // void CSifUiPrivate::SetCertificateInfoL( - const RPointerArray& aCertificates ) - { - if( aCertificates.Count() ) - { - AddParamsCertificatesL( aCertificates ); - } - } + const RPointerArray& aCertificates ) + { + if( iCertificateInfo ) + { + delete iCertificateInfo; + iCertificateInfo = NULL; + } + if( aCertificates.Count() ) + { + CBufBase* buf = CBufFlat::NewL( KCertificateBufferGranularity ); + CleanupStack::PushL( buf ); + RBufWriteStream writeStream( *buf ); + CleanupClosePushL( writeStream ); + + TInt32 count = aCertificates.Count(); + writeStream.WriteInt32L( count ); + for( TInt index = 0; index < count; ++index ) + { + aCertificates[ index ]->ExternalizeL( writeStream ); + } + + const TPtrC8 dataPtr( buf->Ptr( 0 ).Ptr(), buf->Size() ); + iCertificateInfo = CHbSymbianVariant::NewL( &dataPtr, CHbSymbianVariant::EBinary ); + + CleanupStack::PopAndDestroy( 2, buf ); // writeStream, buf + } + } // --------------------------------------------------------------------------- // CSifUiPrivate::ShowProgressL() // --------------------------------------------------------------------------- // -void CSifUiPrivate::ShowProgressL( const Swi::CAppInfo& aAppInfo, - TInt aAppSize, TInt aProgressBarFinalValue ) +void CSifUiPrivate::ShowProgressL( const CSifUiAppInfo& aAppInfo, + TInt aProgressBarFinalValue ) { ChangeNoteTypeL( ESifUiProgressNote ); - AddParamsAppInfoAndSizeL( aAppInfo, aAppSize ); + AddParamsAppInfoL( aAppInfo ); AddParamL( KSifUiProgressNoteFinalValue, aProgressBarFinalValue ); DisplayDeviceDialogL(); @@ -169,6 +193,7 @@ void CSifUiPrivate::ShowCompleteL() { ChangeNoteTypeL( ESifUiCompleteNote ); + DisplayDeviceDialogL(); User::LeaveIfError( WaitForResponse() ); } @@ -226,10 +251,10 @@ { const CHbSymbianVariant* selectedDriveVariant = aData.Get( KSifUiSelectedMemory ); if( selectedDriveVariant ) - { - iSelectedDrive = *( selectedDriveVariant->Value() ); - iSelectedDriveSet = ETrue; - } + { + iSelectedDrive = *( selectedDriveVariant->Value() ); + iSelectedDriveSet = ETrue; + } const CHbSymbianVariant* acceptedVariant = aData.Get( KSifUiQueryAccepted ); if( acceptedVariant ) @@ -277,17 +302,29 @@ } // --------------------------------------------------------------------------- -// CSifUiPrivate::ClearParamsL() +// CSifUiPrivate::ClearParams() // --------------------------------------------------------------------------- // -void CSifUiPrivate::ClearParamsL() +void CSifUiPrivate::ClearParams() { if( iVariantMap ) { delete iVariantMap; iVariantMap = NULL; } - iVariantMap = CHbSymbianVariantMap::NewL(); + } + +// --------------------------------------------------------------------------- +// CSifUiPrivate::VariantMapL() +// --------------------------------------------------------------------------- +// +CHbSymbianVariantMap* CSifUiPrivate::VariantMapL() + { + if( !iVariantMap ) + { + iVariantMap = CHbSymbianVariantMap::NewL(); + } + return iVariantMap; } // --------------------------------------------------------------------------- @@ -296,7 +333,7 @@ // void CSifUiPrivate::ChangeNoteTypeL( TInt aType ) { - ClearParamsL(); + ClearParams(); AddParamL( KSifUiDialogType, aType ); } @@ -308,7 +345,7 @@ { CHbSymbianVariant* variant = NULL; variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt ); - iVariantMap->Add( aKey, variant ); + User::LeaveIfError( VariantMapL()->Add( aKey, variant ) ); } // --------------------------------------------------------------------------- @@ -319,7 +356,7 @@ { CHbSymbianVariant* variant = NULL; variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes ); - iVariantMap->Add( aKey, variant ); + User::LeaveIfError( VariantMapL()->Add( aKey, variant ) ); } // --------------------------------------------------------------------------- @@ -330,28 +367,29 @@ { CHbSymbianVariant* variant = NULL; variant = CHbSymbianVariant::NewL( &aList, CHbSymbianVariant::EDesArray ); - iVariantMap->Add( aKey, variant ); + User::LeaveIfError( VariantMapL()->Add( aKey, variant ) ); } // --------------------------------------------------------------------------- -// CSifUiPrivate::AddParamsAppInfoAndSizeL() +// CSifUiPrivate::AddParamsAppInfoL() // --------------------------------------------------------------------------- // -void CSifUiPrivate::AddParamsAppInfoAndSizeL( const Swi::CAppInfo& aAppInfo, TInt aAppSize ) +void CSifUiPrivate::AddParamsAppInfoL( const CSifUiAppInfo& aAppInfo ) { - AddParamL( KSifUiApplicationName, aAppInfo.AppName() ); - const TVersion& version( aAppInfo.AppVersion() ); + // TODO: icons missing, could use binary transfer as in certificates + AddParamL( KSifUiApplicationName, aAppInfo.Name() ); + const TVersion& version( aAppInfo.Version() ); if( version.iBuild || version.iMajor || version.iMinor ) { AddParamL( KSifUiApplicationVersion, version.Name() ); } - if( aAppInfo.AppVendor().Length() ) + if( aAppInfo.Vendor().Length() ) { - AddParamL( KSifUiApplicationDetails, aAppInfo.AppVendor() ); + AddParamL( KSifUiApplicationDetails, aAppInfo.Vendor() ); } - if( aAppSize > 0 ) + if( aAppInfo.Size() > 0 ) { - AddParamL( KSifUiApplicationSize, aAppSize ); + AddParamL( KSifUiApplicationSize, aAppInfo.Size() ); } } @@ -361,6 +399,7 @@ // void CSifUiPrivate::AddParamsIconL( const CApaMaskedBitmap* aIcon ) { + // TODO: remove this function if( aIcon ) { if( iBitmap ) @@ -370,26 +409,18 @@ } iBitmap = CApaMaskedBitmap::NewL( aIcon ); + CHbSymbianVariantMap* map = VariantMapL(); CHbSymbianVariant* variant = NULL; TInt bitmapHandle = iBitmap->Handle(); variant = CHbSymbianVariant::NewL( &bitmapHandle, CHbSymbianVariant::EInt ); - iVariantMap->Add( KSifUiApplicationIconHandle, variant ); + User::LeaveIfError( map->Add( KSifUiApplicationIconHandle, variant ) ); TInt bitmapMaskHandle = iBitmap->Mask()->Handle(); variant = CHbSymbianVariant::NewL( &bitmapMaskHandle, CHbSymbianVariant::EInt ); - iVariantMap->Add( KSifUiApplicationIconMaskHandle, variant ); + User::LeaveIfError( map->Add( KSifUiApplicationIconMaskHandle, variant ) ); } } // --------------------------------------------------------------------------- -// CSifUiPrivate::AddParamsCertificatesL() -// --------------------------------------------------------------------------- -// -void CSifUiPrivate::AddParamsCertificatesL( const RPointerArray& /*aCertificates*/ ) - { - // TODO: implement - } - -// --------------------------------------------------------------------------- // CSifUiPrivate::DisplayDeviceDialogL() // --------------------------------------------------------------------------- // @@ -397,7 +428,7 @@ { if( iDeviceDialog && iIsDisplayingDialog ) { - iDeviceDialog->Update( *iVariantMap ); + User::LeaveIfError( iDeviceDialog->Update( *VariantMapL() ) ); } else { @@ -405,7 +436,7 @@ { iDeviceDialog = CHbDeviceDialogSymbian::NewL(); } - iDeviceDialog->Show( KSifUiDeviceDialog, *iVariantMap, this ); + User::LeaveIfError( iDeviceDialog->Show( KSifUiDeviceDialog, *VariantMapL(), this ) ); iIsDisplayingDialog = ETrue; } }