diff -r 000000000000 -r 2e3d3ce01487 coreapplicationuis/SysAp/Src/sysaplightpluginhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/coreapplicationuis/SysAp/Src/sysaplightpluginhandler.cpp Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,136 @@ +/* +* Copyright (c) 2007 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: System Application light extension plugin handler +* +*/ + + +#include +#include +#include "sysaplightpluginhandler.h" +#include "SysAp.hrh" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::CSysApLightPluginHandler +// --------------------------------------------------------------------------- +// +CSysApLightPluginHandler::CSysApLightPluginHandler() : iPlugin( NULL ), + iEventCompleted( ETrue ) + { + } + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::ConstructL +// --------------------------------------------------------------------------- +// +void CSysApLightPluginHandler::ConstructL() + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::ConstructL") ) ); + + TRAPD( err, iPlugin = CSysApLightControlPlugin::NewL() ); + + if ( err != KErrNone ) + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::ConstructL: loading plugin failed, err=%d"), err ) ); + iPlugin = NULL; + } + } + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::CSysApLightPluginHandler +// --------------------------------------------------------------------------- +// +CSysApLightPluginHandler* CSysApLightPluginHandler::NewL() + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::NewL") ) ); + CSysApLightPluginHandler* self = new (ELeave) CSysApLightPluginHandler(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::~CSysApLightPluginHandler +// --------------------------------------------------------------------------- +// +CSysApLightPluginHandler::~CSysApLightPluginHandler() + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::~CSysApLightPluginHandler") ) ); + delete iPlugin; + } + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::HandleEvent +// --------------------------------------------------------------------------- +// +void CSysApLightPluginHandler::HandleEvent( SysApLightExtension::TLightEvent aLightEvent, const TDesC8& aData ) + { + iEventCompleted = EFalse; + + if ( iPlugin ) + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::HandleEvent: aLightEvent=%d"), aLightEvent ) ); + + TRAPD( err, iPlugin->LightEventL( aLightEvent, aData ) ); + + if ( err != KErrNone ) + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::HandleEvent: err=%d"), err ) ); + } + } + } + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::HandleEventNoAction +// --------------------------------------------------------------------------- +// +void CSysApLightPluginHandler::HandleEventNoAction( SysApLightExtension::TLightEvent aLightEvent, const TDesC8& aData ) + { + HandleEvent( aLightEvent, aData ); + HandleCommand( SysApLightExtension::ELightCommandNoAction ); + } + + +// --------------------------------------------------------------------------- +// CSysApLightPluginHandler::HandleCommand +// --------------------------------------------------------------------------- +// +TBool CSysApLightPluginHandler::HandleCommand( SysApLightExtension::TLightCommand aLightCommand, const TDesC8& aData ) + { + if ( !iPlugin ) + { + return EFalse; // light extension plugin not installed + } + + iEventCompleted = ETrue; + + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::HandleCommand: aLightCommand=%d"), aLightCommand ) ); + + TInt response(SysApLightExtension::ECommandHandled); + + TRAPD( err, response = iPlugin->HandleLightCommandL( aLightCommand, aData ) ); + + if ( err != KErrNone ) + { + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::HandleLightCommand: err=%d"), err ) ); + response = SysApLightExtension::ECommandHandled; // don't apply default light control in case of a leave + } + + TRACES( RDebug::Print( _L("CSysApLightPluginHandler::HandleLightCommand: response=%d"), response ) ); + + return (response == SysApLightExtension::ECommandHandled ? ETrue : EFalse); + }