appinstall_plat/sifui_api/src/sifuiprivate.cpp
changeset 37 6e7b00453237
parent 33 8110bf1194d1
child 42 d17dc5398051
equal deleted inserted replaced
33:8110bf1194d1 37:6e7b00453237
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:  Implementation of RSifUiCli class.
    14 * Description:  Implementation of CSifUiPrivate class.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "sifuiprivate.h"                       // CSifUiPrivate
    18 #include "sifuiprivate.h"                       // CSifUiPrivate
    19 #include "sifuidefs.h"                          // SIF UI device dialog parameters
    19 #include "sifuidefs.h"                          // SIF UI device dialog parameters
       
    20 #include "sifuicertificateinfo.h"               // CSifUiCertificateInfo
       
    21 #include "sifuiappinfo.h"                       // CSifUiAppInfo
    20 #include <hb/hbcore/hbsymbianvariant.h>         // CHbSymbianVariantMap
    22 #include <hb/hbcore/hbsymbianvariant.h>         // CHbSymbianVariantMap
    21 #include <swi/msisuihandlers.h>                 // Swi::CAppInfo
       
    22 #include <apgicnfl.h>                           // CApaMaskedBitmap
    23 #include <apgicnfl.h>                           // CApaMaskedBitmap
       
    24 #include <s32mem.h>                             // RDesReadStream
    23 
    25 
    24 const TInt KDriveLettersLen = 32;
    26 const TInt KDriveLettersLen = 32;
       
    27 const TInt KCertificateBufferGranularity = 1024;
    25 
    28 
    26 
    29 
    27 // ======== MEMBER FUNCTIONS ========
    30 // ======== MEMBER FUNCTIONS ========
    28 
    31 
    29 // ---------------------------------------------------------------------------
    32 // ---------------------------------------------------------------------------
    49     delete iWait;
    52     delete iWait;
    50     delete iDeviceDialog;
    53     delete iDeviceDialog;
    51     delete iVariantMap;
    54     delete iVariantMap;
    52     delete iBitmap;
    55     delete iBitmap;
    53     delete iSelectableDrives;
    56     delete iSelectableDrives;
       
    57     delete iCertificateInfo;
    54     }
    58     }
    55 
    59 
    56 // ---------------------------------------------------------------------------
    60 // ---------------------------------------------------------------------------
    57 // CSifUiPrivate::ShowConfirmationL()
    61 // CSifUiPrivate::ShowConfirmationL()
    58 // ---------------------------------------------------------------------------
    62 // ---------------------------------------------------------------------------
    59 //
    63 //
    60 TBool CSifUiPrivate::ShowConfirmationL( const Swi::CAppInfo& aAppInfo,
    64 TBool CSifUiPrivate::ShowConfirmationL( const CSifUiAppInfo& aAppInfo )
    61     TInt aAppSize, const CApaMaskedBitmap* aAppIcon )
    65     {
    62 	{
    66     ChangeNoteTypeL( ESifUiConfirmationQuery );
    63 	ChangeNoteTypeL( ESifUiConfirmationQuery );
    67 
    64 
    68     AddParamsAppInfoL( aAppInfo );
    65 	AddParamsAppInfoAndSizeL( aAppInfo, aAppSize );
    69     if( iSelectableDrives )
    66 	if( aAppIcon )
    70         {
    67 		{
    71         AddParamL( KSifUiMemorySelection, *iSelectableDrives );
    68 		AddParamsIconL( aAppIcon );
    72         }
    69 		}
    73     if( iCertificateInfo )
    70 	if( iSelectableDrives )
    74         {
    71 		{
    75         User::LeaveIfError( VariantMapL()->Add( KSifUiCertificates, iCertificateInfo ) );
    72 		AddParamL( KSifUiMemorySelection, *iSelectableDrives );
    76         iCertificateInfo = NULL;
    73 		}
    77         }
    74 
    78 
    75 	DisplayDeviceDialogL();
    79     DisplayDeviceDialogL();
    76 	User::LeaveIfError( WaitForResponse() );
    80     User::LeaveIfError( WaitForResponse() );
    77 	return( iReturnValue == KErrNone );
    81     return( iReturnValue == KErrNone );
    78 	}
    82     }
    79 
    83 
    80 // ---------------------------------------------------------------------------
    84 // ---------------------------------------------------------------------------
    81 // CSifUiPrivate::SetMemorySelectionL()
    85 // CSifUiPrivate::SetMemorySelectionL()
    82 // ---------------------------------------------------------------------------
    86 // ---------------------------------------------------------------------------
    83 //
    87 //
    84 void CSifUiPrivate::SetMemorySelectionL( const RArray<TInt>& aDriveNumbers )
    88 void CSifUiPrivate::SetMemorySelectionL( const RArray<TInt>& aDriveNumbers )
    85 	{
    89     {
    86 	if( iSelectableDrives )
    90     if( iSelectableDrives )
    87 		{
    91         {
    88 		delete iSelectableDrives;
    92         delete iSelectableDrives;
    89 		iSelectableDrives = NULL;
    93         iSelectableDrives = NULL;
    90 		}
    94         }
    91 
    95 
    92 	TInt driveCount = aDriveNumbers.Count();
    96     TInt driveCount = aDriveNumbers.Count();
    93 	if( driveCount > 0 )
    97     if( driveCount > 0 )
    94 		{
    98         {
    95 		const TChar KComma = ',';
    99         const TChar KComma = ',';
    96 		TBuf<KDriveLettersLen> driveList;
   100         TBuf<KDriveLettersLen> driveList;
    97 		for( TInt index = 0; index < driveCount; ++index )
   101         for( TInt index = 0; index < driveCount; ++index )
    98 			{
   102             {
    99 			TChar driveLetter;
   103             TChar driveLetter;
   100 			TInt err = RFs::DriveToChar( aDriveNumbers[ index ], driveLetter );
   104             TInt err = RFs::DriveToChar( aDriveNumbers[ index ], driveLetter );
   101 			if( !err )
   105             if( !err )
   102 				{
   106                 {
   103 				driveList.Append( driveLetter );
   107                 driveList.Append( driveLetter );
   104 				driveList.Append( KComma );
   108                 driveList.Append( KComma );
   105 				}
   109                 }
   106 			}
   110             }
   107 		iSelectableDrives = driveList.AllocL();
   111         iSelectableDrives = driveList.AllocL();
   108 		}
   112         }
   109 	}
   113     }
   110 
   114 
   111 // ---------------------------------------------------------------------------
   115 // ---------------------------------------------------------------------------
   112 // CSifUiPrivate::SelectedDrive()
   116 // CSifUiPrivate::SelectedDrive()
   113 // ---------------------------------------------------------------------------
   117 // ---------------------------------------------------------------------------
   114 //
   118 //
   115 TInt CSifUiPrivate::SelectedDrive( TInt& aDriveNumber )
   119 TInt CSifUiPrivate::SelectedDrive( TInt& aDriveNumber )
   116 	{
   120     {
   117     if( iSelectedDriveSet )
   121     if( iSelectedDriveSet )
   118         {
   122         {
   119         return RFs::CharToDrive( iSelectedDrive, aDriveNumber );
   123         return RFs::CharToDrive( iSelectedDrive, aDriveNumber );
   120         }
   124         }
   121     return KErrNotFound;
   125     return KErrNotFound;
   122 	}
   126     }
   123 
   127 
   124 // ---------------------------------------------------------------------------
   128 // ---------------------------------------------------------------------------
   125 // CSifUiPrivate::SetCertificateInfoL()
   129 // CSifUiPrivate::SetCertificateInfoL()
   126 // ---------------------------------------------------------------------------
   130 // ---------------------------------------------------------------------------
   127 //
   131 //
   128 void CSifUiPrivate::SetCertificateInfoL(
   132 void CSifUiPrivate::SetCertificateInfoL(
   129         const RPointerArray<Swi::CCertificateInfo>& aCertificates )
   133         const RPointerArray<CSifUiCertificateInfo>& aCertificates )
   130 	{
   134     {
   131    if( aCertificates.Count() )
   135     if( iCertificateInfo )
   132 		{
   136         {
   133 		AddParamsCertificatesL( aCertificates );
   137         delete iCertificateInfo;
   134 		}
   138         iCertificateInfo = NULL;
   135 	}
   139         }
       
   140     if( aCertificates.Count() )
       
   141         {
       
   142         CBufBase* buf = CBufFlat::NewL( KCertificateBufferGranularity );
       
   143         CleanupStack::PushL( buf );
       
   144         RBufWriteStream writeStream( *buf );
       
   145         CleanupClosePushL( writeStream );
       
   146 
       
   147         TInt32 count = aCertificates.Count();
       
   148         writeStream.WriteInt32L( count );
       
   149         for( TInt index = 0; index < count; ++index )
       
   150            {
       
   151            aCertificates[ index ]->ExternalizeL( writeStream );
       
   152            }
       
   153 
       
   154         const TPtrC8 dataPtr( buf->Ptr( 0 ).Ptr(), buf->Size() );
       
   155         iCertificateInfo = CHbSymbianVariant::NewL( &dataPtr, CHbSymbianVariant::EBinary );
       
   156 
       
   157         CleanupStack::PopAndDestroy( 2, buf );  // writeStream, buf
       
   158         }
       
   159     }
   136 
   160 
   137 // ---------------------------------------------------------------------------
   161 // ---------------------------------------------------------------------------
   138 // CSifUiPrivate::ShowProgressL()
   162 // CSifUiPrivate::ShowProgressL()
   139 // ---------------------------------------------------------------------------
   163 // ---------------------------------------------------------------------------
   140 //
   164 //
   141 void CSifUiPrivate::ShowProgressL( const Swi::CAppInfo& aAppInfo,
   165 void CSifUiPrivate::ShowProgressL( const CSifUiAppInfo& aAppInfo,
   142         TInt aAppSize, TInt aProgressBarFinalValue )
   166         TInt aProgressBarFinalValue )
   143     {
   167     {
   144     ChangeNoteTypeL( ESifUiProgressNote );
   168     ChangeNoteTypeL( ESifUiProgressNote );
   145 
   169 
   146     AddParamsAppInfoAndSizeL( aAppInfo, aAppSize );
   170     AddParamsAppInfoL( aAppInfo );
   147     AddParamL( KSifUiProgressNoteFinalValue, aProgressBarFinalValue );
   171     AddParamL( KSifUiProgressNoteFinalValue, aProgressBarFinalValue );
   148 
   172 
   149     DisplayDeviceDialogL();
   173     DisplayDeviceDialogL();
   150     }
   174     }
   151 
   175 
   167 // ---------------------------------------------------------------------------
   191 // ---------------------------------------------------------------------------
   168 //
   192 //
   169 void CSifUiPrivate::ShowCompleteL()
   193 void CSifUiPrivate::ShowCompleteL()
   170     {
   194     {
   171     ChangeNoteTypeL( ESifUiCompleteNote );
   195     ChangeNoteTypeL( ESifUiCompleteNote );
       
   196 
   172     DisplayDeviceDialogL();
   197     DisplayDeviceDialogL();
   173     User::LeaveIfError( WaitForResponse() );
   198     User::LeaveIfError( WaitForResponse() );
   174     }
   199     }
   175 
   200 
   176 // ---------------------------------------------------------------------------
   201 // ---------------------------------------------------------------------------
   224 //
   249 //
   225 void CSifUiPrivate::DataReceived( CHbSymbianVariantMap& aData )
   250 void CSifUiPrivate::DataReceived( CHbSymbianVariantMap& aData )
   226     {
   251     {
   227     const CHbSymbianVariant* selectedDriveVariant = aData.Get( KSifUiSelectedMemory );
   252     const CHbSymbianVariant* selectedDriveVariant = aData.Get( KSifUiSelectedMemory );
   228     if( selectedDriveVariant )
   253     if( selectedDriveVariant )
   229     	{
   254         {
   230 		iSelectedDrive = *( selectedDriveVariant->Value<TChar>() );
   255         iSelectedDrive = *( selectedDriveVariant->Value<TChar>() );
   231 		iSelectedDriveSet = ETrue;
   256         iSelectedDriveSet = ETrue;
   232     	}
   257         }
   233 
   258 
   234     const CHbSymbianVariant* acceptedVariant = aData.Get( KSifUiQueryAccepted );
   259     const CHbSymbianVariant* acceptedVariant = aData.Get( KSifUiQueryAccepted );
   235     if( acceptedVariant )
   260     if( acceptedVariant )
   236         {
   261         {
   237         TBool* acceptedValue = acceptedVariant->Value<TBool>();
   262         TBool* acceptedValue = acceptedVariant->Value<TBool>();
   275     iWait = new( ELeave ) CActiveSchedulerWait;
   300     iWait = new( ELeave ) CActiveSchedulerWait;
   276     // iDeviceDialog is allocated later, first call of DisplayDeviceDialogL()
   301     // iDeviceDialog is allocated later, first call of DisplayDeviceDialogL()
   277     }
   302     }
   278 
   303 
   279 // ---------------------------------------------------------------------------
   304 // ---------------------------------------------------------------------------
   280 // CSifUiPrivate::ClearParamsL()
   305 // CSifUiPrivate::ClearParams()
   281 // ---------------------------------------------------------------------------
   306 // ---------------------------------------------------------------------------
   282 //
   307 //
   283 void CSifUiPrivate::ClearParamsL()
   308 void CSifUiPrivate::ClearParams()
   284     {
   309     {
   285     if( iVariantMap )
   310     if( iVariantMap )
   286         {
   311         {
   287         delete iVariantMap;
   312         delete iVariantMap;
   288         iVariantMap = NULL;
   313         iVariantMap = NULL;
   289         }
   314         }
   290     iVariantMap = CHbSymbianVariantMap::NewL();
   315     }
       
   316 
       
   317 // ---------------------------------------------------------------------------
       
   318 // CSifUiPrivate::VariantMapL()
       
   319 // ---------------------------------------------------------------------------
       
   320 //
       
   321 CHbSymbianVariantMap* CSifUiPrivate::VariantMapL()
       
   322     {
       
   323     if( !iVariantMap )
       
   324         {
       
   325         iVariantMap = CHbSymbianVariantMap::NewL();
       
   326         }
       
   327     return iVariantMap;
   291     }
   328     }
   292 
   329 
   293 // ---------------------------------------------------------------------------
   330 // ---------------------------------------------------------------------------
   294 // CSifUiPrivate::ChangeNoteTypeL()
   331 // CSifUiPrivate::ChangeNoteTypeL()
   295 // ---------------------------------------------------------------------------
   332 // ---------------------------------------------------------------------------
   296 //
   333 //
   297 void CSifUiPrivate::ChangeNoteTypeL( TInt aType )
   334 void CSifUiPrivate::ChangeNoteTypeL( TInt aType )
   298     {
   335     {
   299     ClearParamsL();
   336     ClearParams();
   300     AddParamL( KSifUiDialogType, aType );
   337     AddParamL( KSifUiDialogType, aType );
   301     }
   338     }
   302 
   339 
   303 // ---------------------------------------------------------------------------
   340 // ---------------------------------------------------------------------------
   304 // CSifUiPrivate::AddParamL()
   341 // CSifUiPrivate::AddParamL()
   306 //
   343 //
   307 void CSifUiPrivate::AddParamL( const TDesC& aKey, TInt aValue )
   344 void CSifUiPrivate::AddParamL( const TDesC& aKey, TInt aValue )
   308     {
   345     {
   309     CHbSymbianVariant* variant = NULL;
   346     CHbSymbianVariant* variant = NULL;
   310     variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt );
   347     variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt );
   311     iVariantMap->Add( aKey, variant );
   348     User::LeaveIfError( VariantMapL()->Add( aKey, variant ) );
   312     }
   349     }
   313 
   350 
   314 // ---------------------------------------------------------------------------
   351 // ---------------------------------------------------------------------------
   315 // CSifUiPrivate::AddParamL()
   352 // CSifUiPrivate::AddParamL()
   316 // ---------------------------------------------------------------------------
   353 // ---------------------------------------------------------------------------
   317 //
   354 //
   318 void CSifUiPrivate::AddParamL( const TDesC& aKey, const TDesC& aValue )
   355 void CSifUiPrivate::AddParamL( const TDesC& aKey, const TDesC& aValue )
   319     {
   356     {
   320     CHbSymbianVariant* variant = NULL;
   357     CHbSymbianVariant* variant = NULL;
   321     variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes );
   358     variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes );
   322     iVariantMap->Add( aKey, variant );
   359     User::LeaveIfError( VariantMapL()->Add( aKey, variant ) );
   323     }
   360     }
   324 
   361 
   325 // ---------------------------------------------------------------------------
   362 // ---------------------------------------------------------------------------
   326 // CSifUiPrivate::AddParamListL()
   363 // CSifUiPrivate::AddParamListL()
   327 // ---------------------------------------------------------------------------
   364 // ---------------------------------------------------------------------------
   328 //
   365 //
   329 void CSifUiPrivate::AddParamListL( const TDesC& aKey, const MDesCArray& aList )
   366 void CSifUiPrivate::AddParamListL( const TDesC& aKey, const MDesCArray& aList )
   330     {
   367     {
   331     CHbSymbianVariant* variant = NULL;
   368     CHbSymbianVariant* variant = NULL;
   332     variant = CHbSymbianVariant::NewL( &aList, CHbSymbianVariant::EDesArray );
   369     variant = CHbSymbianVariant::NewL( &aList, CHbSymbianVariant::EDesArray );
   333     iVariantMap->Add( aKey, variant );
   370     User::LeaveIfError( VariantMapL()->Add( aKey, variant ) );
   334     }
   371     }
   335 
   372 
   336 // ---------------------------------------------------------------------------
   373 // ---------------------------------------------------------------------------
   337 // CSifUiPrivate::AddParamsAppInfoAndSizeL()
   374 // CSifUiPrivate::AddParamsAppInfoL()
   338 // ---------------------------------------------------------------------------
   375 // ---------------------------------------------------------------------------
   339 //
   376 //
   340 void CSifUiPrivate::AddParamsAppInfoAndSizeL( const Swi::CAppInfo& aAppInfo, TInt aAppSize )
   377 void CSifUiPrivate::AddParamsAppInfoL( const CSifUiAppInfo& aAppInfo )
   341     {
   378     {
   342     AddParamL( KSifUiApplicationName, aAppInfo.AppName() );
   379     // TODO: icons missing, could use binary transfer as in certificates
   343     const TVersion& version( aAppInfo.AppVersion() );
   380     AddParamL( KSifUiApplicationName, aAppInfo.Name() );
       
   381     const TVersion& version( aAppInfo.Version() );
   344     if( version.iBuild || version.iMajor || version.iMinor )
   382     if( version.iBuild || version.iMajor || version.iMinor )
   345         {
   383         {
   346         AddParamL( KSifUiApplicationVersion, version.Name() );
   384         AddParamL( KSifUiApplicationVersion, version.Name() );
   347         }
   385         }
   348     if( aAppInfo.AppVendor().Length() )
   386     if( aAppInfo.Vendor().Length() )
   349         {
   387         {
   350         AddParamL( KSifUiApplicationDetails, aAppInfo.AppVendor() );
   388         AddParamL( KSifUiApplicationDetails, aAppInfo.Vendor() );
   351         }
   389         }
   352     if( aAppSize > 0 )
   390     if( aAppInfo.Size() > 0 )
   353         {
   391         {
   354         AddParamL( KSifUiApplicationSize, aAppSize );
   392         AddParamL( KSifUiApplicationSize, aAppInfo.Size() );
   355         }
   393         }
   356     }
   394     }
   357 
   395 
   358 // ---------------------------------------------------------------------------
   396 // ---------------------------------------------------------------------------
   359 // CSifUiPrivate::AddParamsIconL()
   397 // CSifUiPrivate::AddParamsIconL()
   360 // ---------------------------------------------------------------------------
   398 // ---------------------------------------------------------------------------
   361 //
   399 //
   362 void CSifUiPrivate::AddParamsIconL( const CApaMaskedBitmap* aIcon )
   400 void CSifUiPrivate::AddParamsIconL( const CApaMaskedBitmap* aIcon )
   363     {
   401     {
       
   402     // TODO: remove this function
   364     if( aIcon )
   403     if( aIcon )
   365         {
   404         {
   366         if( iBitmap )
   405         if( iBitmap )
   367             {
   406             {
   368             delete iBitmap;
   407             delete iBitmap;
   369             iBitmap = NULL;
   408             iBitmap = NULL;
   370             }
   409             }
   371         iBitmap = CApaMaskedBitmap::NewL( aIcon );
   410         iBitmap = CApaMaskedBitmap::NewL( aIcon );
   372 
   411 
       
   412         CHbSymbianVariantMap* map = VariantMapL();
   373         CHbSymbianVariant* variant = NULL;
   413         CHbSymbianVariant* variant = NULL;
   374         TInt bitmapHandle = iBitmap->Handle();
   414         TInt bitmapHandle = iBitmap->Handle();
   375         variant = CHbSymbianVariant::NewL( &bitmapHandle, CHbSymbianVariant::EInt );
   415         variant = CHbSymbianVariant::NewL( &bitmapHandle, CHbSymbianVariant::EInt );
   376         iVariantMap->Add( KSifUiApplicationIconHandle, variant );
   416         User::LeaveIfError( map->Add( KSifUiApplicationIconHandle, variant ) );
   377         TInt bitmapMaskHandle = iBitmap->Mask()->Handle();
   417         TInt bitmapMaskHandle = iBitmap->Mask()->Handle();
   378         variant = CHbSymbianVariant::NewL( &bitmapMaskHandle, CHbSymbianVariant::EInt );
   418         variant = CHbSymbianVariant::NewL( &bitmapMaskHandle, CHbSymbianVariant::EInt );
   379         iVariantMap->Add( KSifUiApplicationIconMaskHandle, variant );
   419         User::LeaveIfError( map->Add( KSifUiApplicationIconMaskHandle, variant ) );
   380         }
   420         }
   381     }
       
   382 
       
   383 // ---------------------------------------------------------------------------
       
   384 // CSifUiPrivate::AddParamsCertificatesL()
       
   385 // ---------------------------------------------------------------------------
       
   386 //
       
   387 void CSifUiPrivate::AddParamsCertificatesL( const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )
       
   388     {
       
   389     // TODO: implement
       
   390     }
   421     }
   391 
   422 
   392 // ---------------------------------------------------------------------------
   423 // ---------------------------------------------------------------------------
   393 // CSifUiPrivate::DisplayDeviceDialogL()
   424 // CSifUiPrivate::DisplayDeviceDialogL()
   394 // ---------------------------------------------------------------------------
   425 // ---------------------------------------------------------------------------
   395 //
   426 //
   396 void CSifUiPrivate::DisplayDeviceDialogL()
   427 void CSifUiPrivate::DisplayDeviceDialogL()
   397     {
   428     {
   398     if( iDeviceDialog && iIsDisplayingDialog )
   429     if( iDeviceDialog && iIsDisplayingDialog )
   399         {
   430         {
   400         iDeviceDialog->Update( *iVariantMap );
   431         User::LeaveIfError( iDeviceDialog->Update( *VariantMapL() ) );
   401         }
   432         }
   402     else
   433     else
   403         {
   434         {
   404         if( !iDeviceDialog )
   435         if( !iDeviceDialog )
   405             {
   436             {
   406             iDeviceDialog = CHbDeviceDialogSymbian::NewL();
   437             iDeviceDialog = CHbDeviceDialogSymbian::NewL();
   407             }
   438             }
   408         iDeviceDialog->Show( KSifUiDeviceDialog, *iVariantMap, this );
   439         User::LeaveIfError( iDeviceDialog->Show( KSifUiDeviceDialog, *VariantMapL(), this ) );
   409         iIsDisplayingDialog = ETrue;
   440         iIsDisplayingDialog = ETrue;
   410         }
   441         }
   411     }
   442     }
   412 
   443 
   413 // ---------------------------------------------------------------------------
   444 // ---------------------------------------------------------------------------