omaprovisioning/provisioning/ProvisioningBC/Src/CWPSaver.cpp
branchRCL_3
changeset 25 b183ec05bd8c
parent 24 13d7c31c74e0
child 26 19bba8228ff0
--- a/omaprovisioning/provisioning/ProvisioningBC/Src/CWPSaver.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,338 +0,0 @@
-/*
-* Copyright (c) 2002-2006 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"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Helper class for saving Provisioning settings. Provides a progress note.
-*
-*/
-
-
-// INCLUDE FILES
-#include <AknQueryDialog.h>
-#include <eikprogi.h>
-#include <ProvisioningBC.rsg>
-#include <commdb.h>
-#include <CWPEngine.h>
-#include <CWPAdapter.h>
-#include <activefavouritesdbnotifier.h>
-#include "CWPSaver.h"
-
-// 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 ),
-                    iNumAccessDenied(0)
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::PrepareLC
-// ----------------------------------------------------------------------------
-//
-void CWPSaver::PrepareLC()
-    {
-    // Assume ownership of this.
-    CleanupStack::PushL( this );
-
-    iApDbNotifier = CActiveApDb::NewL( EDatabaseTypeIAP );
-    iApDbNotifier->AddObserverL( this );
-    
-    User::LeaveIfError( iSession.Connect() );
-    User::LeaveIfError( iBookmarkDb.Open( iSession, KBrowserBookmarks ) );
-    iFavouritesNotifier = 
-                new(ELeave) CActiveFavouritesDbNotifier( iBookmarkDb, *this );  
-
-    iFavouritesNotifier->Start();
-
-    iRetryTimer = CPeriodic::NewL( EPriorityStandard );
-
-    // Set up the dialog and callback mechanism.
-    iDialog = new(ELeave)CAknProgressDialog(
-        reinterpret_cast<CEikDialog**>(&iDialog), EFalse );
-    iDialog->SetCallback( this );
-    iDialog->ExecuteLD(R_WAITNOTE_SAVE);
-    CEikProgressInfo* progressInfo = iDialog->GetProgressInfoL();
-    progressInfo->SetAndDraw(iCurrentItem);
-    progressInfo->SetFinalValue(iEngine.ItemCount());
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::ExecuteLD
-// ----------------------------------------------------------------------------
-//
-TInt CWPSaver::ExecuteLD( TInt& aNumSaved )
-    {
-    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;
-    CleanupStack::PopAndDestroy(); // this
-
-    return result;
-    }
-
-// ----------------------------------------------------------------------------
-// Destructor
-// ----------------------------------------------------------------------------
-CWPSaver::~CWPSaver()
-    {
-    Cancel();
-
-    delete iApDbNotifier;
-
-    if( iFavouritesNotifier )
-        {
-        iFavouritesNotifier->Cancel();
-        delete iFavouritesNotifier;
-        }
-
-    iBookmarkDb.Close();
-    iSession.Close();
-    delete iRetryTimer;
-    }
-
-// ----------------------------------------------------------------------------
-// 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, iEngine.SaveL( iCurrentItem ) );
-        }
-
-    // If CommsDB or BookmarkDB are locked, schedule a retry
-    if( err == EWPCommsDBLocked || err == KErrLocked)
-        {
-        iWaitCommsDb = ETrue;
-        DelayedCompleteRequestL();
-        return;
-        }
-    else if( err == EWPBookmarksLocked )
-        {
-        iWaitFavourites = ETrue;
-        DelayedCompleteRequestL();
-        return;
-        }
-    else if( err == KErrNone || err == KErrAccessDenied)
-        {
-        if( err == 	KErrAccessDenied)
-	          {
-	          TInt 	aNumAccessDenied = GetNumAccessDenied();
-	          aNumAccessDenied++;
-	          SetNumAccessDenied(aNumAccessDenied);
-	          iEngine.SetAccessDenied(ETrue);
-	          }
-    
-        // Succesful save, so reset retry count
-        iRetryCount = 0;
-
-        // Normal progress
-        if( iCurrentItem == iEngine.ItemCount()-1 )
-            {
-            iDialog->ProcessFinishedL();
-            }
-        else
-            {
-            CEikProgressInfo* progressInfo = iDialog->GetProgressInfoL();
-            iCurrentItem++;
-            progressInfo->SetAndDraw(iCurrentItem);
-            CompleteRequest();
-            }
-        }
-    else
-        {    
-        // For all other errors, pass them through.
-        User::LeaveIfError( err );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::RunError
-// ----------------------------------------------------------------------------
-//
-TInt CWPSaver::RunError( TInt aError )
-    {
-    // There was a leave in RunL(). Store the error and
-    // stop the dialog.
-    iResult = aError;
-    iWait.AsyncStop();
-    delete iDialog;
-    iDialog = NULL;
-
-    return KErrNone;
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::DialogDismissedL
-// ----------------------------------------------------------------------------
-//
-void CWPSaver::DialogDismissedL( TInt aButtonId )
-    {
-    if( aButtonId < 0 )
-        {
-        iResult = KErrCancel;
-        }
-
-    iWait.AsyncStop();
-    }
-
-// ----------------------------------------------------------------------------
-// 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 );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::DelayedCompleteRequestL
-// ----------------------------------------------------------------------------
-//
-void CWPSaver::DelayedCompleteRequestL()
-    {
-    if( iRetryCount < KRetryCount )
-        {
-        // Schedule a delayed complete. Cancel first in case
-        // an immediate request was scheduled.
-        iRetryTimer->Cancel();
-        iRetryTimer->Start( KMaxWaitTime, KMaxTInt32, TCallBack( Timeout, this ) );
-        iRetryCount++;
-        }
-    else
-        {
-        User::Leave( KErrTimedOut );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::Retry
-// ----------------------------------------------------------------------------
-//
-void CWPSaver::Retry()
-    {
-    // Immediate retry. Mark that we're not waiting
-    // for an event and complete request.
-    iWaitCommsDb = EFalse;
-    iWaitFavourites = EFalse;
-    CompleteRequest();
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::Timeout
-// ----------------------------------------------------------------------------
-//
-TInt CWPSaver::Timeout(TAny* aSelf)
-    {
-    // There was a time-out. Retry saving even though we
-    // didn't get a notify from database.
-    CWPSaver* self = static_cast<CWPSaver*>( aSelf );
-    self->Retry();
-
-    return KErrNone;
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::HandleApDbEventL
-// ----------------------------------------------------------------------------
-//
-void CWPSaver::HandleApDbEventL( TEvent aEvent )
-    {
-    // We received an event from CommsDB. Retry if we're
-    // waiting for it.
-    if( iWaitCommsDb && aEvent == EDbAvailable )
-        {
-        Retry();
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::HandleFavouritesDbEventL
-// ----------------------------------------------------------------------------
-//
-void CWPSaver::HandleFavouritesDbEventL( RDbNotifier::TEvent /*aEvent*/ )
-    {
-    // We received an event from BookmarkDB. Retry if we're
-    // waiting for it.
-    if( iWaitFavourites )
-        {
-        Retry();
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPSaver::GetNumAccessDenied
-// ----------------------------------------------------------------------------
-//
-    
-TInt CWPSaver::GetNumAccessDenied()
-    {
-    return iNumAccessDenied;
-    }	
-
-// ----------------------------------------------------------------------------
-// CWPSaver::SetNumAccessDenied
-// ----------------------------------------------------------------------------
-//
-        
-void CWPSaver::SetNumAccessDenied(TInt aNumAccessDenied )
-    {
-    iNumAccessDenied = aNumAccessDenied;
-    }	
-//  End of File