diff -r 65a3ef1d5bd0 -r f742655b05bf commsconfig/cscengine/src/cscenguiextensionpluginhandler.cpp --- a/commsconfig/cscengine/src/cscenguiextensionpluginhandler.cpp Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,390 +0,0 @@ -/* -* Copyright (c) 2007-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: For CSC needed Aiw handling for ui extension plug-ins -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cscenglogger.h" -#include "cscengstartuphandler.h" -#include "mcscenguiextensionobserver.h" -#include "cscenguiextensionpluginhandler.h" - -// Resource file location. -_LIT( KCSCEngineResourceFile, "cscengine.rsc" ); // file - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -CCSCEngUiExtensionPluginHandler::CCSCEngUiExtensionPluginHandler( - CEikonEnv& aEikEnv, - MCSCEngUiExtensionObserver& aObserver, - CCSCEngStartupHandler& aStartupHandler ): - iEikEnv( aEikEnv ), - iObserver( aObserver ), - iStartupHandler( aStartupHandler ) - { - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -void CCSCEngUiExtensionPluginHandler::ConstructL() - { - CSCENGDEBUG( "CCSCEngUiExtensionPluginHandler::ConstructL - begin" ); - - // Attach to AIW Framework. - iServiceHandler = CAiwServiceHandler::NewL(); - - // Load resource file to the memory. - TFileName resourceFile = TParsePtrC( PathInfo::RomRootPath() ).Drive(); - resourceFile.Append( KDC_RESOURCE_FILES_DIR ); - resourceFile.Append( KCSCEngineResourceFile ); - BaflUtils::NearestLanguageFile( iEikEnv.FsSession(), resourceFile ); - iResourceOffset = iEikEnv.AddResourceFileL( resourceFile ); - - CSCENGDEBUG( "CCSCEngUiExtensionPluginHandler::ConstructL - end" ); - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -EXPORT_C CCSCEngUiExtensionPluginHandler* - CCSCEngUiExtensionPluginHandler::NewL( - CEikonEnv& aEikEnv, - MCSCEngUiExtensionObserver& aObserver, - CCSCEngStartupHandler& aStartupHandler ) - { - CCSCEngUiExtensionPluginHandler* self = - CCSCEngUiExtensionPluginHandler::NewLC( - aEikEnv, aObserver, aStartupHandler ); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -EXPORT_C CCSCEngUiExtensionPluginHandler* - CCSCEngUiExtensionPluginHandler::NewLC( - CEikonEnv& aEikEnv, - MCSCEngUiExtensionObserver& aObserver, - CCSCEngStartupHandler& aStartupHandler ) - { - CCSCEngUiExtensionPluginHandler* self = - new ( ELeave ) CCSCEngUiExtensionPluginHandler( - aEikEnv, aObserver, aStartupHandler ); - - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// --------------------------------------------------------------------------- -// -CCSCEngUiExtensionPluginHandler::~CCSCEngUiExtensionPluginHandler() - { - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::~CCSCEngUiExtensionPluginHandler - begin" ); - - iEikEnv.DeleteResourceFile( iResourceOffset ); - iUiExtensionPluginInfoArray.Reset(); - iUiExtensionPluginInfoArray.Close(); - delete iServiceHandler; - - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::~CCSCEngUiExtensionPluginHandler - end" ); - } - - -// --------------------------------------------------------------------------- -// Initializes CSC supported ui extension plugins. -// --------------------------------------------------------------------------- -// -EXPORT_C void CCSCEngUiExtensionPluginHandler::InitializePluginsL() - { - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::InitializePluginsL - begin" ); - - // Attach to CSC supported ui extension plugins and execute initalization. - iServiceHandler->AttachL( R_CSCENG_INTEREST_UI_EXT_PLUGIN ); - - iServiceHandler->ExecuteServiceCmdL( - KAiwCmdCSCUiExtensionPlugins, - iServiceHandler->InParamListL(), - iServiceHandler->OutParamListL(), - EPluginInitialize, - this ); - - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::InitializePluginsL - end" ); - } - - -// --------------------------------------------------------------------------- -// Launches plugin provided setting view. -// --------------------------------------------------------------------------- -// -EXPORT_C void CCSCEngUiExtensionPluginHandler::LaunchUiExtensionL( - const TUid& aPluginUid, const TUid& aViewUid, TBool aLaunchedFromAI ) - { - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::LaunchUiExtensionL - begin" ); - - // Set plugins Uid to generic param data. - CAiwGenericParamList& paramList = iServiceHandler->OutParamListL(); - TAiwVariant variant( aPluginUid ); - TAiwGenericParam genericParamUid( EGenericParamError, variant ); - paramList.AppendL( genericParamUid ); - - // Set view id to be returned to generic param data. - variant.Reset(); - variant.Set( aViewUid ); - TAiwGenericParam genericParamViewId( EGenericParamError, variant ); - paramList.AppendL( genericParamViewId ); - - // Set URL to generic param data if set in CSC startup. - TBuf url; - TInt err = iStartupHandler.GetParamUrl( url ); - - if ( !err ) - { - variant.Reset(); - variant.Set( url ); - TAiwGenericParam genericParamURL( EGenericParamError, variant ); - paramList.AppendL( genericParamURL ); - } - - // Execute service handler command. - if ( aLaunchedFromAI ) - { - iServiceHandler->ExecuteServiceCmdL( KAiwCmdCSCUiExtensionPlugins, - iServiceHandler->InParamListL(), - paramList, - EPluginOpenExtensionViewFromAI, - this ); - } - else - { - iServiceHandler->ExecuteServiceCmdL( KAiwCmdCSCUiExtensionPlugins, - iServiceHandler->InParamListL(), - paramList, - EPluginOpenExtensionView, - this ); - } - - - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::LaunchUiExtensionL - end" ); - } - - -// --------------------------------------------------------------------------- -// Returns item from UI Extension plug-in array -// --------------------------------------------------------------------------- -// -EXPORT_C TUiExtensionPluginInfo - CCSCEngUiExtensionPluginHandler::ItemFromPluginInfoArray( TInt aIndex ) - { - CSCENGDEBUG( "CCSCEngUiExtensionPluginHandler::ItemFromPluginInfoArray" ); - - return iUiExtensionPluginInfoArray[ aIndex ]; - } - - -// --------------------------------------------------------------------------- -// Returns plugin counts from UiExtensionPluginsInfoArray. -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CCSCEngUiExtensionPluginHandler::PluginCount() const - { - CSCENGDEBUG2( - "CCSCEngUiExtensionPluginHandler::PluginCount: %d", - iUiExtensionPluginInfoArray.Count() ); - - return iUiExtensionPluginInfoArray.Count(); - } - - -// --------------------------------------------------------------------------- -// From class MAiwNotifyCallBack -// Handles received callbacks from AIW plugin. -// --------------------------------------------------------------------------- -// -TInt CCSCEngUiExtensionPluginHandler::HandleNotifyL( - TInt /*aCmdId*/, - TInt aEventId, - CAiwGenericParamList& /*aEventParamList*/, - const CAiwGenericParamList& aInParamList ) - { - CSCENGDEBUG( "CCSCEngUiExtensionPluginHandler::HandleNotifyL - begin"); - - TInt err( KErrNone ); - - switch ( aEventId ) - { - case KAiwEventStarted: - { - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::HandleNotifyL KAiwEventStarted" ); - - SetPluginInitInfo( aInParamList ); - - TInt index( 0 ); - TUid pluginUid( KNullUid ); - - GetPluginIndexAndUid( aInParamList, index, pluginUid ); - - iObserver.NotifyUiExtensionPluginResponse( - EPluginInitialized, index, pluginUid ); - break; - } - case KAiwEventStopped: - { - TInt index( 0 ); - TUid pluginUid( KNullUid ); - - GetPluginIndexAndUid( aInParamList, index, pluginUid ); - - iObserver.NotifyUiExtensionPluginResponse( - EPluginExited, index, pluginUid ); - - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::HandleNotifyL KAiwEventStopped" ); - break; - } - case KAiwEventError: - { - TInt index( 0 ); - TUid pluginUid( KNullUid ); - - GetPluginIndexAndUid( aInParamList, index, pluginUid ); - - iObserver.NotifyUiExtensionPluginResponse( - EPluginError, index, pluginUid ); - - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::HandleNotifyL KAiwEventError" ); - break; - } - default: - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::HandleNotifyL: !!DEFAULT!!" ); - break; - } - - CSCENGDEBUG( "CCSCEngUiExtensionPluginHandler::HandleNotifyL - end" ); - - return err; - } - - -// --------------------------------------------------------------------------- -// For getting plug-ins index in plug-in info array and plug-ins uid. -// --------------------------------------------------------------------------- -// -void CCSCEngUiExtensionPluginHandler::GetPluginIndexAndUid( - const CAiwGenericParamList& aInParamList, - TInt aIndex, - TUid aPluginUid ) - { - const TAiwGenericParam* genericParam = NULL; - - // First and only generic value is plugins uid value. - genericParam = aInParamList.FindFirst( aIndex, - EGenericParamError, - EVariantTypeTUid ); - - aPluginUid = genericParam->Value().AsTUid(); - - for ( TInt i = 0; i < iUiExtensionPluginInfoArray.Count(); i++ ) - { - if ( aPluginUid == iUiExtensionPluginInfoArray[ i ].iPluginsUid ) - { - aIndex = i; - break; - } - } - } - - -// --------------------------------------------------------------------------- -// For parsing and settings plug-in initialization info -// --------------------------------------------------------------------------- -// -void CCSCEngUiExtensionPluginHandler::SetPluginInitInfo( - const CAiwGenericParamList& aInParamList ) - { - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::SetPluginInitInfoL - begin" ); - - TUiExtensionPluginInfo pluginInfo; - - TInt index = 0; - - if ( aInParamList.Count() ) - { - const TAiwGenericParam* genericParam = NULL; - - // First generic value is plugin Uid. - genericParam = aInParamList.FindFirst( index, - EGenericParamError, - EVariantTypeTUid ); - - pluginInfo.iPluginsUid = genericParam->Value().AsTUid(); - - // Second generic value is UI extension´s name. - genericParam = aInParamList.FindNext( index, - EGenericParamError, - EVariantTypeDesC ); - - pluginInfo.iUiExtensionName.Copy( genericParam->Value().AsDes() ); - - // Third generic value is ui extension´s placing info - // 0 = listbox, 1 = options menu - genericParam = aInParamList.FindNext( index, - EGenericParamError, - EVariantTypeTInt32 ); - - TInt32 place = genericParam->Value().AsTInt32(); - pluginInfo.iPlace = place; - - CSCENGDEBUG2( - "CCSCEngUiExtensionPluginHandler::SetPluginInitInfoL Place: %d", - place ); - } - - iUiExtensionPluginInfoArray.Append( pluginInfo ); - - CSCENGDEBUG( - "CCSCEngUiExtensionPluginHandler::SetPluginInitInfoL - end" ); - }