diff -r 5e7d68cc22e0 -r 0818dd463d41 coreapplicationuis/SysAp/Src/gan/sysapganhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/coreapplicationuis/SysAp/Src/gan/sysapganhandler.cpp Thu Aug 19 10:05:08 2010 +0300 @@ -0,0 +1,142 @@ +/* +* Copyright (c) 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: Handle GAN server events +* +*/ + +#include +#include "coreapplicationuisdomainpskeys.h" +#include "sysapganhandler.h" +#include "SysApAppUi.h" +#include "SysAp.hrh" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CSysApGanHandler::CSysApGanHandler( CSysApAppUi& aSysApAppUi ) : + iSysApAppUi( aSysApAppUi ), + iGanMode( EGanModeUnspecified ) + { + } + +// --------------------------------------------------------------------------- +// Symbian 2nd phase constructor +// --------------------------------------------------------------------------- +// +void CSysApGanHandler::ConstructL() + { + TRACES( RDebug::Print( _L("CSysApGanHandler::ConstructL IN") ) ); + TInt err( KErrNone ); + + // Start listening for GAN mode + err = iPropertyGanMode.Attach( KPSUidCoreApplicationUIs, KCoreAppUIsGanPropertyGanMode ); + User::LeaveIfError( err ); + iGanModeListener = CSysApGanPropertyListener::NewL( iPropertyGanMode, *this ); + iGanModeListener->Subscribe(); + + // Start listening for signal strength + err = iPropertySignalLevel.Attach( KPSUidCoreApplicationUIs, KCoreAppUIsGanPropertySignalLevel ); + User::LeaveIfError( err ); + iSignalLevelListener = CSysApGanPropertyListener::NewL( iPropertySignalLevel, *this ); + iSignalLevelListener->Subscribe(); + + // Get current GAN mode + TInt mode; + err = iPropertyGanMode.Get( mode ); + if( KErrNone == err ) + { + iGanMode = (TCoreAppUIsGanMode)mode; + } + + // Get current GAN signal level + iPropertySignalLevel.Get( iGanSignalLevel ); + + TRACES( RDebug::Print( _L("CSysApGanHandler::ConstructL OUT") ) ); + } + +// --------------------------------------------------------------------------- +// Static constructor. +// --------------------------------------------------------------------------- +// +CSysApGanHandler* CSysApGanHandler::NewL( CSysApAppUi& aSysApAppUi ) + { + CSysApGanHandler* self = new (ELeave) CSysApGanHandler( aSysApAppUi ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CSysApGanHandler::~CSysApGanHandler() + { + delete iGanModeListener; + delete iSignalLevelListener; + iPropertyGanMode.Close(); + iPropertySignalLevel.Close(); + } + +TBool CSysApGanHandler::IsInGanMode() + { + return iGanMode == EGanModeGAN; + } + +TInt CSysApGanHandler::GanSignalLevel() + { + return iGanSignalLevel; + } + +// --------------------------------------------------------------------------- +// Handle UI Status RProperty change event. Read the new RProperty value +// and publish the content on idle screen. +// --------------------------------------------------------------------------- +// +void CSysApGanHandler::PropertyEvent( + CSysApGanPropertyListener& aPropertyListener, + TInt aStatus ) + { + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent IN") ) ); + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent status %d"), aStatus ) ); + + if( KErrNone == aStatus ) + { + if( iGanModeListener == &aPropertyListener ) + { + // GAN mode event + TInt mode; + TInt err = iPropertyGanMode.Get( mode ); + iGanMode = (TCoreAppUIsGanMode)mode; + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent RProp err %d"), err ) ); + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent GAN mode %d"), iGanMode ) ); + iSysApAppUi.SetSignalIndicatorL(); + } + else if( iSignalLevelListener == &aPropertyListener ) + { + // Signal level event + TInt err = iPropertySignalLevel.Get( iGanSignalLevel ); + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent RProp err %d"), err ) ); + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent signal level %d"), iGanSignalLevel ) ); + iSysApAppUi.UpdateSignalBarsL(); + } + } + aPropertyListener.Subscribe(); + TRACES( RDebug::Print( _L("CSysApGanHandler::PropertyEvent OUT") ) ); + } +