--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/vmbx/src/VmAppUi.cpp Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,763 @@
+/*
+* Copyright (c) 2002-2009 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: This module contains the implementation of CVmAppUi
+* class member functions.
+*
+*/
+
+
+// INCLUDE FILES
+#include "VoiceMailboxAppPrivateCRKeys.h"
+#include "voicemailboxdomaincrkeys.h"
+#include "VmAppUi.h"
+
+#include "VmApp.h"
+
+#include "VmContainer.h"
+
+#include <e32property.h>
+#include <PSVariables.h>
+#include "VmQueryLauncher.h"
+#include <vm.rsg>
+
+#include "vm.hrh"
+
+#include <eiklabel.h>
+#include <aknlists.h>
+#include <aknnotedialog.h>
+#include <eikmenup.h>
+#include <AknGlobalNote.h>
+#include <AknQueryDialog.h>
+#include <AknQueryValuePhone.h>
+#include <avkon.mbg>
+
+#include <AiwCommon.hrh> //KAiwCmdCall
+#include <AiwServiceHandler.h> //For Application InterWorking
+#include <csxhelp/smsvo.hlp.hrh> // for help context
+#include <hlplch.h> // for HlpLauncher
+#include <featmgr.h> // Feature Manager
+
+#include <aknnotewrappers.h>
+#include <StringLoader.h>
+
+#ifdef __BT_SAP
+#include <BTSapDomainPSKeys.h>
+#endif
+#include <centralrepository.h>
+
+#include "VmDetailsDialog.h"
+#include <AknNotify.h>
+#include <AknNotifyStd.h>
+#include "VMBLogger.h"
+#include <gsfwviewuids.h> // For General Settings application UID
+
+const TInt KVmHelpArraySize = 1;
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CVmAppUi::ConstructL()
+ {
+ BaseConstructL(
+ EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
+ FeatureManager::InitializeLibL();
+ iFeatureManagerInitialized = ETrue;
+ iAppUiState = EIdle;
+
+#ifdef __BT_SAP
+ if ( FeatureManager::FeatureSupported( KFeatureIdBtSap ) )
+ {
+ TInt sapState( 0 );
+ TInt error = RProperty::Get( KPSUidBluetoothSapConnectionState,
+ KBTSapConnectionState,
+ sapState );
+ if ( error == KErrNone )
+ {
+ if ( sapState == EBTSapConnected )
+ {
+ HBufC* informationNoteTxt = StringLoader::LoadLC(
+ R_OFFLINE_NOT_POSSIBLE_SAP );
+ TPtrC note = informationNoteTxt->Des();
+ CAknGlobalNote* globalNote = CAknGlobalNote::NewLC();
+ globalNote->SetGraphic( EMbmAvkonQgn_note_info,
+ EMbmAvkonQgn_note_info_mask );
+ globalNote->ShowNoteL( EAknGlobalErrorNote, note );
+ CleanupStack::PopAndDestroy( globalNote );
+ Exit();
+ }
+ }
+ }
+#endif //__BT_SAP
+
+ iFromGS = IsStartedFromGSL();
+
+ iAppContainer = new (ELeave) CVmContainer();
+
+ iServiceHandler = CAiwServiceHandler::NewL();
+ iAppContainer->ConstructL( ClientRect(), iServiceHandler );
+ AddToStackL( iAppContainer );
+ iServiceHandler->AttachMenuL( R_VM_MENU, R_VMBX_APP_INTEREST );
+
+ CEikMenuPane* temp =
+ (CEikonEnv::Static())->AppUiFactory()->MenuBar()->MenuPane();
+
+ _LIT(KNull, "");
+ AddMenuItemL( temp, KNull, EVmCmdAiwPlaceholder );
+
+ iServiceHandler->InitializeMenuPaneL( *temp, R_VM_MENU, EVmCmdAiwCmdLast,
+ iServiceHandler->InParamListL() );
+
+ // fetch some localised texts from resources
+ iTextCallVoiceMail = iEikonEnv->AllocReadResourceL( R_MENU_CALL_VOICEMAIL );
+
+ iTextDefineNumber = iEikonEnv->AllocReadResourceL( R_MENU_DEFINE_NUMBER );
+ iTextChangeNumber = iEikonEnv->AllocReadResourceL( R_MENU_CHANGE_NUMBER );
+ iTextClearIcon = StringLoader::LoadL( R_CLEAR_ICON );
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
+ {
+ iTextCallVideoMail = iEikonEnv->AllocReadResourceL(
+ R_MENU_CALL_VIDEOMAIL );
+ iTextDefineVideoNumber = iEikonEnv->AllocReadResourceL(
+ R_MENU_DEFINE_VIDEO_NUMBER );
+ }
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ iTextCallIntVoiceMail =
+ iEikonEnv->AllocReadResourceL( R_MENU_CALL_INT_MAILBOX );
+ }
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
+ {
+ iTextShowDetails = StringLoader::LoadL( R_OPEN_DETAILS );
+ }
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+ {
+ iTextHelp = iEikonEnv->AllocReadResourceL( R_MENU_HELP );
+ }
+
+ iTextExit = iEikonEnv->AllocReadResourceL( R_MENU_EXIT );
+
+ if ( !iAppContainer->IsVideoSupported() )
+ {
+ // If the vmbx number is not defined, query it as soon as
+ // the app has been fully constructed.
+ if ( !iAppContainer->Number().Length() &&
+ !IsIpVoiceMailboxServices() )
+ {
+ // Query cs vmbx number since ip vmbx address cannot be asked
+ iAppContainer->QueryNumberL( EVmbxNotDefinedQuery );
+ }
+ }
+ else
+ {
+ if ( !iAppContainer->Number().Length() &&
+ !iAppContainer->VideoNumber().Length() &&
+ !IsIpVoiceMailboxServices() )
+ {
+ iQueryLauncher = CVmQueryLauncher::NewL( *iAppContainer, *this );
+ iAppUiState = ELauncherQueryingNumber;
+ }
+ }
+
+ DrawCbaButtonsL();
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::~CVmAppUi
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CVmAppUi::~CVmAppUi()
+ {
+ if ( iServiceHandler )
+ {
+ delete iServiceHandler;
+ }
+
+ if ( iQueryLauncher )
+ {
+ iQueryLauncher->Cancel();
+ delete iQueryLauncher;
+ }
+
+ if ( iAppContainer )
+ {
+ RemoveFromStack( iAppContainer );
+ delete iAppContainer;
+ }
+ delete iTextCallVoiceMail;
+ delete iTextDefineNumber;
+ delete iTextDefineVideoNumber;
+ delete iTextChangeNumber;
+ delete iTextShowDetails;
+ delete iTextClearIcon;
+ delete iTextCallVideoMail;
+ delete iTextCallIntVoiceMail;
+
+ delete iTextHelp;
+ delete iTextExit;
+
+ if ( iFeatureManagerInitialized )
+ {
+ FeatureManager::UnInitializeLib();
+ }
+ }
+
+// ------------------------------------------------------------------------------
+// CVmAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
+// This function is called by the UIKON framework just before it displays
+// a menu pane. Menu items are created.
+// ------------------------------------------------------------------------------
+void CVmAppUi::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+ {
+ VMBLOGSTRING( "VMBX: CVmAppUi::DynInitMenuPaneL: =>" );
+
+ iServiceHandler->InitializeMenuPaneL( *aMenuPane,
+ aResourceId,
+ EVmCmdAiwCmdLast,
+ iServiceHandler->InParamListL() );
+
+ if ( aResourceId == R_VM_MENU )
+ {
+ aMenuPane->SetItemDimmed( KVmCmdAiwVoiceCall, ETrue );
+
+ if ( FeatureManager::FeatureSupported( KFeatureIdCsVideoTelephony ) )
+ {
+ aMenuPane->SetItemDimmed( KVmCmdAiwVideoCall, ETrue );
+ }
+
+ if ( iAppContainer->IsVoIPProfilesFound() )
+ {
+ // Internet call command id is same as video call command id
+ // when video call is not supported. There is no video call
+ // option in menu when video call is not supported.
+ TInt intCallMenuPosition =
+ FeatureManager::FeatureSupported(
+ KFeatureIdCsVideoTelephony ) ?
+ KVmCmdAiwVoipCall :
+ KVmCmdAiwVideoCall;
+
+ aMenuPane->SetItemDimmed( intCallMenuPosition,ETrue );
+ }
+
+ TInt currentItem = iAppContainer->CurrentItem();
+ VMBLOGSTRING2( "VMBX: CVmAppUi::DynInitMenuPaneL:currentItem=%d",
+ currentItem );
+ switch ( currentItem )
+ {
+ case EVmbxVoiceMailboxNumberInd:
+ {
+ if ( iAppContainer->Number().Length() )
+ {
+ AddMenuItemL( aMenuPane, *iTextCallVoiceMail,
+ EvmCmdCallVoiceMail );
+
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ AddMenuItemL( aMenuPane, *iTextChangeNumber,
+ EvmCmdChangeNumber );
+ }
+ }
+ else
+ {
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ AddMenuItemL( aMenuPane, *iTextDefineNumber,
+ EvmCmdChangeNumber );
+ }
+ }
+ break;
+ }
+
+ case EVmbxVideoMailboxNumberInd:
+ {
+ if ( iAppContainer->IsVideoSupported() )
+ {
+ if ( iAppContainer->VideoNumber().Length() )
+ {
+ AddMenuItemL( aMenuPane, *iTextCallVideoMail,
+ EvmCmdCallVideoMail );
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ AddMenuItemL( aMenuPane, *iTextChangeNumber,
+ EvmCmdChangeVideoNumber );
+ }
+ }
+ else
+ {
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ AddMenuItemL( aMenuPane, *iTextDefineVideoNumber,
+ EvmCmdChangeVideoNumber );
+ }
+ }
+ }
+ break;
+ }
+
+ case EVmbxIntCallVoiceMailboxNumberInd:
+ {
+ if ( iAppContainer->IsIpVoiceMailboxServices() )
+ {
+ AddMenuItemL( aMenuPane, *iTextCallIntVoiceMail,
+ EvmCmdCallIntVoiceMail );
+ }
+ break;
+ }
+
+ // CDMA specific:
+
+ case EVmbxVoiceMessageAmountInd:
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
+ {
+ if ( iAppContainer->Number().Length() )
+ {
+ AddMenuItemL( aMenuPane, *iTextCallVoiceMail,
+ EvmCmdCallVoiceMail );
+ }
+ }
+ break;
+ }
+
+ case EVmbxDetailsOfLastMessageInd:
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
+ {
+ AddMenuItemL( aMenuPane, *iTextShowDetails,
+ EvmCmdShowLastMessageDetails );
+ }
+ break;
+ }
+
+
+ default:
+ {
+ break;
+ }
+ }
+
+ if ( iAppContainer->IsClearIcon() )
+ {
+ AddMenuItemL( aMenuPane, *iTextClearIcon, EvmCmdClearIcon );
+ }
+
+ // Check if help feature is available
+ if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+ {
+ AddMenuItemL( aMenuPane, *iTextHelp, EAknCmdHelp );
+ }
+
+ AddMenuItemL( aMenuPane, *iTextExit, EAknCmdExit );
+ }
+
+ VMBLOGSTRING( "VMBX: CVmAppUi::DynInitMenuPaneL: <=" );
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::AddMenuItemL
+// Adds an item in menu
+// -----------------------------------------------------------------------------
+//
+void CVmAppUi::AddMenuItemL( CEikMenuPane* aMenuPane,
+ const TDesC& aText,
+ TInt aCommandId )
+ {
+ VMBLOGSTRING( "VMBX: CVmAppUi::AddMenuItemL=>" );
+ CEikMenuPaneItem::SData data;
+ data.iCascadeId = 0;
+ data.iFlags = 0;
+ data.iCommandId = aCommandId;
+ data.iText = aText;
+ aMenuPane->AddMenuItemL( data );
+ if ( aText.Length()
+ && ( EAknCmdExit != aCommandId )
+ && ( EAknCmdHelp != aCommandId ) )
+ {
+ SetItemSpecificL( aMenuPane, aCommandId );
+ }
+ VMBLOGSTRING2( "VMBX: CVmAppUi::AddMenuItemL:aCommandId=%d",aCommandId );
+ VMBLOGSTRING( "VMBX: CVmAppUi::AddMenuItemL<=" );
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::HandleCommandL
+// Handles menu commands and softkey-exit
+// -----------------------------------------------------------------------------
+//
+void CVmAppUi::HandleCommandL( TInt aCommand )
+ {
+ VMBLOGSTRING( "VMBX: CVmAppUi::HandleCommandL: =>" );
+ switch ( aCommand )
+ {
+ case EEikCmdExit:
+ case EAknSoftkeyExit:
+ case EAknSoftkeyBack:
+ {
+ Exit();
+ break;
+ }
+ case EVmCbaMskDefVoMbx:
+ case EvmCmdChangeNumber:
+ {
+ if ( !iAppContainer->AllowedToChangeTheNumber() )
+ {
+ User::Leave( KErrNotSupported );
+ }
+ if ( ELauncherQueryingNumber != iAppUiState )
+ {
+ iAppContainer->QueryNumberL( EVmbxChangeNumberQuery );
+ DrawCbaButtonsL();
+ }
+ break;
+ }
+
+ case EVmCbaMskCallVoipMbx:
+ case EvmCmdCallIntVoiceMail:
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ iAppContainer->CallIntVoiceMailBoxL();
+ }
+
+ break;
+ }
+
+ case EAknCmdHelp:
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+ {
+ HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
+ AppHelpContextL() );
+ }
+ break;
+ }
+
+ case EVmCbaMskCallVoMbx:
+ case EvmCmdCallVoiceMail:
+ {
+ iAppContainer->CallVoiceMailBoxL();
+ break;
+ }
+
+ case EvmCmdShowLastMessageDetails:
+ {
+ CVmDetailsDialog* dlg = CVmDetailsDialog::NewL();
+ dlg->ExecuteLD( R_VMBX_DETAIL_DIALOG );
+ break;
+ }
+
+ case EvmCmdClearIcon:
+ {
+ // Reset counter to 0 in SD
+ iAppContainer->ResetVoicemailMessageCounterL();
+
+ // Show confirmation note:
+ HBufC* noteText = StringLoader::LoadLC( R_VOICEMAIL_CLEARED );
+
+ CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote();
+ note->ExecuteLD( *noteText );
+
+ CleanupStack::PopAndDestroy( noteText );
+ break;
+ }
+
+ case EVmCbaMskDefViMbx:
+ case EvmCmdChangeVideoNumber:
+ {
+ if ( ELauncherQueryingNumber != iAppUiState )
+ {
+ iAppContainer->QueryVideoNumberL( EVmbxChangeNumberQuery );
+ DrawCbaButtonsL();
+ }
+ break;
+ }
+
+ case EVmCbaMskCallViMbx:
+ case EvmCmdCallVideoMail:
+ {
+ iAppContainer->CallVideoMailBoxL();
+ break;
+ }
+ default:
+ break;
+ }
+ VMBLOGSTRING( "VMBX: CVmAppUi::HandleCommandL: <=" );
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::HelpContextL
+// Returns the help context
+// -----------------------------------------------------------------------------
+//
+CArrayFix<TCoeHelpContext>* CVmAppUi::HelpContextL() const
+ {
+ CArrayFixFlat<TCoeHelpContext>* array =
+ new( ELeave ) CArrayFixFlat<TCoeHelpContext>( KVmHelpArraySize );
+
+ // Cannot leave because the buffer for the appended item is allocated
+ // in the constructor.
+ array->AppendL( TCoeHelpContext( KUidvm, KSMSVO_HLP_MAIN_VIEW ) );
+
+ return array;
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::DrawCbaButtonsL
+// Loads the appropriate CBA buttons for MSK.
+// -----------------------------------------------------------------------------
+//
+void CVmAppUi::DrawCbaButtonsL()
+ {
+ VMBLOGSTRING( "VMBX: CVmAppUi::DrawCbaButtonsL: =>" );
+
+ CEikButtonGroupContainer* cba = Cba();
+ TInt currentItem = iAppContainer->CurrentItem();
+ TInt resourceId = 0;
+
+ switch ( currentItem )
+ {
+ case EVmbxVoiceMailboxNumberInd:
+ {
+ if ( !iAppContainer->Number().Length())
+ {
+ if ( iFromGS )
+ {
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ resourceId = R_VMBX_GS_CBA_DEFINE_VO_NUMBER;
+ }
+ else
+ {
+ resourceId = R_VMBX_GS_CBA_NOTALLOW_DEFINE_VO_NUMBER;
+ }
+ }
+ else
+ {
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ resourceId = R_VMBX_CBA_DEFINE_VO_NUMBER;
+ }
+ else
+ {
+ resourceId = R_VMBX_CBA_NOTALLOW_DEFINE_VO_NUMBER;
+ }
+ }
+ }
+ else
+ {
+ if(iFromGS)
+ {
+ resourceId = R_VMBX_GS_CBA_CALL_VO_MAILBOX;
+ }
+ else
+ {
+ resourceId = R_VMBX_CBA_CALL_VO_MAILBOX;
+ }
+ }
+ break;
+ }
+ case EVmbxVideoMailboxNumberInd:
+ {
+ if ( !iAppContainer->VideoNumber().Length() )
+ {
+ if ( iFromGS )
+ {
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ resourceId = R_VMBX_GS_CBA_DEFINE_VI_NUMBER;
+ }
+ else
+ {
+ resourceId = R_VMBX_GS_CBA_NOTALLOW_DEFINE_VI_NUMBER;
+ }
+ }
+ else
+ {
+ if ( iAppContainer->AllowedToChangeTheNumber() )
+ {
+ resourceId = R_VMBX_CBA_DEFINE_VI_NUMBER;
+ }
+ else
+ {
+ resourceId = R_VMBX_CBA_NOTALLOW_DEFINE_VI_NUMBER;
+ }
+ }
+ }
+ else
+ {
+ if ( iFromGS )
+ {
+ resourceId = R_VMBX_GS_CBA_CALL_VI_MAILBOX;
+ }
+ else
+ {
+ resourceId = R_VMBX_CBA_CALL_VI_MAILBOX;
+ }
+ }
+ break;
+ }
+ case EVmbxIntCallVoiceMailboxNumberInd:
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdCommonVoip ) )
+ {
+ if ( iFromGS )
+ {
+ resourceId = R_VMBX_GS_CALL_VOIP_MAILBOX;
+ }
+ else
+ {
+ resourceId = R_VMBX_CBA_CALL_VOIP_MAILBOX;
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ cba->SetCommandSetL( resourceId );
+ cba->DrawDeferred();
+ VMBLOGSTRING( "VMBX: CVmAppUi::DrawCbaButtonsL: <=" );
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::HandleForegroundEventL
+// Handles changes in keyboard focus when an application switches to or from
+// the foreground.
+// -----------------------------------------------------------------------------
+//
+void CVmAppUi::HandleForegroundEventL( TBool aForeground )
+ {
+ if ( aForeground ) // back to foreground
+ {
+ if ( iAppContainer->IsServiceUpdated() )
+ {
+ iAppContainer->UpdateListboxL();
+ }
+
+ // get numbers
+ iAppContainer->UpdateVmbxNumberL();
+ // change state so that FocusChanged will update ListBox fields
+ iAppContainer->UpdateData( ETrue );
+ }
+ CAknAppUi::HandleForegroundEventL( aForeground );
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::IsStartedFromGSL
+// Defines whether voice mail application is started from general
+// settings or not.
+// -----------------------------------------------------------------------------
+//
+TBool CVmAppUi::IsStartedFromGSL()
+ {
+ TBool result = EFalse;
+ RWsSession ws;
+ User::LeaveIfError( ws.Connect() );
+ CleanupClosePushL( ws );
+
+ // Find the task with uid
+ TApaTaskList taskList( ws );
+ TApaTask task = taskList.FindApp( KUidGS );
+
+ if ( task.Exists() )
+ {
+ // read window group id of general settings
+ TInt gsTaskId = task.WgId();
+
+ // Find task from position 1 (background)
+ TApaTask bgTask = taskList.FindByPos(1);
+
+ // Read window group id of background task
+ TInt bgTaskId = bgTask.WgId();
+
+ if( gsTaskId == bgTaskId )
+ {
+ // General settings is straight below voice mail application
+ // => application is started from general settings
+ result = ETrue;
+ }
+ else
+ {
+ result = EFalse;
+ }
+ }
+ else
+ {
+ // General settings task does not exist
+ result = EFalse;
+ }
+ CleanupStack::PopAndDestroy( ); // ws
+
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::NumberQueryComplete
+//
+//
+// -----------------------------------------------------------------------------
+void CVmAppUi::NumberQueryComplete()
+ {
+ iAppUiState = EIdle;
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::GetAppUiState
+//
+//
+// -----------------------------------------------------------------------------
+TVmbxAppUiState CVmAppUi::GetAppUiState()
+ {
+ return iAppUiState;
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::IsIpVoiceMailboxServices
+//
+//
+// -----------------------------------------------------------------------------
+TBool CVmAppUi::IsIpVoiceMailboxServices()
+ {
+ return iAppContainer->IsIpVoiceMailboxServices();
+ }
+
+// -----------------------------------------------------------------------------
+// CVmAppUi::SetItemSpecific
+//
+//
+// -----------------------------------------------------------------------------
+void CVmAppUi::SetItemSpecificL( CEikMenuPane* aMenuPane, TInt aCommandId )
+ {
+ VMBLOGSTRING2( "VMBX: CVmAppUi::SetItemSpecificL:aCommandId=%d =>",
+ aCommandId );
+ if ( aMenuPane )
+ {
+ aMenuPane->SetItemSpecific( aCommandId, ETrue );
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
+ VMBLOGSTRING( "VMBX: CVmAppUi::SetItemSpecificL: <=" );
+ }
+
+// End of File