diff -r 000000000000 -r f72a12da539e menufw/menufwui/mmextensions/mmfolderuiextension/src/mmfolderuiextplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/menufwui/mmextensions/mmfolderuiextension/src/mmfolderuiextplugin.cpp Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,148 @@ +/* +* Copyright (c) 2007-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: Folder UI extension plugin + * +*/ + + + +#include + +#include "mmpluginsharedresources.h" +#include "menudebug.h" +#include "mmfolderuiextplugin.h" +#include "mmfolderuiextpluginconstants.h" +#include "mmfoldercommand.h" +#include "hnglobals.h" +#include "mmguiconstants.h" +#include +#include +#include +#include + +// ============================ MEMBER FUNCTIONS ============================= +// --------------------------------------------------------------------------- +// Symbian factory function. +// --------------------------------------------------------------------------- +// +CMmFolderUiExtPlugin* CMmFolderUiExtPlugin::NewL( + MMmActionRequest& aActionRequest ) + { + CMmFolderUiExtPlugin* self = + new( ELeave ) CMmFolderUiExtPlugin( aActionRequest ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// Symbian second phase constructor. +// --------------------------------------------------------------------------- +// +void CMmFolderUiExtPlugin::ConstructL() + { + iSharedResources = NULL; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CMmFolderUiExtPlugin::~CMmFolderUiExtPlugin() + { + delete iCommand; + iCommand = NULL; + delete iSharedResources; + iSharedResources = NULL; + } + + +// --------------------------------------------------------------------------- +// Default C++ constructor. +// --------------------------------------------------------------------------- +// +CMmFolderUiExtPlugin::CMmFolderUiExtPlugin( MMmActionRequest& aActionRequest ): + iActionRequest( aActionRequest ) + { + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CMmFolderUiExtPlugin::ExecuteActionL( const TDesC& aCommand, + CLiwGenericParamList* aEventParamList ) + { + TInt err = KErrNone; + DEBUG16( ( "\t_MM_: CMmFolderUiExtPlugin::ExecuteActionL(): %S", + &aCommand ) ); + + if( !aCommand.Compare( KCommandDeleteDialog ) && iCommand ) + { + iCommand->RemoveDialogL(); + } + else if( IsMatrixInForegroundL() ) + { + // Resources lazy initialization + if (!iSharedResources) + { + iSharedResources = CMmPluginSharedResources::NewL(); + } + + delete iCommand; + iCommand = NULL; + iCommand = CMmFolderCommand::FactoryL( aCommand ); + if( iCommand ) + { + iCommand->SetRequestInterface( &iActionRequest ); + iCommand->SetSharedResources( iSharedResources ); + iCommand->ExecuteActionL( aEventParamList ); + } + else + { + DEBUG16( ( "\t_MM_: Unsupported command: %S", &aCommand ) ); + err = KErrNotSupported; + } + } + + return err; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TBool CMmFolderUiExtPlugin::IsMatrixInForegroundL() + { + TBool res( EFalse ); + RWsSession wsSession; + User::LeaveIfError( wsSession.Connect() ); + CleanupClosePushL( wsSession ); + TApaTaskList taskList = TApaTaskList( wsSession ); + TApaTask foregroundTask = taskList.FindByPos( 0 ); + CApaWindowGroupName* wgName = + CApaWindowGroupName::NewLC( wsSession, foregroundTask.WgId() ); + if( wgName->AppUid() == KUidMatrixMenuApp ) + { + res = ETrue; + } + CleanupStack::PopAndDestroy( wgName ); + CleanupStack::PopAndDestroy( &wsSession ); + return res; + } + + +// end of file +