22 #include <centralrepository.h> |
22 #include <centralrepository.h> |
23 #include <SWInstDefs.h> |
23 #include <SWInstDefs.h> |
24 #include <featurecontrol.h> |
24 #include <featurecontrol.h> |
25 #include <cmmanager.h> |
25 #include <cmmanager.h> |
26 #include <qapplication.h> |
26 #include <qapplication.h> |
27 #include <hbmessagebox.h> |
|
28 #include <hbaction.h> |
27 #include <hbaction.h> |
29 #include <hbprogressdialog.h> |
28 #include <hbprogressdialog.h> |
30 #include <iaupdateparameters.h> |
29 #include <iaupdateparameters.h> |
31 |
30 |
32 #include "iaupdateuicontroller.h" |
31 #include "iaupdateuicontroller.h" |
57 #include "iaupdatefileconsts.h" |
56 #include "iaupdatefileconsts.h" |
58 #include "iaupdatefirsttimeinfo.h" |
57 #include "iaupdatefirsttimeinfo.h" |
59 #include "iaupdaterefreshhandler.h" |
58 #include "iaupdaterefreshhandler.h" |
60 #include "iaupdatenodeid.h" |
59 #include "iaupdatenodeid.h" |
61 #include "iaupdatewaitdialog.h" |
60 #include "iaupdatewaitdialog.h" |
|
61 #include "iaupdatedialogutil.h" |
62 #include "iaupdatedebug.h" |
62 #include "iaupdatedebug.h" |
63 |
63 |
64 |
64 |
65 // cenrep in emulator: |
65 // cenrep in emulator: |
66 // copy 2000F85A.txt to '\epoc32\release\winscw\udeb\Z\private\10202be9\' |
66 // copy 2000F85A.txt to '\epoc32\release\winscw\udeb\Z\private\10202be9\' |
260 delete iStarter; |
260 delete iStarter; |
261 delete iConfigData; |
261 delete iConfigData; |
262 delete iRoamingHandler; |
262 delete iRoamingHandler; |
263 delete iParams; |
263 delete iParams; |
264 delete iRefreshHandler; |
264 delete iRefreshHandler; |
|
265 delete mDialogUtil; |
265 |
266 |
266 // If dialogs have not been released yet, release them now. |
267 // If dialogs have not been released yet, release them now. |
267 // ProcessFinishedL() should normally be used for dialogs but |
268 // ProcessFinishedL() should normally be used for dialogs but |
268 // here just use non-leaving delete. In normal cases, dialogs should |
269 // here just use non-leaving delete. In normal cases, dialogs should |
269 // already be released in the end of the update flow before coming here. |
270 // already be released in the end of the update flow before coming here. |
307 // --------------------------------------------------------------------------- |
308 // --------------------------------------------------------------------------- |
308 // |
309 // |
309 void CIAUpdateUiController::CheckUpdatesL() |
310 void CIAUpdateUiController::CheckUpdatesL() |
310 { |
311 { |
311 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::CheckUpdatesL() begin"); |
312 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::CheckUpdatesL() begin"); |
312 |
313 |
313 iCountOfAvailableUpdates = 0; |
314 iCountOfAvailableUpdates = 0; |
314 |
315 |
315 if ( iParams ) |
316 if ( iParams ) |
316 { |
317 { |
317 iFilter->SetFilterParams( iParams ); //iParams ownership is changed |
318 iFilter->SetFilterParams( iParams ); //iParams ownership is changed |
318 iParams = NULL; |
319 iParams = NULL; |
319 } |
320 } |
320 |
321 |
321 TBool agreementAccepted( EFalse ); |
322 TBool agreementAccepted( EFalse ); |
322 if ( !ForcedRefresh() ) |
323 if ( !ForcedRefresh() ) |
323 { |
324 { |
324 CIAUpdateAgreement* agreement = CIAUpdateAgreement::NewLC(); |
325 CIAUpdateAgreement* agreement = CIAUpdateAgreement::NewLC(); |
325 agreementAccepted = agreement->AgreementAcceptedL(); |
326 agreementAccepted = agreement->AgreementAcceptedL(); |
326 if ( ( !agreementAccepted )&& ( iRequestType != IAUpdateUiDefines::ECheckUpdates ) ) |
327 if ( ( !agreementAccepted )&& ( iRequestType != IAUpdateUiDefines::ECheckUpdates ) ) |
328 // agreement (disclaimer) dialog is not prompted when CheckUpdates is called |
329 // agreement (disclaimer) dialog is not prompted when CheckUpdates is called |
329 // |
330 // |
330 // Refresh from network is allowed when first time case |
331 // Refresh from network is allowed when first time case |
331 iRefreshFromNetworkDenied = EFalse; |
332 iRefreshFromNetworkDenied = EFalse; |
332 agreementAccepted = agreement->AcceptAgreementL(); |
333 agreementAccepted = agreement->AcceptAgreementL(); |
|
334 if (!agreementAccepted) |
|
335 { |
|
336 if ( !mDialogUtil ) |
|
337 { |
|
338 mDialogUtil = new IAUpdateDialogUtil(NULL, this); |
|
339 } |
|
340 if ( mDialogUtil ) |
|
341 { |
|
342 mPrimaryAction = NULL; |
|
343 mPrimaryAction = new HbAction("Accept"); |
|
344 HbAction *secondaryAction = NULL; |
|
345 secondaryAction = new HbAction("Decline"); |
|
346 mDialogUtil->showAgreement(mPrimaryAction,secondaryAction); |
|
347 iDialogState = EAgreement; |
|
348 } |
|
349 } |
333 } |
350 } |
334 CleanupStack::PopAndDestroy( agreement ); |
351 CleanupStack::PopAndDestroy( agreement ); |
335 } |
352 } |
336 |
353 if ( iDialogState != EAgreement ) |
|
354 { |
|
355 AgreementHandledL(); |
|
356 } |
|
357 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::CheckUpdatesL() end"); |
|
358 return; |
|
359 } |
|
360 |
|
361 // --------------------------------------------------------------------------- |
|
362 // CIAUpdateUiController:: AgreementHandledL |
|
363 // Updates the update item list. |
|
364 // --------------------------------------------------------------------------- |
|
365 // |
|
366 void CIAUpdateUiController::AgreementHandledL() |
|
367 { |
|
368 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::AgreementHandledL() begin"); |
|
369 TBool agreementAccepted( EFalse ); |
|
370 CIAUpdateAgreement* agreement = CIAUpdateAgreement::NewLC(); |
|
371 agreementAccepted = agreement->AgreementAcceptedL(); |
|
372 CleanupStack::PopAndDestroy( agreement ); |
337 if ( !agreementAccepted && !ForcedRefresh() ) |
373 if ( !agreementAccepted && !ForcedRefresh() ) |
338 { |
374 { |
339 if ( iRequestType == IAUpdateUiDefines::ECheckUpdates ) |
375 if ( iRequestType == IAUpdateUiDefines::ECheckUpdates ) |
340 { |
376 { |
341 CIAUpdateAutomaticCheck* automaticCheck = CIAUpdateAutomaticCheck::NewLC(); |
377 CIAUpdateAutomaticCheck* automaticCheck = CIAUpdateAutomaticCheck::NewLC(); |
393 // and new startup should not be called. Also, leave in that case. |
429 // and new startup should not be called. Also, leave in that case. |
394 User::LeaveIfError( ret ); |
430 User::LeaveIfError( ret ); |
395 } |
431 } |
396 } |
432 } |
397 |
433 |
398 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::CheckUpdatesL() end"); |
434 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::AgreementHandledL() end"); |
399 } |
435 } |
400 |
436 |
401 |
437 |
402 // --------------------------------------------------------------------------- |
438 // --------------------------------------------------------------------------- |
403 // CIAUpdateUiController::StartUpdateL |
439 // CIAUpdateUiController::StartUpdateL |
415 |
451 |
416 CreateSelectedNodesArrayL(); |
452 CreateSelectedNodesArrayL(); |
417 |
453 |
418 if ( !IAUpdateUtils::SpaceAvailableInInternalDrivesL( iSelectedNodesArray ) ) |
454 if ( !IAUpdateUtils::SpaceAvailableInInternalDrivesL( iSelectedNodesArray ) ) |
419 { |
455 { |
420 HbMessageBox messageBox(HbMessageBox::MessageTypeInformation); |
456 if ( !mDialogUtil ) |
421 messageBox.setText(QString("Insufficient memory. Free some memory and try again.")); |
457 { |
422 HbAction action("OK"); |
458 mDialogUtil = new IAUpdateDialogUtil(NULL, this); |
423 messageBox.setPrimaryAction(&action); |
459 } |
424 messageBox.setTimeout(HbPopup::NoTimeout); |
460 if ( mDialogUtil ) |
425 messageBox.show(); |
461 { |
426 //messageBox.exec(); |
462 mPrimaryAction = NULL; |
|
463 mPrimaryAction = new HbAction("OK"); |
|
464 mDialogUtil->showInformation(QString("Insufficient memory. Free some memory and try again."), mPrimaryAction); |
|
465 iDialogState = EInsufficientMemory; |
|
466 } |
427 } |
467 } |
428 else |
468 else |
429 { |
469 { |
430 if ( !IsStartedByLauncher() ) |
470 if ( !IsStartedByLauncher() ) |
431 { |
471 { |
440 } |
480 } |
441 // Inform the controller that we are now starting updates. This way the |
481 // Inform the controller that we are now starting updates. This way the |
442 // controller can handle situations as a whole and not as one item at the |
482 // controller can handle situations as a whole and not as one item at the |
443 // time. |
483 // time. |
444 iController->StartingUpdatesL(); |
484 iController->StartingUpdatesL(); |
445 |
485 |
|
486 //Store current node list before update |
|
487 iFilter->StoreNodeListL( iNodes ); |
|
488 |
|
489 iFilter->SortSelectedNodesFirstL( iSelectedNodesArray, iNodes ); |
|
490 |
446 iFileInUseError = EFalse; |
491 iFileInUseError = EFalse; |
447 // Set the node index to -1 because ContinueUpdateL increases it by one |
492 // Set the node index to -1 because ContinueUpdateL increases it by one |
448 // in the beginning of the function. So, we can use the ContinueUpdateL |
493 // in the beginning of the function. So, we can use the ContinueUpdateL |
449 // also in here. |
494 // also in here. |
450 iNodeIndex = -1; |
495 iNodeIndex = -1; |
504 MIAUpdateNode* selectedNode = iSelectedNodesArray[ iNodeIndex ]; |
549 MIAUpdateNode* selectedNode = iSelectedNodesArray[ iNodeIndex ]; |
505 |
550 |
506 // Only update items that have not been installed yet. |
551 // Only update items that have not been installed yet. |
507 if ( !selectedNode->IsInstalled() ) |
552 if ( !selectedNode->IsInstalled() ) |
508 { |
553 { |
509 IAUPDATE_TRACE("[IAUPDATE] Item not installed yet"); |
554 IAUPDATE_TRACE("[IAUPDATE] Item not installed yet"); |
|
555 iFilter->SortThisNodeFirstL( selectedNode, iNodes ); |
510 if ( !selectedNode->IsDownloaded() ) |
556 if ( !selectedNode->IsDownloaded() ) |
511 { |
557 { |
512 // Because content has not been downloaded or installed yet, |
558 // Because content has not been downloaded or installed yet, |
513 // it needs to be downloaded before it can be installed. |
559 // it needs to be downloaded before it can be installed. |
514 IAUPDATE_TRACE("[IAUPDATE] Download"); |
560 IAUPDATE_TRACE("[IAUPDATE] Download"); |
515 selectedNode->DownloadL( *this ); |
561 selectedNode->DownloadL( *this ); |
516 iState = EDownloading; |
562 iState = EDownloading; |
517 iClosingAllowedByClient = ETrue; |
563 iClosingAllowedByClient = ETrue; |
518 selectedNode->SetDownloading( ETrue); |
564 selectedNode->SetUiState( MIAUpdateNode::EDownloading ); |
519 /*ShowUpdatingDialogL( R_IAUPDATE_DOWNLOADING_NOTE, |
565 iObserver.RefreshUI(); |
520 selectedNode->Base().Name(), |
|
521 iNodeIndex + 1, |
|
522 iSelectedNodesArray.Count() );*/ |
|
523 nextUpdate = EFalse; |
566 nextUpdate = EFalse; |
524 } |
567 } |
525 else |
568 else |
526 { |
569 { |
527 // Because content has been downloaded but not installed yet, |
570 // Because content has been downloaded but not installed yet, |
528 // it needs to be installed now. |
571 // it needs to be installed now. |
529 IAUPDATE_TRACE("[IAUPDATE] Install"); |
572 IAUPDATE_TRACE("[IAUPDATE] Install"); |
530 selectedNode->InstallL( *this ); |
573 selectedNode->InstallL( *this ); |
531 iState = EInstalling; |
574 iState = EInstalling; |
532 iClosingAllowedByClient = EFalse; |
575 iClosingAllowedByClient = EFalse; |
533 /*CIAUpdateAppUi* appUi = |
576 selectedNode->SetUiState( MIAUpdateNode::EInstalling ); |
534 static_cast< CIAUpdateAppUi* >( iEikEnv->EikAppUi() ); |
577 iObserver.RefreshUI(); |
535 appUi->StartWGListChangeMonitoring(); |
|
536 ShowUpdatingDialogL( R_IAUPDATE_INSTALLING_NOTE, |
|
537 selectedNode->Base().Name(), |
|
538 iNodeIndex + 1, |
|
539 iSelectedNodesArray.Count() ); */ |
|
540 nextUpdate = EFalse; |
578 nextUpdate = EFalse; |
541 } |
579 } |
542 } |
580 } |
543 } |
581 } |
544 else |
582 else |
568 aNode.GetDependenciesL( iServicePackNodes, ETrue ); |
606 aNode.GetDependenciesL( iServicePackNodes, ETrue ); |
569 } |
607 } |
570 |
608 |
571 aNode.InstallL( *this ); |
609 aNode.InstallL( *this ); |
572 iState = EInstalling; |
610 iState = EInstalling; |
573 /*CIAUpdateAppUi* appUi = static_cast<CIAUpdateAppUi*>( iEikEnv->EikAppUi() ); |
611 aNode.SetUiState( MIAUpdateNode::EInstalling ); |
574 appUi->StartWGListChangeMonitoring(); |
612 iObserver.RefreshUI(); |
575 iClosingAllowedByClient = EFalse; |
613 |
576 ShowUpdatingDialogL( R_IAUPDATE_INSTALLING_NOTE, |
|
577 aNode.Base().Name(), |
|
578 iNodeIndex + 1, |
|
579 iSelectedNodesArray.Count() ); */ |
|
580 |
|
581 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::StartInstallL() end"); |
614 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::StartInstallL() end"); |
582 } |
615 } |
583 |
616 |
584 |
617 |
585 // --------------------------------------------------------------------------- |
618 // --------------------------------------------------------------------------- |
1547 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::HandleWaitDialogCancel() end"); |
1580 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::HandleWaitDialogCancel() end"); |
1548 |
1581 |
1549 } |
1582 } |
1550 |
1583 |
1551 // ----------------------------------------------------------------------------- |
1584 // ----------------------------------------------------------------------------- |
|
1585 // CIAUpdateUiController::dialogFinished |
|
1586 // Called when dialog is finished. |
|
1587 // ----------------------------------------------------------------------------- |
|
1588 // |
|
1589 void CIAUpdateUiController::dialogFinished(HbAction *action) |
|
1590 { |
|
1591 TDialogState dialogState = iDialogState; |
|
1592 iDialogState = ENoDialog; |
|
1593 |
|
1594 switch ( dialogState ) |
|
1595 { |
|
1596 case EAgreement: |
|
1597 if ( action == mPrimaryAction ) |
|
1598 { |
|
1599 CIAUpdateAgreement* agreement = CIAUpdateAgreement::NewLC(); |
|
1600 agreement->SetAgreementAcceptedL(); |
|
1601 |
|
1602 CleanupStack::PopAndDestroy(agreement); |
|
1603 } |
|
1604 AgreementHandledL(); |
|
1605 break; |
|
1606 case EInsufficientMemory: |
|
1607 break; |
|
1608 default: |
|
1609 break; |
|
1610 } |
|
1611 } |
|
1612 |
|
1613 // ----------------------------------------------------------------------------- |
1552 // CIAUpdateUiController::HandleUiRefreshL |
1614 // CIAUpdateUiController::HandleUiRefreshL |
1553 // |
1615 // |
1554 // ----------------------------------------------------------------------------- |
1616 // ----------------------------------------------------------------------------- |
1555 // |
1617 // |
1556 void CIAUpdateUiController::HandleUiRefreshL() |
1618 void CIAUpdateUiController::HandleUiRefreshL() |
1580 nodeId->SetSelected( node->Base().IsSelected() ); |
1642 nodeId->SetSelected( node->Base().IsSelected() ); |
1581 iPreviousSelections.AppendL( nodeId ); |
1643 iPreviousSelections.AppendL( nodeId ); |
1582 CleanupStack::Pop( nodeId ); |
1644 CleanupStack::Pop( nodeId ); |
1583 |
1645 |
1584 } |
1646 } |
1585 |
1647 |
1586 if ( iFwNodes.Count() > 0 ) |
1648 for ( TInt j = 0; j < iFwNodes.Count(); ++j ) |
1587 { |
1649 { |
1588 MIAUpdateFwNode* fwNode( iFwNodes[ 0 ] ); |
1650 MIAUpdateFwNode* fwNode( iFwNodes[ j ] ); |
1589 CIAUpdateNodeId* nodeId = CIAUpdateNodeId::NewLC(); |
1651 CIAUpdateNodeId* nodeId = CIAUpdateNodeId::NewLC(); |
1590 nodeId->SetIdL( fwNode->Base().MetaId() ); |
1652 nodeId->SetIdL( fwNode->Base().MetaId() ); |
1591 nodeId->SetNamespaceL( fwNode->Base().MetaNamespace() ); |
1653 nodeId->SetNamespaceL( fwNode->Base().MetaNamespace() ); |
1592 nodeId->SetNodeType( MIAUpdateAnyNode::ENodeTypeFw ); |
1654 nodeId->SetNodeType( MIAUpdateAnyNode::ENodeTypeFw ); |
1593 nodeId->SetSelected( fwNode->Base().IsSelected() ); |
1655 nodeId->SetSelected( fwNode->Base().IsSelected() ); |
1866 TInt aError ) |
1928 TInt aError ) |
1867 { |
1929 { |
1868 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::InstallCompleteL() begin"); |
1930 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::InstallCompleteL() begin"); |
1869 IAUPDATE_TRACE_1("[IAUPDATE] error code: %d", aError ); |
1931 IAUPDATE_TRACE_1("[IAUPDATE] error code: %d", aError ); |
1870 |
1932 |
1871 // In release mode, we do not need the aError info, because |
1933 if ( aError == KErrNone ) |
1872 // success counters are counted by using the last operation error info |
1934 { |
1873 // when counter info is asked. In debug mode the error code is logged above. |
1935 aNode.SetUiState( MIAUpdateNode::EUpdated ); |
1874 (void)aError; |
1936 iObserver.RefreshUI(); |
|
1937 } |
|
1938 else |
|
1939 { |
|
1940 aNode.SetUiState( MIAUpdateNode::EFailed ); |
|
1941 iObserver.RefreshUI(); |
|
1942 } |
1875 |
1943 |
1876 // pass UID of installed package to starter |
1944 // pass UID of installed package to starter |
1877 if ( iStarter ) |
1945 if ( iStarter ) |
1878 { |
1946 { |
1879 if ( aNode.Type() == MIAUpdateNode::EPackageTypeServicePack ) |
1947 if ( aNode.Type() == MIAUpdateNode::EPackageTypeServicePack ) |
1914 { |
1982 { |
1915 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::UpdateCompleteL() begin"); |
1983 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::UpdateCompleteL() begin"); |
1916 |
1984 |
1917 iState = EIdle; |
1985 iState = EIdle; |
1918 iClosingAllowedByClient = EFalse; |
1986 iClosingAllowedByClient = EFalse; |
1919 |
1987 |
1920 // Remove installed nodes from the node array. |
|
1921 for ( TInt i = iNodes.Count() - 1; i >= 0; --i ) |
|
1922 { |
|
1923 MIAUpdateNode* node = iNodes[ i ]; |
|
1924 if ( node->IsInstalled() ) |
|
1925 { |
|
1926 iNodes.Remove( i ); |
|
1927 } |
|
1928 } |
|
1929 |
|
1930 TInt error( aError ); |
1988 TInt error( aError ); |
1931 TBool selfUpdaterStarted( EFalse ); |
1989 TBool selfUpdaterStarted( EFalse ); |
1932 |
1990 |
1933 if ( error == KErrNone ) |
1991 if ( error == KErrNone ) |
1934 { |
1992 { |
1983 // Notice, that in case of cancellations there would not be any need |
2041 // Notice, that in case of cancellations there would not be any need |
1984 // for timer. But just use it as in normal cases. Then, server report |
2042 // for timer. But just use it as in normal cases. Then, server report |
1985 // completion or timer will call the callback later. But, that callback |
2043 // completion or timer will call the callback later. But, that callback |
1986 // will be ignored in CIAUpdateUiController::ServerReportSent because |
2044 // will be ignored in CIAUpdateUiController::ServerReportSent because |
1987 // iState is already then changed from ESendingReport to something else. |
2045 // iState is already then changed from ESendingReport to something else. |
1988 const TInt KServerReportMaxWaitTime( 10000000 ); |
2046 |
1989 iController->FinishedUpdatesL( ETrue, KServerReportMaxWaitTime ); |
2047 //const TInt KServerReportMaxWaitTime( 10000000 ); //Commented TEMP |
1990 iState = ESendingReport; |
2048 //iController->FinishedUpdatesL( ETrue, KServerReportMaxWaitTime ); //Commented TEMP |
|
2049 //iState = ESendingReport; //Commented temporarily |
|
2050 EndUpdateFlowL( KErrNone ); //TEMP |
|
2051 return; //TEMP |
1991 } |
2052 } |
1992 |
2053 |
1993 // When reports are sent, EndUpdateFlowL is called via the callback functions |
2054 // When reports are sent, EndUpdateFlowL is called via the callback functions |
1994 // and the update flow will be finished there. But, if we come here when cancel |
2055 // and the update flow will be finished there. But, if we come here when cancel |
1995 // is pressed, then call EndUpdateFlowL directly because then we do not wait |
2056 // is pressed, then call EndUpdateFlowL directly because then we do not wait |
2122 CleanupStack::PopAndDestroy( noteText ); |
2184 CleanupStack::PopAndDestroy( noteText ); |
2123 CleanupStack::PopAndDestroy( numberArray ); |
2185 CleanupStack::PopAndDestroy( numberArray ); |
2124 CleanupStack::PopAndDestroy( stringArray ); |
2186 CleanupStack::PopAndDestroy( stringArray ); |
2125 |
2187 |
2126 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::ShowUpdatingDialogL() end"); |
2188 IAUPDATE_TRACE("[IAUPDATE] CIAUpdateUiController::ShowUpdatingDialogL() end"); |
2127 } |
2189 }*/ |
2128 |
2190 |
2129 |
2191 |
2130 // --------------------------------------------------------------------------- |
2192 // --------------------------------------------------------------------------- |
2131 // CIAUpdateUiController::ShowWaitDialogL |
2193 // CIAUpdateUiController::ShowWaitDialogL |
2132 // |
2194 // |
2655 { |
2717 { |
2656 iForcedRefresh = aForcedRefresh; |
2718 iForcedRefresh = aForcedRefresh; |
2657 } |
2719 } |
2658 |
2720 |
2659 // --------------------------------------------------------------------------- |
2721 // --------------------------------------------------------------------------- |
|
2722 // CIAUpdateUiController::RefreshNodeList |
|
2723 // |
|
2724 // --------------------------------------------------------------------------- |
|
2725 // |
|
2726 void CIAUpdateUiController::RefreshNodeList() |
|
2727 { |
|
2728 // Restore list after update, that nodes are shown in original sequence |
|
2729 iFilter->RestoreNodeListL( iNodes ); |
|
2730 // Remove installed nodes from the node array. |
|
2731 // Set temp UI state to normal for remaining nodes |
|
2732 for ( TInt i = iNodes.Count() - 1; i >= 0; --i ) |
|
2733 { |
|
2734 MIAUpdateNode* node = iNodes[ i ]; |
|
2735 if ( node->IsInstalled() ) |
|
2736 { |
|
2737 iNodes.Remove( i ); |
|
2738 } |
|
2739 else |
|
2740 { |
|
2741 node->SetUiState( MIAUpdateNode::ENormal ); |
|
2742 } |
|
2743 } |
|
2744 } |
|
2745 |
|
2746 |
|
2747 // --------------------------------------------------------------------------- |
2660 // CIAUpdateUiController::ParamsWriteFileL |
2748 // CIAUpdateUiController::ParamsWriteFileL |
2661 // |
2749 // |
2662 // --------------------------------------------------------------------------- |
2750 // --------------------------------------------------------------------------- |
2663 // |
2751 // |
2664 void CIAUpdateUiController::ParamsWriteFileL() |
2752 void CIAUpdateUiController::ParamsWriteFileL() |