startupservices/Startup/MediatorPlugin/src/StartupMediatorPluginPSObserver.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 14 Sep 2010 21:35:53 +0300
branchRCL_3
changeset 21 9af619316cbf
parent 20 c2c61fdca848
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* 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: 
*           This class the handles the received indications from the System
*           Agent. Indications are SimStatus, SecurityCodeStatus and
*           MasterCodeStatus.
*
*/


// SYSTEM INCLUDES
#include <MediatorDomainUIDs.h>
#include <startupdomainpskeys.h>
#include <SecondaryDisplay/SecondaryDisplaySystemStateAPI.h>
#include <avkondomainpskeys.h>
#include <coreapplicationuisdomainpskeys.h>


// USER INCLUDES
#include "StartupMediatorPlugin.h"
#include "StartupMediatorPluginSubscriber.h"
#include "StartupMediatorPluginTrace.h"
#include "StartupMediatorPluginPSObserver.h"


// ================= MEMBER FUNCTIONS =======================

// ----------------------------------------------------
// CStartupMediatorPluginPSObserver::CStartupMediatorPluginPSObserver( CStartupMediatorPlugin* aStartupMediatorPlugin )
// C++ default constructor can NOT contain any code, that
// might leave.
// ----------------------------------------------------
CStartupMediatorPluginPSObserver::CStartupMediatorPluginPSObserver( CStartupMediatorPlugin* aStartupMediatorPlugin ) :
    iStartupMediatorPlugin( aStartupMediatorPlugin )
    {
    }

// ----------------------------------------------------
// CStartupMediatorPluginPSObserver::ConstructL()
// ----------------------------------------------------
void CStartupMediatorPluginPSObserver::ConstructL()
    {
    TRACES("CStartupMediatorPluginPSObserver::ConstructL()");

    // -------- Autolock status -------------
    iAutoLockStatusSubscriber = CStartupMediatorPluginSubscriber::NewL( *this, 
                                                                        KPSUidCoreApplicationUIs, 
                                                                        KCoreAppUIsAutolockStatus );
    iAutoLockStatusSubscriber->Subscribe();


    // -------- Keyquard status -------------
    iKeyGuardStatusSubscriber = CStartupMediatorPluginSubscriber::NewL( *this, 
                                                                        KPSUidAvkonDomain, 
                                                                        KAknKeyguardStatus );
    iKeyGuardStatusSubscriber->Subscribe();


    // -------- Global system state ---------
    iGlobalSystemStateSubscriber = CStartupMediatorPluginSubscriber::NewL( *this, 
                                                                           KPSUidStartup, 
                                                                           KPSGlobalSystemState );
    iGlobalSystemStateSubscriber->Subscribe();



    TRACES("CStartupMediatorPluginPSObserver::ConstructL(): End");
    }

// ----------------------------------------------------------------------------
// CStartupMediatorPluginPSObserver::HandlePropertyChangedL()
// ----------------------------------------------------------------------------
void CStartupMediatorPluginPSObserver::HandlePropertyChangedL( const TUid& aCategory, TUint aKey )
    {
    TRACES("CStartupMediatorPluginPSObserver::HandlePropertyChangedL()");
    TRACES1("CStartupMediatorPluginPSObserver::HandlePropertyChangedL(): aKey: %d",aKey );

    // -------- Global system state ---------
    if ( aCategory == KPSUidStartup && aKey == KPSGlobalSystemState )
        {
        TRACES("CStartupMediatorPluginPSObserver::HandlePropertyChangedL(): KPSGlobalSystemState");
        TInt value;
        value = iStartupMediatorPlugin->GetSystemStateL();
        if ( value == KErrNone )
            {
            TPckgBuf<TInt> data( value );
            iStartupMediatorPlugin->RaiseEvent( KMediatorSecondaryDisplayDomain,
                                                SecondaryDisplay::KCatSystemState, 
                                                SecondaryDisplay::EMsgSystemStateChange,
                                                TVersion(0,0,0),
                                                data );    
            }
        }

    // -------- Autolock status -------------
    else if ( aCategory == KPSUidCoreApplicationUIs && aKey == KCoreAppUIsAutolockStatus )
        {
        TRACES("CStartupMediatorPluginPSObserver::HandlePropertyChangedL(): KPSUidAutolockStatusValue");
        TInt value;
        value = iStartupMediatorPlugin->GetAutolockStateL();
        TPckgBuf<TInt> data( value );
             
        iStartupMediatorPlugin->RaiseEvent( KMediatorSecondaryDisplayDomain,
                                            SecondaryDisplay::KCatSystemState, 
                                            SecondaryDisplay::EMsgAutolockEvent,
                                            TVersion(0,0,0),
                                            data );
        }
    
    // -------- Keyquard status -------------
    else if ( aCategory == KPSUidAvkonDomain && aKey == KAknKeyguardStatus )
        {
        TRACES("CStartupMediatorPluginPSObserver::HandlePropertyChangedL(): KAknKeyguardStatus");
        TInt value;
        value = iStartupMediatorPlugin->GetKeyGuardStateL();
        TPckgBuf<TInt> data( value );
             
        iStartupMediatorPlugin->RaiseEvent( KMediatorSecondaryDisplayDomain,
                                            SecondaryDisplay::KCatSystemState, 
                                            SecondaryDisplay::EMsgKeyGuardEvent,
                                            TVersion(0,0,0),
                                            data );
        }
    
    else
        {   
        TRACES("CStartupMediatorPluginPSObserver::HandlePropertyChangedL(): Key not supported");        
        }
    TRACES("CStartupMediatorPluginPSObserver::HandlePropertyChangedL(): End");
    }

// ----------------------------------------------------
// CStartupMediatorPluginPSObserver::NewL( CStartupAppUi* aStartupAppUi )
// ----------------------------------------------------
CStartupMediatorPluginPSObserver* CStartupMediatorPluginPSObserver::NewL( CStartupMediatorPlugin* aStartupMediatorPlugin )
    {
    TRACES("CStartupMediatorPluginPSObserver::NewL()");
    CStartupMediatorPluginPSObserver* self = new (ELeave) CStartupMediatorPluginPSObserver( aStartupMediatorPlugin );

    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop(); // self

    TRACES("CStartupMediatorPluginPSObserver::NewL(): End");
    return self;
    }

// ----------------------------------------------------
// CStartupMediatorPluginPSObserver::~CStartupMediatorPluginPSObserver()
// ----------------------------------------------------
CStartupMediatorPluginPSObserver::~CStartupMediatorPluginPSObserver()
    {
    TRACES("CStartupMediatorPluginPSObserver::~CStartupMediatorPluginPSObserver()");

    delete iAutoLockStatusSubscriber;
    delete iKeyGuardStatusSubscriber;
    delete iGlobalSystemStateSubscriber;
    iProperty.Close();

    TRACES("CStartupMediatorPluginPSObserver::~CStartupMediatorPluginPSObserver(): End");
    }

//  End of File