appinstall_plat/sifui_api/src/sifui.cpp
changeset 25 98b66e4fb0be
child 29 26b6f0522fd8
equal deleted inserted replaced
24:84a16765cd86 25:98b66e4fb0be
       
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Implementation of RSifUiCli class.
       
    15 *
       
    16 */
       
    17 
       
    18 #include "sifui.h"                              // CSifUi
       
    19 #include "sifuidefs.h"                          // SIF UI device dialog parameters
       
    20 #include <hb/hbcore/hbsymbiandevicedialog.h>    // CHbDeviceDialog
       
    21 #include <hb/hbcore/hbsymbianvariant.h>         // CHbSymbianVariantMap
       
    22 #include <swi/msisuihandlers.h>                 // Swi::CAppInfo
       
    23 #include <apgicnfl.h>                           // CApaMaskedBitmap
       
    24 
       
    25 
       
    26 // ======== MEMBER FUNCTIONS ========
       
    27 
       
    28 // ---------------------------------------------------------------------------
       
    29 // CSifUi::NewLC()
       
    30 // ---------------------------------------------------------------------------
       
    31 //
       
    32 EXPORT_C CSifUi* CSifUi::NewLC()
       
    33     {
       
    34     CSifUi* self = new( ELeave ) CSifUi();
       
    35     CleanupStack::PushL( self );
       
    36     self->ConstructL();
       
    37     return self;
       
    38     }
       
    39 
       
    40 // ---------------------------------------------------------------------------
       
    41 // CSifUi::NewL()
       
    42 // ---------------------------------------------------------------------------
       
    43 //
       
    44 EXPORT_C CSifUi* CSifUi::NewL()
       
    45     {
       
    46     CSifUi* self = CSifUi::NewLC();
       
    47     CleanupStack::Pop( self );
       
    48     return self;
       
    49     }
       
    50 
       
    51 // ---------------------------------------------------------------------------
       
    52 // CSifUi::~CSifUi()
       
    53 // ---------------------------------------------------------------------------
       
    54 //
       
    55 CSifUi::~CSifUi()
       
    56     {
       
    57     Cancel();
       
    58     delete iWait;
       
    59     delete iDeviceDialog;
       
    60     delete iVariantMap;
       
    61     delete iBitmap;
       
    62     }
       
    63 
       
    64 // ---------------------------------------------------------------------------
       
    65 // CSifUi::SetMode()
       
    66 // ---------------------------------------------------------------------------
       
    67 //
       
    68 EXPORT_C void CSifUi::SetMode( TMode aMode )
       
    69     {
       
    70     iMode = aMode;
       
    71     }
       
    72 
       
    73 // ---------------------------------------------------------------------------
       
    74 // CSifUi::Mode()
       
    75 // ---------------------------------------------------------------------------
       
    76 //
       
    77 EXPORT_C CSifUi::TMode CSifUi::Mode()
       
    78     {
       
    79     return iMode;
       
    80     }
       
    81 
       
    82 // ---------------------------------------------------------------------------
       
    83 // CSifUi::ShowConfirmationL()
       
    84 // ---------------------------------------------------------------------------
       
    85 //
       
    86 EXPORT_C TBool CSifUi::ShowConfirmationL( const Swi::CAppInfo& aAppInfo,
       
    87         TInt aAppSize, const CApaMaskedBitmap* aAppIcon,
       
    88         const RPointerArray<Swi::CCertificateInfo>& aCertificates )
       
    89     {
       
    90     ChangeNoteTypeL( ESifUiConfirmationQuery );
       
    91 
       
    92     AddParamsAppInfoAndSizeL( aAppInfo, aAppSize );
       
    93     if( aAppIcon )
       
    94         {
       
    95         AddParamsIconL( aAppIcon );
       
    96         }
       
    97     if( aCertificates.Count() )
       
    98         {
       
    99         AddParamsCertificatesL( aCertificates );
       
   100         }
       
   101 
       
   102     // TODO: send drive list for drive selection, get selected drive
       
   103     AddParamL( KSifUiMemorySelection, ETrue );
       
   104 
       
   105     DisplayDeviceDialogL();
       
   106     User::LeaveIfError( WaitForResponse() );
       
   107     return( iReturnValue == KErrNone );
       
   108     }
       
   109 
       
   110 // ---------------------------------------------------------------------------
       
   111 // CSifUi::ShowProgressL()
       
   112 // ---------------------------------------------------------------------------
       
   113 //
       
   114 EXPORT_C void CSifUi::ShowProgressL( const Swi::CAppInfo& aAppInfo,
       
   115         TInt aAppSize, TInt aProgressBarFinalValue )
       
   116     {
       
   117     ChangeNoteTypeL( ESifUiProgressNote );
       
   118 
       
   119     AddParamsAppInfoAndSizeL( aAppInfo, aAppSize );
       
   120     AddParamL( KSifUiProgressNoteFinalValue, aProgressBarFinalValue );
       
   121 
       
   122     DisplayDeviceDialogL();
       
   123     }
       
   124 
       
   125 // ---------------------------------------------------------------------------
       
   126 // CSifUi::IncreaseProgressBarValueL()
       
   127 // ---------------------------------------------------------------------------
       
   128 //
       
   129 EXPORT_C void CSifUi::IncreaseProgressBarValueL( TInt aNewValue )
       
   130     {
       
   131     ChangeNoteTypeL( ESifUiProgressNote );
       
   132 
       
   133     AddParamL( KSifUiProgressNoteValue, aNewValue );
       
   134 
       
   135     DisplayDeviceDialogL();
       
   136     }
       
   137 
       
   138 // ---------------------------------------------------------------------------
       
   139 // CSifUi::ShowCompleteL()
       
   140 // ---------------------------------------------------------------------------
       
   141 //
       
   142 EXPORT_C void CSifUi::ShowCompleteL()
       
   143     {
       
   144     ChangeNoteTypeL( ESifUiCompleteNote );
       
   145     DisplayDeviceDialogL();
       
   146     User::LeaveIfError( WaitForResponse() );
       
   147     }
       
   148 
       
   149 // ---------------------------------------------------------------------------
       
   150 // CSifUi::ShowFailedL()
       
   151 // ---------------------------------------------------------------------------
       
   152 //
       
   153 EXPORT_C void CSifUi::ShowFailedL( TInt aErrorCode )
       
   154     {
       
   155     ChangeNoteTypeL( ESifUiErrorNote );
       
   156 
       
   157     AddParamL( KSifUiErrorCode, aErrorCode );
       
   158 
       
   159     DisplayDeviceDialogL();
       
   160     User::LeaveIfError( WaitForResponse() );
       
   161     }
       
   162 
       
   163 // ---------------------------------------------------------------------------
       
   164 // CSifUi::DoCancel()
       
   165 // ---------------------------------------------------------------------------
       
   166 //
       
   167 void CSifUi::DoCancel()
       
   168     {
       
   169     if( iWait && iWait->IsStarted() && iWait->CanStopNow() )
       
   170         {
       
   171         iCompletionCode = KErrCancel;
       
   172         iWait->AsyncStop();
       
   173         }
       
   174     }
       
   175 
       
   176 // ---------------------------------------------------------------------------
       
   177 // CSifUi::RunL()
       
   178 // ---------------------------------------------------------------------------
       
   179 //
       
   180 void CSifUi::RunL()
       
   181     {
       
   182     if( iWait )
       
   183         {
       
   184         iWait->AsyncStop();
       
   185         }
       
   186     }
       
   187 
       
   188 // ---------------------------------------------------------------------------
       
   189 // CSifUi::DataReceived()
       
   190 // ---------------------------------------------------------------------------
       
   191 //
       
   192 void CSifUi::DataReceived( CHbSymbianVariantMap& aData )
       
   193     {
       
   194     const CHbSymbianVariant* acceptedVariant = aData.Get( KSifUiQueryAccepted );
       
   195     if( acceptedVariant )
       
   196         {
       
   197         TBool* acceptedValue = acceptedVariant->Value<TBool>();
       
   198         if( acceptedValue && *acceptedValue )
       
   199             {
       
   200             iReturnValue = KErrNone;
       
   201             }
       
   202         else
       
   203             {
       
   204             iReturnValue = KErrCancel;
       
   205             }
       
   206         ResponseReceived( KErrNone );
       
   207         }
       
   208     }
       
   209 
       
   210 // ---------------------------------------------------------------------------
       
   211 // CSifUi::DeviceDialogClosed()
       
   212 // ---------------------------------------------------------------------------
       
   213 //
       
   214 void CSifUi::DeviceDialogClosed( TInt aCompletionCode )
       
   215     {
       
   216     iIsDisplayingDialog = EFalse;
       
   217     ResponseReceived( aCompletionCode );
       
   218     }
       
   219 
       
   220 // ---------------------------------------------------------------------------
       
   221 // CSifUi::CSifUi()
       
   222 // ---------------------------------------------------------------------------
       
   223 //
       
   224 CSifUi::CSifUi() : CActive( CActive::EPriorityStandard )
       
   225     {
       
   226     CActiveScheduler::Add( this );
       
   227     }
       
   228 
       
   229 // ---------------------------------------------------------------------------
       
   230 // CSifUi::ConstructL()
       
   231 // ---------------------------------------------------------------------------
       
   232 //
       
   233 void CSifUi::ConstructL()
       
   234     {
       
   235     iWait = new( ELeave ) CActiveSchedulerWait;
       
   236     // iDeviceDialog is allocated later, first call of DisplayDeviceDialogL()
       
   237     }
       
   238 
       
   239 // ---------------------------------------------------------------------------
       
   240 // CSifUi::ClearParamsL()
       
   241 // ---------------------------------------------------------------------------
       
   242 //
       
   243 void CSifUi::ClearParamsL()
       
   244     {
       
   245     if( iVariantMap )
       
   246         {
       
   247         delete iVariantMap;
       
   248         iVariantMap = NULL;
       
   249         }
       
   250     iVariantMap = CHbSymbianVariantMap::NewL();
       
   251     }
       
   252 
       
   253 // ---------------------------------------------------------------------------
       
   254 // CSifUi::ChangeNoteTypeL()
       
   255 // ---------------------------------------------------------------------------
       
   256 //
       
   257 void CSifUi::ChangeNoteTypeL( TInt aType )
       
   258     {
       
   259     ClearParamsL();
       
   260     AddParamL( KSifUiDialogType, aType );
       
   261     AddParamL( KSifUiDialogMode, iMode );
       
   262     }
       
   263 
       
   264 // ---------------------------------------------------------------------------
       
   265 // CSifUi::AddParamL()
       
   266 // ---------------------------------------------------------------------------
       
   267 //
       
   268 void CSifUi::AddParamL( const TDesC& aKey, TInt aValue )
       
   269     {
       
   270     CHbSymbianVariant* variant = NULL;
       
   271     variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EInt );
       
   272     iVariantMap->Add( aKey, variant );
       
   273     }
       
   274 
       
   275 // ---------------------------------------------------------------------------
       
   276 // CSifUi::AddParamL()
       
   277 // ---------------------------------------------------------------------------
       
   278 //
       
   279 void CSifUi::AddParamL( const TDesC& aKey, const TDesC& aValue )
       
   280     {
       
   281     CHbSymbianVariant* variant = NULL;
       
   282     variant = CHbSymbianVariant::NewL( &aValue, CHbSymbianVariant::EDes );
       
   283     iVariantMap->Add( aKey, variant );
       
   284     }
       
   285 
       
   286 // ---------------------------------------------------------------------------
       
   287 // CSifUi::AddParamsAppInfoAndSizeL()
       
   288 // ---------------------------------------------------------------------------
       
   289 //
       
   290 void CSifUi::AddParamsAppInfoAndSizeL( const Swi::CAppInfo& aAppInfo, TInt aAppSize )
       
   291     {
       
   292     AddParamL( KSifUiApplicationName, aAppInfo.AppName() );
       
   293     const TVersion& version( aAppInfo.AppVersion() );
       
   294     if( version.iBuild || version.iMajor || version.iMinor )
       
   295         {
       
   296         AddParamL( KSifUiApplicationVersion, version.Name() );
       
   297         }
       
   298     if( aAppInfo.AppVendor().Length() )
       
   299         {
       
   300         AddParamL( KSifUiApplicationDetails, aAppInfo.AppVendor() );
       
   301         }
       
   302     if( aAppSize > 0 )
       
   303         {
       
   304         AddParamL( KSifUiApplicationSize, aAppSize );
       
   305         }
       
   306     }
       
   307 
       
   308 // ---------------------------------------------------------------------------
       
   309 // CSifUi::AddParamsIconL()
       
   310 // ---------------------------------------------------------------------------
       
   311 //
       
   312 void CSifUi::AddParamsIconL( const CApaMaskedBitmap* aIcon )
       
   313     {
       
   314     if( aIcon )
       
   315         {
       
   316         if( iBitmap )
       
   317             {
       
   318             delete iBitmap;
       
   319             iBitmap = NULL;
       
   320             }
       
   321         iBitmap = CApaMaskedBitmap::NewL( aIcon );
       
   322 
       
   323         CHbSymbianVariant* variant = NULL;
       
   324         TInt bitmapHandle = iBitmap->Handle();
       
   325         variant = CHbSymbianVariant::NewL( &bitmapHandle, CHbSymbianVariant::EInt );
       
   326         iVariantMap->Add( KSifUiApplicationIconHandle, variant );
       
   327         TInt bitmapMaskHandle = iBitmap->Mask()->Handle();
       
   328         variant = CHbSymbianVariant::NewL( &bitmapMaskHandle, CHbSymbianVariant::EInt );
       
   329         iVariantMap->Add( KSifUiApplicationIconMaskHandle, variant );
       
   330         }
       
   331     }
       
   332 
       
   333 // ---------------------------------------------------------------------------
       
   334 // CSifUi::AddParamsCertificatesL()
       
   335 // ---------------------------------------------------------------------------
       
   336 //
       
   337 void CSifUi::AddParamsCertificatesL( const RPointerArray<Swi::CCertificateInfo>& /*aCertificates*/ )
       
   338     {
       
   339     // TODO: implement
       
   340     }
       
   341 
       
   342 // ---------------------------------------------------------------------------
       
   343 // CSifUi::DisplayDeviceDialogL()
       
   344 // ---------------------------------------------------------------------------
       
   345 //
       
   346 void CSifUi::DisplayDeviceDialogL()
       
   347     {
       
   348     if( iDeviceDialog && iIsDisplayingDialog )
       
   349         {
       
   350         iDeviceDialog->Update( *iVariantMap );
       
   351         }
       
   352     else
       
   353         {
       
   354         if( !iDeviceDialog )
       
   355             {
       
   356             iDeviceDialog = CHbDeviceDialog::NewL();
       
   357             }
       
   358         iDeviceDialog->Show( KSifUiDeviceDialog, *iVariantMap, this );
       
   359         iIsDisplayingDialog = ETrue;
       
   360         }
       
   361     }
       
   362 
       
   363 // ---------------------------------------------------------------------------
       
   364 // CSifUi::WaitForResponse()
       
   365 // ---------------------------------------------------------------------------
       
   366 //
       
   367 TInt CSifUi::WaitForResponse()
       
   368     {
       
   369     iCompletionCode = KErrInUse;
       
   370     iReturnValue = KErrUnknown;
       
   371     if( !IsActive() && iWait && !iWait->IsStarted() )
       
   372         {
       
   373         iStatus = KRequestPending;
       
   374         SetActive();
       
   375         iWait->Start();
       
   376         }
       
   377     return iCompletionCode;
       
   378     }
       
   379 
       
   380 // ---------------------------------------------------------------------------
       
   381 // CSifUi::ResponseReceived()
       
   382 // ---------------------------------------------------------------------------
       
   383 //
       
   384 void CSifUi::ResponseReceived( TInt aCompletionCode )
       
   385     {
       
   386     if( IsActive() )
       
   387         {
       
   388         iCompletionCode = aCompletionCode;
       
   389         TRequestStatus* status( &iStatus );
       
   390         User::RequestComplete( status, KErrNone );
       
   391         }
       
   392     }
       
   393