diff -r c4687ff85147 -r 6757f1e2efd2 clientprovisioning/cpqtsp/src/CWPSaver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clientprovisioning/cpqtsp/src/CWPSaver.cpp Tue Aug 31 15:05:55 2010 +0300 @@ -0,0 +1,179 @@ +/* +* ============================================================================ +* Name : CWPSaver.cpp +* Part of : Provisioning / ProvisioningBC +* Description : Helper class for saving Provisioning settings. Provides a progress note. +* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. +* +* Copyright © 2002-2006 Nokia. All rights reserved. +* This material, including documentation and any related computer +* programs, is protected by copyright controlled by Nokia. All +* rights are reserved. Copying, including reproducing, storing, +* adapting or translating, any or all of this material requires the +* prior written consent of Nokia. This material also contains +* confidential information which may not be disclosed to others +* without the prior written consent of Nokia. +* ============================================================================ +*/ + +// INCLUDE FILES +#include +#include +#include + +#include "CWPSaver.h" +#include +#include + +// CONSTANTS +const TInt KMaxWaitTime = 2000000; +const TInt KRetryCount = 5; + +// CLASS DECLARATION + +// ========================== MEMBER FUNCTIONS =============================== + +// ---------------------------------------------------------------------------- +// C++ default constructor. +// ---------------------------------------------------------------------------- +CWPSaver::CWPSaver( CWPEngine& aEngine, TBool aSetAsDefault ) + : CActive( EPriorityStandard ), + iEngine( aEngine ), + iSetAsDefault( aSetAsDefault ), + iCurrentItem( 0 ), + iResult( KErrNone ) + { + } + +// ---------------------------------------------------------------------------- +// CWPSaver::PrepareLC +// ---------------------------------------------------------------------------- +// +void CWPSaver::PrepareLC() + { + // Assume ownership of this. + CleanupStack::PushL( this ); + iProgress = new HbProgressDialog(HbProgressDialog::WaitDialog); + iProgress->setText(hbTrId("txt_device_update_setlabel_saving_settings")); + iProgress->clearActions(); + iProgress->show(); + + } + +// ---------------------------------------------------------------------------- +// CWPSaver::ExecuteLD +// ---------------------------------------------------------------------------- +// +TInt CWPSaver::ExecuteLD( TInt& aNumSaved, TBufC<256>& Value ) + { + PrepareLC(); + + // Add us to active scheduler and make sure RunL() gets called. + CActiveScheduler::Add( this ); + CompleteRequest(); + iWait.Start(); + + // Progress note has been finished/cancelled. Cache the result + // and delete this. + TInt result( iResult ); + aNumSaved = iCurrentItem; + Value = iValue; + CleanupStack::PopAndDestroy(); // this + + return result; + } + +// ---------------------------------------------------------------------------- +// Destructor +// ---------------------------------------------------------------------------- +CWPSaver::~CWPSaver() + { + Cancel(); + } + +// ---------------------------------------------------------------------------- +// CWPSaver::DoCancel +// ---------------------------------------------------------------------------- +// +void CWPSaver::DoCancel() + { + } + +// ---------------------------------------------------------------------------- +// CWPSaver::RunL +// ---------------------------------------------------------------------------- +// +void CWPSaver::RunL() + { + // Choose whether to save or set as default + TInt err( KErrNone ); + if( iSetAsDefault ) + { + TRAP( err, + if( iEngine.CanSetAsDefault( iCurrentItem ) ) + { + iEngine.SetAsDefaultL( iCurrentItem ); + } ); + } + else + { + TRAP(err, QT_TRYCATCH_LEAVING( iEngine.SaveL( iCurrentItem ) )); + } + if( err != KErrNone ) + { + // For all other errors, pass them through. + iValue = iEngine.SummaryText(iCurrentItem); + delete iProgress; + iProgress = NULL; + User::LeaveIfError( err ); + } + // Succesful save, so reset retry count + iRetryCount = 0; + + // Normal progress + if( iCurrentItem == iEngine.ItemCount()-1 ) + { + //iProgress->cancel(); + //iProgress->close(); + delete iProgress; + iProgress = NULL; + iWait.AsyncStop(); + } + else + { + //CEikProgressInfo* progressInfo = iDialog->GetProgressInfoL(); + iCurrentItem++; + //progressInfo->SetAndDraw(iCurrentItem); + CompleteRequest(); + } + } + +// ---------------------------------------------------------------------------- +// CWPSaver::RunError +// ---------------------------------------------------------------------------- +// +TInt CWPSaver::RunError( TInt aError ) + { + // There was a leave in RunL(). Store the error and + // stop the dialog. + iResult = aError; + iWait.AsyncStop(); + return KErrNone; + } + +// ---------------------------------------------------------------------------- +// CWPSaver::CompleteRequest +// ---------------------------------------------------------------------------- +// +void CWPSaver::CompleteRequest() + { + // Schedule an immediate complete. Make sure that there + // is no timer alive first + Cancel(); + //iRetryTimer->Cancel(); + + SetActive(); + TRequestStatus* sp = &iStatus; + User::RequestComplete( sp, KErrNone ); + } +