phoneengine/PhoneCntFinder/src/Misc/CPhCntMmiSecurityImpl.cpp
changeset 0 5f000ab63145
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/PhoneCntFinder/src/Misc/CPhCntMmiSecurityImpl.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,198 @@
+/*
+* Copyright (c) 2002 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:  Implementation of security operations
+*
+*/
+
+
+// INCLUDE FILES
+#include    "CPhCntMmiSecurityImpl.h"
+#include    <secuimanualsecuritysettings.h>
+
+// CONSTANTS
+#ifdef _DEBUG
+_LIT( KPhCntMmiSecurity, "PhCntMmi" );
+#endif // _DEBUG
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPhCntMmiSecurityImpl::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CPhCntMmiSecurityImpl* CPhCntMmiSecurityImpl::NewL()
+    {
+    CPhCntMmiSecurityImpl* self = 
+        new (ELeave) CPhCntMmiSecurityImpl;
+    
+    return self;
+    }
+   
+// Destructor
+CPhCntMmiSecurityImpl::~CPhCntMmiSecurityImpl()
+    {
+    DestroyModel();
+    }
+
+// ---------------------------------------------------------
+// CPhCntMmiSecurityImpl::ChangePinL
+// ---------------------------------------------------------
+//
+TBool CPhCntMmiSecurityImpl::ChangePinL(
+        TPinCommand aCommand,
+        const TDesC& aCode,
+        const TDesC& aNewPin,
+        const TDesC& aVerifyNew )
+    {
+    CManualSecuritySettings& model = CreateModelL();
+    
+    // Initially, setting is pin2.
+    CManualSecuritySettings::TPin pin = 
+        CManualSecuritySettings::EPin2;
+
+    TBool result = EFalse;
+
+    switch ( aCommand )
+        {
+        case ECmdChangePin:
+            
+            // Change setting.
+            //
+            pin = CManualSecuritySettings::EPin1;
+            
+            // Flow through..
+            //
+        case ECmdChangePin2:
+            
+            result = model.ChangePinL( 
+                pin,
+                aCode,
+                aNewPin,
+                aVerifyNew );
+            break;
+
+        case ECmdUnblockPin:
+            
+            // Change setting
+            //
+            pin = CManualSecuritySettings::EPin1;
+
+            // Flow through..
+            //
+        case ECmdUnblockPin2:
+            
+            result = model.UnblockPinL( 
+                pin,
+                aCode,
+                aNewPin,
+                aVerifyNew );
+            break;
+
+        default:
+            // Case not handled, panic.
+            Panic();
+            break;
+        }
+
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CPhCntMmiSecurityImpl::ChangeSimLockL
+// ---------------------------------------------------------
+//
+TBool CPhCntMmiSecurityImpl::ChangeSimLockL(
+        TSimCommand aCommand,
+        const TDesC& aCode,
+        const TDesC& aType )
+    {   
+    CManualSecuritySettings& model = CreateModelL();
+    TBool result = EFalse;
+
+    switch ( aCommand )
+        {
+        case ECmdOpenLock:
+            result = 
+                model.UnlockSimL( aCode, aType );
+            break;
+        case ECmdCloseLock:
+            result =
+                model.LockSimL( aCode, aType );
+            break;
+        default:
+            // Case not handled, panic.
+            Panic();
+            break;
+        }
+
+    return result;
+    }
+
+// ---------------------------------------------------------
+// CPhCntMmiSecurityImpl::Cancel
+// ---------------------------------------------------------
+//
+void CPhCntMmiSecurityImpl::Cancel()
+    {
+    if ( iModel )
+        {
+        iModel->CancelChangePin();
+        iModel->CancelUnblockPin();
+        iModel->CancelLockSim();
+        iModel->CancelUnlockSim();
+
+        DestroyModel();
+        }
+    }
+
+// ---------------------------------------------------------
+// CPhCntMmiSecurityImpl::CreateModelL
+// ---------------------------------------------------------
+//
+CManualSecuritySettings& 
+    CPhCntMmiSecurityImpl::CreateModelL()
+    {
+    if ( !iModel )
+        {
+        iModel = CManualSecuritySettings::NewL();
+        }
+
+    return *iModel;
+    }
+
+// ---------------------------------------------------------
+// CPhCntMmiSecurityImpl::DestroyModel
+// ---------------------------------------------------------
+//
+void CPhCntMmiSecurityImpl::DestroyModel()
+    {
+    delete iModel; 
+    iModel = NULL;
+    }
+
+// ---------------------------------------------------------
+// CPhCntMmiSecurityImpl::Panic
+// ---------------------------------------------------------
+//
+void CPhCntMmiSecurityImpl::Panic()
+    {
+    // We only panic with debug builds.
+    __ASSERT_DEBUG( 
+        EFalse, 
+        User::Panic( KPhCntMmiSecurity, 0 ) );
+    }
+
+//  End of File  
+