securitydialogs/simlockui/src/SimLockDataHandlingDelegate.cpp
changeset 1 d5423fbb4f29
child 5 3b17fc5c9564
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/simlockui/src/SimLockDataHandlingDelegate.cpp	Tue Feb 02 00:44:34 2010 +0200
@@ -0,0 +1,175 @@
+/*
+* ============================================================================
+*  Name        : SimLockDataHandlingDelegate.cpp
+*  Part of     : Sim Lock UI Application
+*  Description : Implementation of Sim Lock UI Application
+*  Version     :
+*   
+* Copyright (c) 2005-2010 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:   Build info file for Ado domain appinstall 
+* ============================================================================
+*/
+
+// System Include Files
+#include <RMmCustomAPI.h>           // RMmCustomAPI, RMobilePhone
+
+// User Include Files
+#include "SimLockDataHandlingDelegate.h"
+#include "SimLockUI.pan"
+#include "SimLockISAServerDefinitions.h"
+
+
+TInt KSimLockTimeoutDelay = 5000000;       // 5 seconds
+
+// ===========================================================================
+// PUBLIC CONSTRUCTORS
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::NewL
+// ---------------------------------------------------------------------------
+CSimLockDataHandlingDelegate* CSimLockDataHandlingDelegate::NewL( RMmCustomAPI& aCustomAPI )
+    {
+    CSimLockDataHandlingDelegate* self = new ( ELeave ) CSimLockDataHandlingDelegate( aCustomAPI );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::~CSimLockDataHandlingDelegate
+// ---------------------------------------------------------------------------
+CSimLockDataHandlingDelegate::~CSimLockDataHandlingDelegate()
+    {
+    Cancel();
+    delete iTimer;
+    delete iSchedulerWait;
+    }
+
+// ===========================================================================
+// PUBLIC MEMBER FUNCTIONS
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::OpenSimLock
+// ---------------------------------------------------------------------------
+TInt CSimLockDataHandlingDelegate::OpenSimLock( const TDesC& aPassword )
+    {
+    // Use ETel custom API to deactive SimLock
+    return iCustomAPI.DeActivateSimLock( aPassword, RMmCustomAPI::EOperator );
+    }
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::IsSimLockOpen
+// ---------------------------------------------------------------------------
+TBool CSimLockDataHandlingDelegate::IsSimLockOpen() const
+    {
+
+    ASSERT( iDataHasBeenRead );
+
+    return iLockIsOpen;
+    }
+
+
+// ===========================================================================
+// PRIVATE CONSTRUCTORS
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::CSimLockDataHandlingDelegate
+// ---------------------------------------------------------------------------
+CSimLockDataHandlingDelegate::CSimLockDataHandlingDelegate( RMmCustomAPI& aCustomAPI )
+:   CActive( EPriorityStandard ),
+    iCustomAPI( aCustomAPI )
+    { //lint !e1403 iIndicators initialized in CBase ctor
+    }
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::ConstructL
+// ---------------------------------------------------------------------------
+void CSimLockDataHandlingDelegate::ConstructL()
+    {
+    CActiveScheduler::Add(this);
+    iSchedulerWait = new ( ELeave ) CActiveSchedulerWait;
+    iTimer = CPeriodic::NewL(EPriorityHigh);
+    }
+
+// ===========================================================================
+// PRIVATE MEMBER FUNCTIONS
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::RunL
+// ---------------------------------------------------------------------------
+void CSimLockDataHandlingDelegate::RunL()
+    {
+
+    // Stop the current run sequence
+    iSchedulerWait->AsyncStop();
+    }
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::DoCancel
+// ---------------------------------------------------------------------------
+void CSimLockDataHandlingDelegate::DoCancel()
+    {
+  
+    // Cancel timer
+    iTimer->Cancel();
+
+    // Stop the current run sequence so we can continue execution in a
+    // synchronous fashion
+    iSchedulerWait->AsyncStop();
+    }
+
+// ---------------------------------------------------------------------------
+// CSimLockTelephonyProxy::TimerElapsed
+// ---------------------------------------------------------------------------
+TInt CSimLockDataHandlingDelegate::TimerElapsed(TAny* /*aUnused*/)
+    {        
+    // Some request did not complete while reading Sim Lock data.
+    // This is not expected, so Panic.
+    Panic( ESimLockUIUnableToReadSimLock );
+    
+    return 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CSimLockDataHandlingDelegate::CompleteRequestWithTimeout
+// ---------------------------------------------------------------------------
+void CSimLockDataHandlingDelegate::CompleteRequestWithTimeout()
+    {
+    
+    ASSERT( ! iTimer->IsActive() );
+    
+    if ( ! iTimer->IsActive() )
+        {        
+        iTimer->Cancel();
+        }
+        
+    // Start timer with KSimLockProxyTimeout to protect against requests that
+    // do not complete for some reason.
+    iTimer->Start(KSimLockTimeoutDelay,0,TCallBack(&TimerElapsed));              
+        
+    SetActive();
+
+    // Wait for request to complete.  Response time is expected to be negligible.
+    iSchedulerWait->Start();
+    iTimer->Cancel();
+    }
+
+
+// end of file.
+