diff -r 7333d7932ef7 -r 8b7f4e561641 iaupdate/IAD/updater/src/iaupdaterdialog.cpp --- a/iaupdate/IAD/updater/src/iaupdaterdialog.cpp Tue Aug 31 15:21:33 2010 +0300 +++ b/iaupdate/IAD/updater/src/iaupdaterdialog.cpp Wed Sep 01 12:22:02 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -17,17 +17,19 @@ +#include +#include +#include +#include +#include +#include +#include //For AknTextUtils + #include "iaupdaterdialog.h" #include "iaupdaterdefs.h" #include "iaupdatercancelobserver.h" #include "iaupdatedebug.h" -#include - - -_LIT(KFilename, "iaupdate.ts"); -_LIT(KPath, "z://data"); -_LIT(KInstalling, "txt_software_info_installing_1"); // ======== LOCAL FUNCTIONS ======== @@ -39,23 +41,26 @@ // C++ default constructor // ----------------------------------------------------------------------------- // -CIAUpdaterDialog::CIAUpdaterDialog( MIAUpdaterCancelObserver& aObserver ) -: iObserver ( &aObserver ) +CIAUpdaterDialog::CIAUpdaterDialog( RFs& aFs, + MIAUpdaterCancelObserver& aObserver ) +: CActive( CActive::EPriorityStandard ), + iFs( aFs ), + iObserver ( &aObserver ) { - + CActiveScheduler::Add( this ); } - // ----------------------------------------------------------------------------- // CIAUpdaterDialog::NewL // Two-phased constructor. // ----------------------------------------------------------------------------- // -CIAUpdaterDialog* CIAUpdaterDialog::NewL( MIAUpdaterCancelObserver& aObserver ) +CIAUpdaterDialog* CIAUpdaterDialog::NewL( RFs& aFs, + MIAUpdaterCancelObserver& aObserver ) { CIAUpdaterDialog* self = - CIAUpdaterDialog::NewLC( aObserver ); + CIAUpdaterDialog::NewLC( aFs, aObserver ); CleanupStack::Pop( self ); return self; } @@ -66,10 +71,11 @@ // Two-phased constructor. // ----------------------------------------------------------------------------- // -CIAUpdaterDialog* CIAUpdaterDialog::NewLC( MIAUpdaterCancelObserver& aObserver ) +CIAUpdaterDialog* CIAUpdaterDialog::NewLC( RFs& aFs, + MIAUpdaterCancelObserver& aObserver ) { CIAUpdaterDialog* self = - new( ELeave ) CIAUpdaterDialog( aObserver ); + new( ELeave ) CIAUpdaterDialog( aFs, aObserver ); CleanupStack::PushL( self ); self->ConstructL(); return self; @@ -86,8 +92,18 @@ IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ConstructL begin"); // Get resource file path - iIsResolverSuccess = HbTextResolverSymbian::Init(KFilename, KPath); + TFileName fileName; + fileName.Copy( TParsePtrC( RProcess().FileName() ).Drive() ); + fileName.Append( KDC_APP_RESOURCE_DIR ); + fileName.Append( IAUpdaterDefs::KIAUpdaterResourceFile ); + // Get language of resource file + BaflUtils::NearestLanguageFile( iFs, fileName ); + + // Open resource file + iResourceFile.OpenL( iFs, fileName ); + iResourceFile.ConfirmSignatureL(); + IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ConstructL end"); } @@ -99,7 +115,9 @@ // CIAUpdaterDialog::~CIAUpdaterDialog() { - DestroyGlobalWaitNote(); + Cancel(); + delete iNote; + iResourceFile.Close(); } @@ -108,30 +126,54 @@ // Show global waiting note during installing. // ----------------------------------------------------------------------------- // -void CIAUpdaterDialog::ShowWaitingNoteL( const TDesC& aName, TInt /*aIndex*/, TInt /*aTotalCount*/ ) +void CIAUpdaterDialog::ShowWaitingNoteL( const TDesC& aName, TInt aIndex, TInt aTotalCount ) { IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ShowWaitingNoteL begin"); + if ( iNoteId == 0 ) + { + IAUPDATE_TRACE("[IAUpdater] Creating global waiting note."); - DestroyGlobalWaitNote(); - - iGlobalWaitNote = CHbDeviceProgressDialogSymbian::NewL( - CHbDeviceProgressDialogSymbian::EWaitDialog ); - - // loc: Load string - iGlobalResource = HbTextResolverSymbian::LoadL( KInstalling, aName ); - if ( iGlobalResource ) - iGlobalWaitNote->SetTextL( iGlobalResource->Des() ); - - // Icon ? - //iGlobalWaitNote->SetIconNameL(const TDesC& aIconName); - - // Button ? - iGlobalWaitNote->SetButton(ETrue); - - iGlobalWaitNote->SetObserver( this ); - iGlobalWaitNote->SetAutoClose(EFalse); - iGlobalWaitNote->ShowL(); - + // Get localiced string from resc. file. + HBufC* string = ReadResourceLC( R_IAUPDATER_INSTALLING ); + + HBufC* temp1 = HBufC::NewLC( string->Length() + aName.Length() ); + TPtr temp1Ptr = temp1->Des(); + + // Add pkg's name to string (U0). + StringLoader::Format( temp1Ptr, *string, 0, aName ); + + // Increase buffer length for the number. + HBufC* temp2 = + HBufC::NewLC( temp1->Length() + IAUpdaterDefs::KIAUpdaterParamLen ); + TPtr temp2Ptr = temp2->Des(); + + // Add index number to string (N1) + StringLoader::Format( temp2Ptr, *temp1, 1, aIndex ); + + // Increase buffer length for the number. + HBufC* finalString = + HBufC::NewLC( temp2->Length() + IAUpdaterDefs::KIAUpdaterParamLen ); + TPtr finalPtr = finalString->Des(); + + // Add max count number to string (N2) + StringLoader::Format( finalPtr, *temp2, 2, aTotalCount ); + + AknTextUtils::DisplayTextLanguageSpecificNumberConversion( finalPtr ); + if ( !iNote ) + { + iNote = CAknGlobalNote::NewL(); + iNote->SetSoftkeys( R_AVKON_SOFTKEYS_CANCEL ); + } + + IAUPDATE_TRACE("[IAUpdater] Showing global waiting note."); + iNoteId = iNote->ShowNoteL( iStatus, EAknGlobalWaitNote, *finalString ); + SetActive(); + + CleanupStack::PopAndDestroy( finalString ); + CleanupStack::PopAndDestroy( temp2 ); + CleanupStack::PopAndDestroy( temp1 ); + CleanupStack::PopAndDestroy( string ); + } IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::ShowWaitingNoteL end"); } @@ -144,39 +186,65 @@ void CIAUpdaterDialog::CancelWaitingNoteL() { IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::CancelWaitingNoteL begin"); - - DestroyGlobalWaitNote(); - + + if ( iNoteId != 0 ) + { + IAUPDATE_TRACE("[IAUpdater] Cancel waiting note."); + iNote->CancelNoteL( iNoteId ); + iNoteId = 0; + } + IAUPDATE_TRACE("[IAUpdater] CIAUpdaterDialog::CancelWaitingNoteL end"); } -void CIAUpdaterDialog::ProgressDialogCancelled( - const CHbDeviceProgressDialogSymbian* /*aProgressDialog*/ ) + +// ----------------------------------------------------------------------------- +// CIAUpdaterDialog::LoadResourceLC +// Read resource string. +// ----------------------------------------------------------------------------- +// +HBufC* CIAUpdaterDialog::ReadResourceLC( TInt aResourceId ) { - - iObserver->UserCancel(); + TResourceReader reader; + HBufC8* buff = iResourceFile.AllocReadLC( aResourceId ); + reader.SetBuffer( buff ); + HBufC* text = reader.ReadHBufCL(); + CleanupStack::PopAndDestroy( buff ); + CleanupStack::PushL( text ); + + return text; + } - } - -void CIAUpdaterDialog::ProgressDialogClosed( - const CHbDeviceProgressDialogSymbian* /*aProgressDialog*/ ) + +// --------------------------------------------------------------------------- +// CIAUpdaterDialog:::DoCancel +// +// --------------------------------------------------------------------------- +// +void CIAUpdaterDialog::DoCancel() { - + TRAP_IGNORE( CancelWaitingNoteL() ); } -// ----------------------------------------------------------------------------- -// CIAUpdaterDialog::DestroyGlobalWaitNote -// ----------------------------------------------------------------------------- -void CIAUpdaterDialog::DestroyGlobalWaitNote() +// --------------------------------------------------------------------------- +// CIAUpdateNetworkRegistration::RunL() +// +// --------------------------------------------------------------------------- +// +void CIAUpdaterDialog::RunL() { - if ( iGlobalWaitNote ) + IAUPDATE_TRACE_1("[IAUpdater] CIAUpdaterDialog::RunL() iStatus : %d", iStatus.Int() ); + iNoteId = 0; + if ( iStatus.Int() == EAknSoftkeyCancel ) { - iGlobalWaitNote->Close(); - delete iGlobalWaitNote; - iGlobalWaitNote = NULL; - delete iGlobalResource; - iGlobalResource = NULL; + iObserver->UserCancel(); + } + else + { + iObserver->UserExit(); } } - + +// ======== GLOBAL FUNCTIONS ======== + // EOF