javamanager/javasettings/appmngrplugin/src/appmngr2midletpackageinfo.cpp
branchRCL_3
changeset 14 04becd199f91
equal deleted inserted replaced
13:f5050f1da672 14:04becd199f91
       
     1 /*
       
     2 * Copyright (c) 2008 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:  MidletPackageInfo implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <eikenv.h>                     // CEikonEnv
       
    20 #include <DRMHelper.h>                  // ContentAccess
       
    21 #include <browserlauncher.h>            // CBrowserLauncher
       
    22 #include <StringLoader.h>               // StringLoader
       
    23 
       
    24 #include <appmngr2driveutils.h>         // TAppMngr2DriveUtils
       
    25 #include <appmngr2drmutils.h>           // TAppMngr2DRMUtils
       
    26 #include <appmngr2common.hrh>           // Command IDs
       
    27 #include <javaapplicationsettings.rsg>           // Midlet resource IDs
       
    28 
       
    29 #include "appmngr2midletpackageinfo.h"  // CAppMngr2MidletPackageInfo
       
    30 #include "appmngr2midletruntime.h"      // KAppMngr2MidletUid
       
    31 #include "javaapplicationsettings.hrh"           // Midlet command IDs
       
    32 #include "appmngr2midletinfoiterator.h" // CAppMngr2MidletInfoIterator
       
    33 
       
    34 #include "appmngr2midletmanifestreader.h"
       
    35 #include "appmngr2midletresourcehandler.h" // CAppMngr2MidletResourceHandler
       
    36 
       
    37 #include "logger.h"                     // LOG
       
    38 
       
    39 // Empty string
       
    40 _LIT(KEmptyString, "");
       
    41 
       
    42 // Parameter that is passed to command line when launching Browser.
       
    43 // 4 - Start/Continue the browser specifying a URL
       
    44 _LIT(KBrowserStartContinueParam, "4 ");
       
    45 
       
    46 // Icon 0: KAknsIIDQgnMenuAmMidlet - from CAppMngr2MidletRuntime::LoadIconsL()
       
    47 const TUint KMidletIconId = 0;
       
    48 
       
    49 void CleanUpResetAndDestroy(TAny *aArray)
       
    50 {
       
    51     if (aArray)
       
    52     {
       
    53         RPointerArray<HBufC>* array=(RPointerArray<HBufC>*)aArray;
       
    54         array->ResetAndDestroy();
       
    55         array->Close();
       
    56     }
       
    57 }
       
    58 
       
    59 
       
    60 // ======== MEMBER FUNCTIONS ========
       
    61 
       
    62 // ---------------------------------------------------------------------------
       
    63 // CAppMngr2MidletPackageInfo::NewL()
       
    64 // ---------------------------------------------------------------------------
       
    65 //
       
    66 CAppMngr2MidletPackageInfo* CAppMngr2MidletPackageInfo::NewL(
       
    67     CAppMngr2Runtime& aRuntime,
       
    68     const TDesC& aJadFileName,
       
    69     const TDesC& aJarFileName,
       
    70     RFs& aFs,
       
    71     CAppMngr2MidletResourceHandler& aResourceHandler)
       
    72 {
       
    73     CAppMngr2MidletPackageInfo* self = CAppMngr2MidletPackageInfo::NewLC(
       
    74                                            aRuntime, aJadFileName, aJarFileName, aFs, aResourceHandler);
       
    75     CleanupStack::Pop(self);
       
    76     return self;
       
    77 }
       
    78 
       
    79 // ---------------------------------------------------------------------------
       
    80 // CAppMngr2MidletPackageInfo::NewLC()
       
    81 // ---------------------------------------------------------------------------
       
    82 //
       
    83 CAppMngr2MidletPackageInfo* CAppMngr2MidletPackageInfo::NewLC(
       
    84     CAppMngr2Runtime& aRuntime,
       
    85     const TDesC& aJadFileName,
       
    86     const TDesC& aJarFileName,
       
    87     RFs& aFs,
       
    88     CAppMngr2MidletResourceHandler& aResourceHandler)
       
    89 {
       
    90     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::NewLC ");
       
    91     CAppMngr2MidletPackageInfo* self
       
    92     = new(ELeave) CAppMngr2MidletPackageInfo(aRuntime, aFs, aResourceHandler);
       
    93     CleanupStack::PushL(self);
       
    94     self->ConstructL(aJadFileName, aJarFileName);
       
    95     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::NewLC ");
       
    96     return self;
       
    97 }
       
    98 
       
    99 // ---------------------------------------------------------------------------
       
   100 // CAppMngr2MidletPackageInfo::~CAppMngr2MidletPackageInfo()
       
   101 // ---------------------------------------------------------------------------
       
   102 //
       
   103 CAppMngr2MidletPackageInfo::~CAppMngr2MidletPackageInfo()
       
   104 {
       
   105     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::~CAppMngr2MidletPackageInfo ");
       
   106     CancelCommand();
       
   107     delete iName;
       
   108     iName = NULL;
       
   109     delete iDetails;
       
   110     iDetails = NULL;
       
   111     delete iFileName;
       
   112     iFileName = NULL;
       
   113     delete iJadFileName;
       
   114     iJadFileName = NULL;
       
   115     delete iJarFileName;
       
   116     iJarFileName = NULL;
       
   117     delete iMimeType;
       
   118     iMimeType = NULL;
       
   119     delete iInfoIterator;
       
   120     iInfoIterator = NULL;
       
   121     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::~CAppMngr2MidletPackageInfo ");
       
   122 }
       
   123 
       
   124 // ---------------------------------------------------------------------------
       
   125 // CAppMngr2MidletPackageInfo::IconIndex()
       
   126 // ---------------------------------------------------------------------------
       
   127 //
       
   128 TInt CAppMngr2MidletPackageInfo::IconIndex() const
       
   129 {
       
   130     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::IconIndex ");
       
   131     return KMidletIconId;
       
   132 }
       
   133 
       
   134 // ---------------------------------------------------------------------------
       
   135 // CAppMngr2MidletPackageInfo::Name()
       
   136 // ---------------------------------------------------------------------------
       
   137 //
       
   138 const TDesC& CAppMngr2MidletPackageInfo::Name() const
       
   139 {
       
   140     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::Name ");
       
   141     if (iName)
       
   142     {
       
   143         return *iName;
       
   144     }
       
   145     return KNullDesC;
       
   146 }
       
   147 
       
   148 // ---------------------------------------------------------------------------
       
   149 // CAppMngr2MidletPackageInfo::Details()
       
   150 // ---------------------------------------------------------------------------
       
   151 //
       
   152 const TDesC& CAppMngr2MidletPackageInfo::Details() const
       
   153 {
       
   154     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::Details ");
       
   155     if (iDetails)
       
   156     {
       
   157         return *iDetails;
       
   158     }
       
   159     return KNullDesC;
       
   160 }
       
   161 
       
   162 // ---------------------------------------------------------------------------
       
   163 // CAppMngr2MidletPackageInfo::IndicatorIconIndex()
       
   164 // ---------------------------------------------------------------------------
       
   165 //
       
   166 TInt CAppMngr2MidletPackageInfo::IndicatorIconIndex() const
       
   167 {
       
   168     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::IndicatorIconIndex ");
       
   169     if (iLocation == EAppMngr2LocationMemoryCard)
       
   170     {
       
   171         return EAppMngr2IconQgnIndiAmInstMmcAdd;
       
   172     }
       
   173     else if (iLocation == EAppMngr2LocationMassStorage)
       
   174     {
       
   175         return EAppMngr2IconQgnIndiFmgrMsAdd;
       
   176     }
       
   177     return EAppMngr2NoIndicatorIcon;
       
   178 }
       
   179 
       
   180 // ---------------------------------------------------------------------------
       
   181 // CAppMngr2MidletPackageInfo::GetMenuItemsL()
       
   182 // ---------------------------------------------------------------------------
       
   183 //
       
   184 void CAppMngr2MidletPackageInfo::GetMenuItemsL(
       
   185     RPointerArray<CEikMenuPaneItem::SData>& aMenuCmds)
       
   186 {
       
   187     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::GetMenuItemsL ");
       
   188     TInt resourceOffset = 0;
       
   189     if (InfoIteratorL().GetInfoUrlL() != KEmptyString)
       
   190     {
       
   191         CEikMenuPaneItem::SData* menuItemData = new(ELeave) CEikMenuPaneItem::SData;
       
   192         CleanupStack::PushL(menuItemData);
       
   193         resourceOffset = iResourceHandler.AddResourceFileL();
       
   194         ReadMenuItemDataFromResourceL(MIDLET_GOTO_URL_MENU_ITEM, *menuItemData);
       
   195         if (resourceOffset > 0)
       
   196         {
       
   197             iResourceHandler.DeleteResourceFile(resourceOffset);
       
   198         }
       
   199         aMenuCmds.AppendL(menuItemData);
       
   200         CleanupStack::Pop(menuItemData);
       
   201     }
       
   202 
       
   203     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::GetMenuItemsL ");
       
   204 }
       
   205 
       
   206 // ---------------------------------------------------------------------------
       
   207 // CAppMngr2MidletPackageInfo::SupportsGenericCommand()
       
   208 // ---------------------------------------------------------------------------
       
   209 //
       
   210 TBool CAppMngr2MidletPackageInfo::SupportsGenericCommand(TInt /*aCmdId*/)
       
   211 {
       
   212     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::SupportsGenericCommand ");
       
   213     return ETrue;
       
   214 }
       
   215 
       
   216 // ---------------------------------------------------------------------------
       
   217 // CAppMngr2MidletPackageInfo::HandleCommandL()
       
   218 // ---------------------------------------------------------------------------
       
   219 //
       
   220 void CAppMngr2MidletPackageInfo::HandleCommandL(TInt aCommandId, TRequestStatus& aStatus)
       
   221 {
       
   222     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::HandleCommandL ");
       
   223     switch (aCommandId)
       
   224     {
       
   225     case EAppMngr2CmdRemove :
       
   226     {
       
   227         TInt ret(KErrNone);
       
   228         if (ShowDeleteConfirmationQueryL())
       
   229         {
       
   230             RemoveL();
       
   231         }
       
   232         else
       
   233         {
       
   234             ret = KErrGeneral;
       
   235         }
       
   236         TRequestStatus* status = &aStatus;
       
   237         User::RequestComplete(status, ret);
       
   238         break;
       
   239     }
       
   240     case EAppMngr2CmdInstall :
       
   241     {
       
   242         InstallL(aStatus);
       
   243         break;
       
   244     }
       
   245     case EAppMngr2CmdViewDetails:
       
   246     {
       
   247         ShowDetailsL();
       
   248         TRequestStatus* status = &aStatus;
       
   249         User::RequestComplete(status, KErrNone);
       
   250         break;
       
   251     }
       
   252     case EAppMngrCmdGoToUrl:
       
   253     {
       
   254         ShowInfoUrlL();
       
   255         TRequestStatus* status = &aStatus;
       
   256         User::RequestComplete(status, KErrNone);
       
   257         break;
       
   258     }
       
   259     default:
       
   260     {
       
   261         // Uknown command
       
   262         TRequestStatus* status = &aStatus;
       
   263         User::RequestComplete(status, KErrNotSupported);
       
   264         break;
       
   265     }
       
   266     }
       
   267 
       
   268     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::HandleCommandL ");
       
   269 }
       
   270 
       
   271 // ---------------------------------------------------------------------------
       
   272 // CAppMngr2MidletPackageInfo::HandleCommandResultL()
       
   273 // ---------------------------------------------------------------------------
       
   274 //
       
   275 void CAppMngr2MidletPackageInfo::HandleCommandResultL(TInt /*aStatus*/)
       
   276 {
       
   277     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::HandleCommandResultL ");
       
   278     // iSWInstLauncher is the only thing that can be ongoing
       
   279     if (iSWInstLauncher)
       
   280     {
       
   281         iSWInstLauncher->Close();
       
   282         delete iSWInstLauncher;
       
   283         iSWInstLauncher = NULL;
       
   284     }
       
   285 
       
   286     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::HandleCommandResultL ");
       
   287 }
       
   288 
       
   289 // ---------------------------------------------------------------------------
       
   290 // CAppMngr2MidletPackageInfo::CancelCommandL()
       
   291 // ---------------------------------------------------------------------------
       
   292 //
       
   293 void CAppMngr2MidletPackageInfo::CancelCommand()
       
   294 {
       
   295     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::CancelCommand ");
       
   296     if (iSWInstLauncher)
       
   297     {
       
   298         iSWInstLauncher->CancelAsyncRequest(SwiUI::ERequestInstall);
       
   299         iSWInstLauncher->Close();
       
   300         delete iSWInstLauncher;
       
   301         iSWInstLauncher = NULL;
       
   302     }
       
   303     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::CancelCommand ");
       
   304 }
       
   305 
       
   306 // -----------------------------------------------------------------------------
       
   307 // CAppMngr2MidletPackageInfo::HandleContentL()
       
   308 // -----------------------------------------------------------------------------
       
   309 //
       
   310 TBool CAppMngr2MidletPackageInfo::HandleContentL(const TDesC& /*aFileName*/,
       
   311         const CAiwGenericParamList& /*aParamList*/,
       
   312         TBool& /*aContinue */)
       
   313 {
       
   314     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::HandleContentL ");
       
   315     return EFalse;
       
   316 }
       
   317 
       
   318 // -----------------------------------------------------------------------------
       
   319 // CAppMngr2MidletPackageInfo::HandleDownloadedContentHandlerReserved1()
       
   320 // -----------------------------------------------------------------------------
       
   321 //
       
   322 TAny* CAppMngr2MidletPackageInfo::DownloadedContentHandlerReserved1(
       
   323     TAny* /*aAnyParam*/)
       
   324 {
       
   325     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngrMidletPackageInfo::DownloadedContentHandlerReserved1 ");
       
   326     return NULL;
       
   327 }
       
   328 
       
   329 // ---------------------------------------------------------------------------
       
   330 // CAppMngr2MidletPackageInfo::JadFileName()
       
   331 // ---------------------------------------------------------------------------
       
   332 //
       
   333 const TDesC& CAppMngr2MidletPackageInfo::JadFileName() const
       
   334 {
       
   335     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::JadFileName ");
       
   336     if (iJadFileName)
       
   337     {
       
   338         return *iJadFileName;
       
   339     }
       
   340     return KNullDesC;
       
   341 }
       
   342 
       
   343 // ---------------------------------------------------------------------------
       
   344 // CAppMngr2MidletPackageInfo::JarFileName()
       
   345 // ---------------------------------------------------------------------------
       
   346 //
       
   347 const TDesC& CAppMngr2MidletPackageInfo::JarFileName() const
       
   348 {
       
   349     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::JarFileName ");
       
   350     if (iJarFileName)
       
   351     {
       
   352         return *iJarFileName;
       
   353     }
       
   354     return KNullDesC;
       
   355 }
       
   356 
       
   357 // ---------------------------------------------------------------------------
       
   358 // CAppMngr2MidletPackageInfo::MimeType()
       
   359 // ---------------------------------------------------------------------------
       
   360 //
       
   361 const TDesC8& CAppMngr2MidletPackageInfo::MimeType() const
       
   362 {
       
   363     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::MimeType ");
       
   364     if (iMimeType)
       
   365     {
       
   366         return *iMimeType;
       
   367     }
       
   368     return KNullDesC8;
       
   369 }
       
   370 
       
   371 // ---------------------------------------------------------------------------
       
   372 // CAppMngr2MidletPackageInfo::FileName()
       
   373 // ---------------------------------------------------------------------------
       
   374 //
       
   375 const TDesC& CAppMngr2MidletPackageInfo::FileName() const
       
   376 {
       
   377     LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletPackageInfo::FileName ");
       
   378     if (iFileName)
       
   379     {
       
   380         return *iFileName;
       
   381     }
       
   382     return KNullDesC;
       
   383 }
       
   384 
       
   385 // ---------------------------------------------------------
       
   386 // CAppMngr2MidletPackageInfo::IsDRMProtected()
       
   387 // ---------------------------------------------------------
       
   388 //
       
   389 TBool CAppMngr2MidletPackageInfo::IsDRMProtected() const
       
   390 {
       
   391     return iIsDRMProtected;
       
   392 }
       
   393 
       
   394 // ---------------------------------------------------------
       
   395 // CAppMngr2MidletPackageInfo::ProtectedFileName()
       
   396 // ---------------------------------------------------------
       
   397 //
       
   398 const TDesC& CAppMngr2MidletPackageInfo::ProtectedFileName() const
       
   399 {
       
   400     if (iIsDRMProtected)
       
   401     {
       
   402         return *iFileName;
       
   403     }
       
   404     else
       
   405     {
       
   406         return KNullDesC;
       
   407     }
       
   408 }
       
   409 
       
   410 // ---------------------------------------------------------------------------
       
   411 // CAppMngr2MidletPackageInfo::CAppMngr2MidletPackageInfo()
       
   412 // ---------------------------------------------------------------------------
       
   413 //
       
   414 CAppMngr2MidletPackageInfo::CAppMngr2MidletPackageInfo(CAppMngr2Runtime& aRuntime,
       
   415         RFs& aFs, CAppMngr2MidletResourceHandler& aResourceHandler) : CAppMngr2PackageInfo(aRuntime, aFs), iResourceHandler(aResourceHandler)
       
   416 {
       
   417 }
       
   418 
       
   419 // ---------------------------------------------------------------------------
       
   420 // CAppMngr2MidletPackageInfo::ConstructL()
       
   421 // ---------------------------------------------------------------------------
       
   422 //
       
   423 void CAppMngr2MidletPackageInfo::ConstructL(const TDesC& aJadFileName,
       
   424         const TDesC& aJarFileName)
       
   425 {
       
   426     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::ConstructL ");
       
   427     CAppMngr2PackageInfo::ConstructL();    // base class
       
   428 
       
   429     iIsDRMProtected = EFalse;
       
   430     TEntry fileEntry;
       
   431 
       
   432     iJadFileName = aJadFileName.AllocL();
       
   433     iJarFileName = aJarFileName.AllocL();
       
   434 
       
   435     if (aJadFileName != KNullDesC)
       
   436     {
       
   437         User::LeaveIfError(iFs.Entry(aJadFileName, fileEntry));
       
   438         iName = fileEntry.iName.AllocL();
       
   439         iFileName = aJadFileName.AllocL();
       
   440         iMimeType =SwiUI::KJadMIMEType().AllocL();
       
   441     }
       
   442     else
       
   443     {
       
   444         User::LeaveIfError(iFs.Entry(aJarFileName, fileEntry));
       
   445         iName = fileEntry.iName.AllocL();
       
   446         iFileName = aJarFileName.AllocL();
       
   447         iMimeType = SwiUI::KJarMIMEType().AllocL();
       
   448     }
       
   449 
       
   450     // Leave if there is no installation file
       
   451     User::LeaveIfNull(iFileName);
       
   452 
       
   453     if (aJarFileName != KNullDesC)
       
   454     {
       
   455         User::LeaveIfError(iFs.Entry(aJarFileName, fileEntry));
       
   456         iDetails = SizeStringWithUnitsL(fileEntry.iSize);
       
   457         iIsDRMProtected = TAppMngr2DRMUtils::IsDRMProtected(aJarFileName);
       
   458     }
       
   459     else
       
   460     {
       
   461         std::auto_ptr<AppMngr2MidletManifestReader>reader(
       
   462             new AppMngr2MidletManifestReader(iFs));
       
   463 
       
   464         RPointerArray<MJavaAttribute> attributes;
       
   465 
       
   466         reader->ReadManifestL(aJadFileName, attributes);
       
   467 
       
   468         _LIT(KAttrJarSize, "MIDlet-Jar-Size");
       
   469 
       
   470         for (TInt i = 0; i < attributes.Count(); i ++)
       
   471         {
       
   472             if (attributes[i]->Name() == KAttrJarSize)
       
   473             {
       
   474                 TLex lex(attributes[i]->Value());
       
   475                 TInt jarSize = 0;
       
   476                 lex.Val(jarSize);
       
   477                 // If there is error value is left as zero.
       
   478                 iDetails = SizeStringWithUnitsL(jarSize);
       
   479                 break;
       
   480             }
       
   481         }
       
   482 
       
   483         attributes.ResetAndDestroy();
       
   484     }
       
   485 
       
   486     iLocation = TAppMngr2DriveUtils::LocationFromFileNameL(*iFileName, iFs);
       
   487     iLocationDrive = TDriveUnit(*iFileName);
       
   488 
       
   489     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::ConstructL ");
       
   490 }
       
   491 
       
   492 // ---------------------------------------------------------------------------
       
   493 // CAppMngr2MidletPackageInfo::RemoveL()
       
   494 // ---------------------------------------------------------------------------
       
   495 //
       
   496 void CAppMngr2MidletPackageInfo::RemoveL()
       
   497 {
       
   498     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::RemoveL ");
       
   499     if ((*iJadFileName).Length())
       
   500     {
       
   501         User::LeaveIfError(iFs.Delete(*iJadFileName));
       
   502     }
       
   503     if ((*iJarFileName).Length())
       
   504     {
       
   505         User::LeaveIfError(iFs.Delete(*iJarFileName));
       
   506     }
       
   507     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::RemoveL ");
       
   508 }
       
   509 
       
   510 // ---------------------------------------------------------------------------
       
   511 // CAppMngr2MidletPackageInfo::InstallL()
       
   512 // ---------------------------------------------------------------------------
       
   513 //
       
   514 void CAppMngr2MidletPackageInfo::InstallL(TRequestStatus& aStatus)
       
   515 {
       
   516     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::InstallL ");
       
   517     if (!iSWInstLauncher)
       
   518     {
       
   519         SwiUI::RSWInstLauncher* swInstLauncher
       
   520         = new(ELeave) SwiUI::RSWInstLauncher;
       
   521         CleanupStack::PushL(swInstLauncher);
       
   522         User::LeaveIfError(swInstLauncher->Connect());
       
   523         CleanupStack::Pop(swInstLauncher);
       
   524         iSWInstLauncher = swInstLauncher;
       
   525         swInstLauncher = NULL;
       
   526     }
       
   527     iSWInstLauncher->Install(aStatus, *iFileName);
       
   528     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::InstallL ");
       
   529 }
       
   530 
       
   531 // ---------------------------------------------------------------------------
       
   532 // CAppMngr2MidletPackageInfo::ShowDetailsL()
       
   533 // ---------------------------------------------------------------------------
       
   534 //
       
   535 void CAppMngr2MidletPackageInfo::ShowDetailsL()
       
   536 {
       
   537     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::ShowDetailsL ");
       
   538     SwiUI::CommonUI::CCUIDetailsDialog* details
       
   539     = SwiUI::CommonUI::CCUIDetailsDialog::NewL();
       
   540     details->ExecuteLD(InfoIteratorL());
       
   541     LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletPackageInfo::ShowDetailsL ");
       
   542 }
       
   543 
       
   544 // ---------------------------------------------------------------------------
       
   545 // CAppMngr2MidletPackageInfo::ShowInfoUrlL()
       
   546 // ---------------------------------------------------------------------------
       
   547 //
       
   548 void CAppMngr2MidletPackageInfo::ShowInfoUrlL()
       
   549 {
       
   550     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::ShowInfoUrlL ");
       
   551     CBrowserLauncher* launcher = CBrowserLauncher::NewLC();
       
   552     // open browser with info url from jad
       
   553     const TDesC* url = &InfoIteratorL().GetInfoUrlL();
       
   554 
       
   555     TInt urlLength = url->Length();
       
   556 
       
   557     HBufC* urlParam = HBufC::NewLC(urlLength
       
   558                                    + KBrowserStartContinueParam().Length());
       
   559     TPtr urlParamPtr = urlParam->Des();
       
   560     urlParamPtr.Append(KBrowserStartContinueParam);
       
   561     urlParamPtr.Append(*url);
       
   562 
       
   563     launcher->LaunchBrowserSyncEmbeddedL(urlParamPtr, this);
       
   564 
       
   565     CleanupStack::PopAndDestroy(urlParam);
       
   566     CleanupStack::PopAndDestroy(launcher);
       
   567 
       
   568     LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletPackageInfo::ShowInfoUrlL ");
       
   569 }
       
   570 
       
   571 // ---------------------------------------------------------------------------
       
   572 // CAppMngr2MidletPackageInfo::InfoIteratorL()
       
   573 // ---------------------------------------------------------------------------
       
   574 //
       
   575 CAppMngr2MidletInfoIterator& CAppMngr2MidletPackageInfo::InfoIteratorL()
       
   576 {
       
   577     if (!iInfoIterator)
       
   578     {
       
   579         iInfoIterator = CAppMngr2MidletInfoIterator::NewL(*this,
       
   580                         EAppMngr2StatusNotInstalled, iFs, iResourceHandler);
       
   581     }
       
   582     return *iInfoIterator;
       
   583 }