remotelock/RemoteLockEngine/Src/RLLockObserver.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 26 Jan 2010 15:20:08 +0200
changeset 0 164170e6151a
permissions -rw-r--r--
Revision: 201004

/*
* Copyright (c) 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:  Implementation of Unlocking event observer
*
*/

#include    <PSVariables.h>
#include    <coreapplicationuisdomainpskeys.h>
#include    "RLLockObserver.h"	
#include    "RemoteLockTrace.h"


// ================= MEMBER FUNCTIONS =======================
//
// ----------------------------------------------------------
// CRLLockObserver::NewL()
// Constructs a new entry with given values.
// ----------------------------------------------------------
//
CRLLockObserver* CRLLockObserver::NewL( MRLLockObserverHandler* aHandler )
    {
    CRLLockObserver* self = new (ELeave) CRLLockObserver( aHandler );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }
//
// ----------------------------------------------------------
// CRLLockObserver::CRLLockObserver()
// Destructor
// ----------------------------------------------------------
//
CRLLockObserver::~CRLLockObserver()
    {
    Cancel();
    }
//
// ----------------------------------------------------------
// CRLLockObserver::Start()
// Starts listening KCoreAppUIsAutolockStatus/
// KPSUidAutolockStatusValue event 
// ----------------------------------------------------------
//
TInt CRLLockObserver::Start()
    {
    RL_TRACE_PRINT(" [ rl.exe ] CLockObserver::Start() "); 
    
    if (IsActive())
        {
        return KErrInUse;
        }   
        
    iStatus = KRequestPending;
    
    #ifndef RD_STARTUP_CHANGE   
    iProperty.Attach( KUidSystemCategory, KPSUidAutolockStatusValue ); 
    #else //RD_STARTUP_CHANGE
    iProperty.Attach( KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus ); 
    #endif //RD_STARTUP_CHANGE    
    iProperty.Subscribe(iStatus);
    
    SetActive();
    return KErrNone;
    }
//
// ----------------------------------------------------------
// CRLLockObserver::CRLLockObserver()
// C++ constructor
// ----------------------------------------------------------
// 
CRLLockObserver::CRLLockObserver( MRLLockObserverHandler* aHandler ) 
    : CActive(0), iHandler( aHandler )
    {                            
    }
//
// ----------------------------------------------------------
// CRLLockObserver::ConstructL()
// ----------------------------------------------------------
// 
void CRLLockObserver::ConstructL()
    {
    RL_TRACE_PRINT(" [ rl.exe ] CLockObserver::ConstructL() ");
    // Add this active object to the scheduler.
    CActiveScheduler::Add(this);
    //Start listenning
    Start();
    }
//
// ----------------------------------------------------------
// CRLLockObserver::RunL()
// Called when device (autolock) is activated from menu.
// ----------------------------------------------------------
// 
void CRLLockObserver::RunL()
    {
    RL_TRACE_PRINT(" [ rl.exe ] CLockObserver::RunL() ");

    TInt autolockState;
    iProperty.Get( autolockState );
    
    #ifndef RD_STARTUP_CHANGE
    if (autolockState == EPSAutolockOff )
    #else //RD_STARTUP_CHANGE
    if (autolockState == EAutolockOff )
    #endif //RD_STARTUP_CHANGE
        {
        RL_TRACE_PRINT(" [ rl.exe ] CLockObserver::RunL remove Memory card Password ");
        iHandler->HandleUnlockEvent();
        } 
    Start();
    }
//
// ----------------------------------------------------------
// CRLLockObserver::DoCancel()
// Cancels event listening
// ----------------------------------------------------------
// 
void CRLLockObserver::DoCancel()
    {
    RL_TRACE_PRINT(" [ rl.exe ] CLockObserver::DoCancel() ");
    iProperty.Cancel();
    }
    
// End of file