eventsui/eventsutils/src/evtprofilehandler.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:27 +0100
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2008 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:  Profile Settings Handler.
*
*/


// System Includes
#include <e32base.h>
#include <centralrepository.h>
#include <ProfileEngineSDKCRKeys.h>
#include <hwrmvibrasdkcrkeys.h>

// User Includes
#include "evtutilsconsts.h"
#include "evtprofilehandler.h"
#include "evtdebug.h"

// Constants
static const TInt KSilentRing = 4;

// ================ Member funtions for CEvtProfileHandler class ===============

// ---------------------------------------------------------------------------
// CEvtProfileHandler::CEvtProfileHandler
// ---------------------------------------------------------------------------
//
CEvtProfileHandler::CEvtProfileHandler( MEvtProfileObserver& aObserver ):
									iObserver(aObserver)
	{
	}

// ---------------------------------------------------------------------------
// CEvtProfileHandler::~CEvtProfileHandler
// ---------------------------------------------------------------------------
//
CEvtProfileHandler::~CEvtProfileHandler()
	{

	if( iVibraNotifyHandler )
		{
		iVibraNotifyHandler->StopListening();
		}

	if( iTypeNotifyHandler )
		{
		iTypeNotifyHandler->StopListening();
		}

	if( iVolumeNotifyHandler )
		{
		iVolumeNotifyHandler->StopListening();
		}

    delete iVibraNotifyHandler;
	delete iTypeNotifyHandler;
    delete iVolumeNotifyHandler;

    delete iProfileSession;
    delete iVibraSession;
	}
	
// ---------------------------------------------------------------------------
// CEvtProfileHandler::NewL
// ---------------------------------------------------------------------------
//
CEvtProfileHandler* CEvtProfileHandler::NewL( MEvtProfileObserver& aObserver )
    {
	CEvtProfileHandler* self = NewLC( aObserver );
	CleanupStack::Pop( self );
	return self;
    }

// ---------------------------------------------------------------------------
// CEvtProfileHandler::NewLC
// ---------------------------------------------------------------------------
//
CEvtProfileHandler* CEvtProfileHandler::NewLC( MEvtProfileObserver& aObserver )
    {
	CEvtProfileHandler* self = new ( ELeave )CEvtProfileHandler( aObserver );
	CleanupStack::PushL( self );
	self->ConstructL( );
	return self;
    } 

// ---------------------------------------------------------------------------
// CEvtProfileHandler::ConstructL
// ---------------------------------------------------------------------------
//
void CEvtProfileHandler::ConstructL()
    {
    EVTUIDEBUG( "+ CEvtProfileHandler::ConstructL()" );
    
	// Create a cenrep session each for Profile and Vibra Cenrep Settings.
	iProfileSession = CRepository::NewL( KCRUidProfileEngine );
	iVibraSession = CRepository::NewL( KCRUidVibraCtrl );

	// Create the cenrep notification handlers to listen to the settings 
	// value changes.
    iVolumeNotifyHandler = CCenRepNotifyHandler::NewL(*this,
                                                     *iProfileSession,
                                                     CCenRepNotifyHandler::EIntKey,
                                                     KProEngActiveRingingVolume);

	iTypeNotifyHandler = CCenRepNotifyHandler::NewL(*this,
                                                     *iProfileSession,
                                                     CCenRepNotifyHandler::EIntKey,
                                                     KProEngActiveRingingType);

	iVibraNotifyHandler = CCenRepNotifyHandler::NewL(*this,
                                                     *iVibraSession,
                                                     CCenRepNotifyHandler::EIntKey,
                                                     KVibraCtrlProfileVibraEnabled);

	// Get the initial value of the Settings.
	User::LeaveIfError( iProfileSession->Get( KProEngActiveRingingVolume, iRingingVolume ) );
    User::LeaveIfError( iProfileSession->Get( KProEngActiveRingingType, iRingingType ) );
    User::LeaveIfError( iVibraSession->Get( KVibraCtrlProfileVibraEnabled, iVibra ) );

	// Start listening to settings change.
    iVolumeNotifyHandler->StartListeningL();
    iTypeNotifyHandler->StartListeningL();
    iVibraNotifyHandler->StartListeningL();
	
    EVTUIDEBUG( "- CEvtProfileHandler::ConstructL()" );
    }

// ---------------------------------------------------------------------------
// CEvtProfileHandler::Volume
// ---------------------------------------------------------------------------
//
TInt CEvtProfileHandler::Volume( )
	{
    EVTUIDEBUG1( "= CEvtProfileHandler::Volume() - %d", iRingingVolume );
	return iRingingVolume;
    }

// ---------------------------------------------------------------------------
// CEvtProfileHandler::IsSilentRingingType
// ---------------------------------------------------------------------------
//
TBool CEvtProfileHandler::IsSilentRingingType( )
	{
    EVTUIDEBUG1( "= CEvtProfileHandler::IsSilentRingingType() - %d", iRingingType );
    if( iRingingType == KSilentRing )
		return ETrue;
    else
    	return EFalse;
    }

// ---------------------------------------------------------------------------
// CEvtProfileHandler::IsVibra
// ---------------------------------------------------------------------------
//
TBool CEvtProfileHandler::IsVibra( )
	{
    EVTUIDEBUG1( "= CEvtProfileHandler::IsVibra() - %d", iVibra );
    return iVibra;
    }

// -----------------------------------------------------------------------------
// CEvtProfileHandler::HandleNotifyInt()
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
void CEvtProfileHandler::HandleNotifyInt(TUint32 aId, TInt aNewValue)
    {

   	if ( aId == KProEngActiveRingingVolume )
   		{
   		iRingingVolume = aNewValue;
   		}
   	else if ( aId == KProEngActiveRingingType )
		{
   		iRingingType = aNewValue;
   		}
   	else if ( aId == KVibraCtrlProfileVibraEnabled )
   		{
   		iVibra = aNewValue;
   		}
	iObserver.HandleProfileSettingsChange();
    }