--- 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 <hb/hbcore/hbsymbianvariant.h> // CHbSymbianVariantMap
-#include <swi/msisuihandlers.h> // Swi::CAppInfo
#include <apgicnfl.h> // CApaMaskedBitmap
+#include <s32mem.h> // 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<TInt>& aDriveNumbers )
- {
- if( iSelectableDrives )
- {
- delete iSelectableDrives;
- iSelectableDrives = NULL;
- }
+ {
+ if( iSelectableDrives )
+ {
+ delete iSelectableDrives;
+ iSelectableDrives = NULL;
+ }
- TInt driveCount = aDriveNumbers.Count();
- if( driveCount > 0 )
- {
- const TChar KComma = ',';
- TBuf<KDriveLettersLen> 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<KDriveLettersLen> 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<Swi::CCertificateInfo>& aCertificates )
- {
- if( aCertificates.Count() )
- {
- AddParamsCertificatesL( aCertificates );
- }
- }
+ const RPointerArray<CSifUiCertificateInfo>& 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<TChar>() );
- iSelectedDriveSet = ETrue;
- }
+ {
+ iSelectedDrive = *( selectedDriveVariant->Value<TChar>() );
+ 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<Swi::CCertificateInfo>& /*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;
}
}