diff -r 5b6f26637ad3 -r f4a778e096c2 phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchermenuhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchermenuhandler.cpp Wed Sep 01 12:29:52 2010 +0100 @@ -0,0 +1,665 @@ +/* +* 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: Implementation of ccappcommlauncher menuhandler +* +*/ + +#include "ccappcommlauncherheaders.h" + +#include +#include + +#include +#include + +using namespace AiwContactAssign; + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::NewL +// --------------------------------------------------------------------------- +// +CCCAppCommLauncherMenuHandler* CCCAppCommLauncherMenuHandler::NewL( + CCCAppCommLauncherPlugin& aPlugin ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::NewL()")); + CCCAppCommLauncherMenuHandler* self = new ( ELeave ) CCCAppCommLauncherMenuHandler( aPlugin ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::NewL()")); + return self; + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::~CCCAppCommLauncherMenuHandler +// --------------------------------------------------------------------------- +// +CCCAppCommLauncherMenuHandler::~CCCAppCommLauncherMenuHandler() + { + CCA_DP(KCommLauncherLogFile, CCA_L("~CCCAppCommLauncherMenuHandler()")); + // iView is deleted through the alfdisplay + delete iPbkCmd; + delete iAiwServiceHandler; + if ( iInputBlock ) + { + iInputBlock->Cancel(); + } + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::CCCAppCommLauncherMenuHandler() +// --------------------------------------------------------------------------- +// +CCCAppCommLauncherMenuHandler::CCCAppCommLauncherMenuHandler( + CCCAppCommLauncherPlugin& aPlugin ) : + iPlugin( aPlugin ),iInputBlock( NULL ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherMenuHandler()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::ConstructL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::ConstructL() + { + CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherMenuHandler::ConstructL()")); + PrepareAiwMenusL(); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::PrepareAiwMenusL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::PrepareAiwMenusL() + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::PrepareAiwMenusL()")); + + // Initialisation of AIW Servicehandler cannot be in + // ConstructL, since the menus of plugin are given + // later via ProvideApplicationResourcesL(..) + iAiwServiceHandler = CAiwServiceHandler::NewL(); + iAiwServiceHandler->AttachL( + R_CCACOMMLAUNCHER_AIW_SERVICE_INTERESTS ); + iAiwServiceHandler->AttachMenuL( + R_CCACOMMLAUNCHER_MENUPANE, + R_CCACOMMLAUNCHER_AIW_MENU_INTERESTS ); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::PrepareAiwMenusL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::AknInputBlockCancel +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::AknInputBlockCancel() + { + iInputBlock = NULL; + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::StopInputBlock +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::StopInputBlock() + { + // stop user input blocker + if( iInputBlock ) + { + iInputBlock->Cancel(); + } + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::SetContactStore +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::SetContactStore( + const TCmsContactStore& aStore ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherMenuHandler::SetContactStore() - %d"), (TInt)aStore ); + iContactStore = aStore; + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DynInitMenuPaneL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DynInitMenuPaneL( + TInt aResourceId, + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::DynInitMenuPaneL()")); + + if ( iAiwServiceHandler->HandleSubmenuL( *aMenuPane )) + return; + + switch ( aResourceId ) + { + case R_CCACOMMLAUNCHER_MENUPANE: + { + SelectDynInitMenuPaneL( aMenuPane ); + + if ( iAiwServiceHandler->IsAiwMenu( aResourceId )) + { + + iAiwServiceHandler->InitializeMenuPaneL( + *aMenuPane, aResourceId, ECCAppCommLauncherAiwBaseCmd, + iAiwServiceHandler->InParamListL() ); + } + break; + } + default: + break; + } + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::DynInitMenuPaneL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::SelectDynInitMenuPaneL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::SelectDynInitMenuPaneL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::SelectDynInitMenuPaneL()")); + + switch ( iContactStore ) + { + case ECmsContactStorePbk : + PbkContactDynInitMenuPaneL( aMenuPane ); + break; + case ECmsContactStoreSim : + SimContactDynInitMenuPaneL( aMenuPane ); + break; + case ECmsContactStoreSdn : + SdnContactDynInitMenuPaneL( aMenuPane ); + break; + case ECmsContactStoreXsp : + XspContactDynInitMenuPaneL( aMenuPane ); + break; + default: + CCA_DP(KCommLauncherLogFile, CCA_L("::DynInitMenuPaneL() - unsupported store type")); + break; + } + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::SelectDynInitMenuPaneL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::PbkContactDynInitMenuPaneL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::PbkContactDynInitMenuPaneL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::ContactDynInitMenuPaneL()")); + + DynInitSelectMenuItemL( aMenuPane ); + DynInitSelectOtherMenuItemL( aMenuPane ); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::ContactDynInitMenuPaneL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::SimContactDynInitMenuPaneL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::SimContactDynInitMenuPaneL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::SimContactDynInitMenuPaneL()")); + + DynInitSelectMenuItemL( aMenuPane ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherNmbCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherAddrCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherDefaultsCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherVoiceTagDetailsCmd ); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::SimContactDynInitMenuPaneL()")); + + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::SdnContactDynInitMenuPaneL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::SdnContactDynInitMenuPaneL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::SdnContactDynInitMenuPaneL()")); + + DynInitSelectMenuItemL( aMenuPane ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherNmbCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherAddrCmd ); + aMenuPane->DeleteMenuItem( KAiwCmdAssign ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherDefaultsCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherVoiceTagDetailsCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherDeleteCmd ); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::SdnContactDynInitMenuPaneL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DynInitSelectMenuItemL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DynInitSelectMenuItemL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::DynInitSelectMenuItemL()")); + + if ( !iPlugin.Container().CommMethodsAvailable() ) + {// no comm methods available + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectCmd ); + // ECCAppCommLauncherDefaultsCmd is deleted in the SimContactDynInitMenuPaneL() method + if (iContactStore != ECmsContactStoreSim) + { + aMenuPane->DeleteMenuItem( ECCAppCommLauncherDefaultsCmd ); + } + } + else + { + CCCAppCommLauncherContactHandler& contactHandler = iPlugin.ContactHandler(); + + // Get the number how many addresses are defined. + const TInt addressAmount = + contactHandler.AddressAmount( VPbkFieldTypeSelectorFactory::EFindOnMapSelector); + + // If the amount of address is not 0 and the amount of listbox in launcher view is 1. + // That means only address is defined in the contact. + if ( ( addressAmount > 0 ) + && ( iPlugin.Container().GetListBoxItemAmount() == 1 ) ) + { + aMenuPane->DeleteMenuItem( ECCAppCommLauncherDefaultsCmd ); + } + } + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::DynInitSelectMenuItemL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DynInitSelectOtherMenuItemL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DynInitSelectOtherMenuItemL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::DynInitSelectOtherMenuItemL()")); + + if ( iPlugin.Container().CommMethodsAvailable() && + iPlugin.Container().IsListBoxHighlightEnabled()) + {// comm methods available, continue.. + VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector contactAction = + iPlugin.Container().SelectedCommunicationMethod(); + CCCAppCommLauncherContactHandler& contactHandler = iPlugin.ContactHandler();//not owned + + if ( contactHandler.IsItNumberAddress( contactAction )) + { + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherAddrCmd ); + + if ( contactHandler.AddressAmount( contactAction ) < 2 + || !contactHandler.HasDefaultAttribute( contactAction )) + { + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherNmbCmd ); + } + } + else + { + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherNmbCmd ); + + if ( contactHandler.AddressAmount( contactAction ) < 2 + || !contactHandler.HasDefaultAttribute( contactAction )) + { + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherAddrCmd ); + } + } + } + else + {// no comm methods available or Listbox highlight is disabled, don't show anything + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherNmbCmd ); + aMenuPane->DeleteMenuItem( ECCAppCommLauncherSelectOtherAddrCmd ); + } + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::DynInitSelectOtherMenuItemL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::HandleCommandL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::HandleCommandL( TInt aCommand ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::HandleCommandL()")); + + // Check and handle the Aiw commands 1st + TInt aiwCmd = iAiwServiceHandler->ServiceCmdByMenuCmd( aCommand ); + if( aiwCmd ) + { + DoAiwCommandL( aCommand, aiwCmd ); + return;// aCommand should not match with non-Aiw commands, but just to be sure + } + + // Then check if command is normal application command + switch( aCommand ) + { + case EAknSoftkeySelect: + case ECCAppCommLauncherSelectCmd: + DoSelectCmdL( ETrue );// use default + break; + case ECCAppCommLauncherSelectOtherNmbCmd: + case ECCAppCommLauncherSelectOtherAddrCmd: + DoSelectCmdL( EFalse );// do not use default + break; + case KAiwCmdAssign:// AIW service cmd for Editing + DoEditCmdL(); + break; + case ECCAppCommLauncherDefaultsCmd: + DoSetDefaultCmdL(); + break; + case ECCAppCommLauncherDeleteCmd: + DoDeleteCmdL(); + break; + default: + break; + } + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::HandleCommandL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DoSelectCmdL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DoSelectCmdL( TBool aUseDefaultAddress ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::DoSelectCmdL()")); + + if ( iPlugin.Container().SelectedCommunicationMethod() + == VPbkFieldTypeSelectorFactory::EFindOnMapSelector ) + { + DoShowOnMapCmdL(); + } + else + { + TPtrC fullName; + iPlugin.ContactHandler().ContactFieldItemDataL( + CCmsContactFieldItem::ECmsFullName, fullName ); + TUint paramFlag = + aUseDefaultAddress ? CCAContactorService::TCSParameter::EEnableDefaults : 0; + CCAContactorService::TCSParameter param( + iPlugin.Container().SelectedCommunicationMethod(), + *iPlugin.ContactHandler().ContactIdentifierLC(),//contactlinkarray + paramFlag, + fullName ); + + iPlugin.ExecuteServiceL( param ); + CleanupStack::PopAndDestroy( 1 );// contactlinkarray + } + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::DoSelectCmdL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DoEditCmdL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DoEditCmdL() + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::DoEditCmdL()")); + + TCCAppCommandState& cmdState( iPlugin.CommandState() ); + cmdState.SetRunningAndPushCleanupL(); + + // Avoid user input during Edit command execution + if( iInputBlock ) + { + iInputBlock->Cancel(); + } + + iInputBlock = CAknInputBlock::NewCancelHandlerLC( this ); + CleanupStack::Pop( iInputBlock ); + iInputBlock->SetCancelDelete( iInputBlock ); + CAiwGenericParamList& inParamList = iAiwServiceHandler->InParamListL(); + TInt popAndDestroyUs = 0; + + inParamList.AppendL( + TAiwGenericParam( + EGenericParamContactAssignData, + TAiwVariant( TAiwSingleContactAssignDataV1Pckg( + TAiwSingleContactAssignDataV1().SetFlags( EskipInfoNotes ))))); + + popAndDestroyUs += PackedContactLinkArrayToInParamListLC( inParamList ); + + iAiwServiceHandler->ExecuteServiceCmdL( + KAiwCmdAssign, + inParamList, + iAiwServiceHandler->OutParamListL(), NULL, this ); + + CleanupStack::PopAndDestroy( popAndDestroyUs ); + // Async AIW command -> set state to not running in HandleNotifyL. + cmdState.PopCleanup(); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::DoEditCmdL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DoAiwCommandL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DoAiwCommandL( TInt aCmdId, TInt aServiceId ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::DoAiwCommandL()")); + + // Command state is checked in CCCAppCommLauncherPlugin::HandleCommandL + // before calling the menuhandler. + TCCAppCommandState& cmdState( iPlugin.CommandState() ); + cmdState.SetRunningAndPushCleanupL(); + + CAiwGenericParamList& inParamList = iAiwServiceHandler->InParamListL(); + TInt popAndDestroyUs = 0; + + switch( aServiceId ) + { + case KAiwCmdSindInfoView: + popAndDestroyUs += PackedContactLinkArrayToInParamListLC( inParamList ); + break; + default: + break; + } + + iAiwServiceHandler->ExecuteMenuCmdL( + aCmdId, + inParamList, + iAiwServiceHandler->OutParamListL(), NULL, NULL );// not needed (so far) + + CleanupStack::PopAndDestroy( popAndDestroyUs ); + // Synchronous AIW call -> state to not running. + cmdState.SetNotRunningAndPopCleanup(); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::DoAiwCommandL()")); + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::PackedContactLinkArrayToInParamListLC +// --------------------------------------------------------------------------- +// +TInt CCCAppCommLauncherMenuHandler::PackedContactLinkArrayToInParamListLC( + CAiwGenericParamList& aInParamList ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::PrepareAiwParamListForVoiceTagLC()")); + + HBufC8* packedLinks = iPlugin.ContactHandler().ContactIdentifierLC(); + + aInParamList.AppendL( + TAiwGenericParam( EGenericParamContactLinkArray, + TAiwVariant( *packedLinks ))); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::PrepareAiwParamListForVoiceTagLC()")); + return 1;// packedLinks + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::HandleNotifyL +// --------------------------------------------------------------------------- +// +TInt CCCAppCommLauncherMenuHandler::HandleNotifyL( + TInt aCmdId, + TInt aEventId, + CAiwGenericParamList& aEventParamList, + const CAiwGenericParamList& /*aInParamList*/ ) + { + if ( aEventId == KAiwEventCompleted || + aEventId == KAiwEventCanceled || + aEventId == KAiwEventError ) + { + iPlugin.CommandState().SetNotRunning(); + } + + TInt returnValue = KErrNone; + TInt index = 0; + const TAiwGenericParam* param = aEventParamList.FindFirst(index, + EGenericParamContactLinkArray); + + index = 0; + const TAiwGenericParam* errParam = aEventParamList.FindFirst(index, + EGenericParamError); + + if (param) + { + TPtrC8 contactLink = param->Value().AsData(); + + // Update the CCA parameter contact data + TInt length = contactLink.Length(); + if ( length > 0 ) + { + HBufC16* link16 = HBufC16::NewLC( length ); + link16->Des().Copy( contactLink ); + iPlugin.AppEngine()->Parameter().SetContactDataL( link16->Des() ); + // Set contact data flag to EContactLink, because the parameters returned from + // phonebook AIW provider have conatct link but not contact id. + iPlugin.AppEngine()->Parameter().SetContactDataFlag( MCCAParameter::EContactLink ); + CleanupStack::PopAndDestroy(1); // link16 + + // Inform the app engine of the contact event + iPlugin.AppEngine()->CCAppContactEventL(); + + // Update the commlauncher the UI contact data + iPlugin.ContactHandler().RefetchContactL(); + iPlugin.Container().ContactsChangedL(); + + //Update the Store + SetContactStore(iPlugin.ContactHandler().ContactStore()); + } + } + + if (errParam) + { + TInt32 err; + errParam->Value().Get(err); + if (err == (TInt32)KErrInUse) + { + CCoeEnv::Static()->HandleError(KErrInUse); + } + } + + if ( KAiwCmdAssign == aCmdId && KAiwEventQueryExit == aEventId ) + { + // Send an exit command in order to close CCA and Phonebook2 + CAknAppUi* appUi = static_cast( CCoeEnv::Static()->AppUi() ); + + if ( appUi ) + { + appUi->ProcessCommandL( EAknCmdExit ); + } + + // allow pbk editor AIW service to close whole app chain + returnValue = ETrue; + } + + // stop user input blocker + StopInputBlock(); + + return returnValue; + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DoSetDefaultCmdL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DoSetDefaultCmdL() + { + if( !iPbkCmd ) + iPbkCmd = CCCAppCommLauncherPbkCmd::NewL( iPlugin ); + + iPbkCmd->ExecutePbk2CmdAssignDefaultL( + *iPlugin.ContactHandler().ContactIdentifierLC() ); + + CleanupStack::PopAndDestroy( 1 ); // ContactIdentifierLC + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DoShowOnMapCmdL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DoShowOnMapCmdL() + { + if( !iPbkCmd ) + { + iPbkCmd = CCCAppCommLauncherPbkCmd::NewL( iPlugin ); + } + + iPbkCmd->ExecutePbk2CmdShowMapL( + iPlugin.ContactHandler().ContactIdentifierLC(), + (TPbk2CommandId)EPbk2ExtensionShowOnMap ); + + CleanupStack::PopAndDestroy( 1 ); // ContactIdentifierLC + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::DoDeleteCmdL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::DoDeleteCmdL() + { + if( !iPbkCmd ) + { + iPbkCmd = CCCAppCommLauncherPbkCmd::NewL( iPlugin ); + } + iPbkCmd->ExecutePbk2CmdDeleteL( + *iPlugin.ContactHandler().ContactIdentifierLC() ); + + CleanupStack::PopAndDestroy( 1 ); // ContactIdentifierLC + } + +// --------------------------------------------------------------------------- +// CCCAppCommLauncherMenuHandler::XspContactDynInitMenuPaneL +// --------------------------------------------------------------------------- +// +void CCCAppCommLauncherMenuHandler::XspContactDynInitMenuPaneL( + CEikMenuPane* aMenuPane ) + { + CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherMenuHandler::XspContactDynInitMenuPaneL()")); + + DynInitSelectMenuItemL( aMenuPane ); + DynInitSelectOtherMenuItemL( aMenuPane ); + + CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherMenuHandler::XspContactDynInitMenuPaneL()")); + } + + +// End of File