# HG changeset patch # User Pat Downey # Date 1272031183 -3600 # Node ID 5d467ea4b3e5bedcc6eef69580eafc011699c6e7 # Parent 56ebb309c25d4aa5a7e780af2ac353c09448e4af# Parent d398543c5fb792e352a34c82abd72262581f073e Merge fix for bug 2360. diff -r d398543c5fb7 -r 5d467ea4b3e5 group/bld.inf --- a/group/bld.inf Mon Apr 19 16:39:38 2010 +0300 +++ b/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006 - 2010 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" @@ -16,10 +16,10 @@ */ +#include "../phoneuis/group/bld.inf" #include "../phoneapp/group/bld.inf" #include "../phoneengine/group/bld.inf" #include "../phonesettings/group/bld.inf" -#include "../phoneuis/group/bld.inf" #include "../phone_plat/group/bld.inf" #include "../phoneplugins/group/bld.inf" diff -r d398543c5fb7 -r 5d467ea4b3e5 package_definition.xml --- a/package_definition.xml Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r d398543c5fb7 -r 5d467ea4b3e5 phone_plat/phone_application_commands_api/inc/phoneappcommands.hrh --- a/phone_plat/phone_application_commands_api/inc/phoneappcommands.hrh Mon Apr 19 16:39:38 2010 +0300 +++ b/phone_plat/phone_application_commands_api/inc/phoneappcommands.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -151,6 +151,9 @@ EPhoneInCallCmdSecondaryCamera, EPhoneInCallCmdActivatEPhonebook, // NOT IN MENU! + // Video sharing + EPhoneInCallCmdShareLiveVideo, + EPhoneInCallCmdConferenceHold, // JMK EPhoneInCallCmdConferenceUnhold, // JMK EPhoneInCallCmdNewCallFind, @@ -219,7 +222,16 @@ EPhoneIsCustomizedDialerVisible, EPhoneCmdVideoCallOutOfMemory, - + + // dialer and easy dialing releated commands + EEasyDialingSettingsItemPlaceHolder, + EEasyDialingCmdSelect, + EPhoneDialerValidNumber, + EPhoneDialerInvalidNumber, + EPhoneCmdUpdateCba, + EPhoneCmdBlockingDialogLaunched, + EPhoneCmdBlockingDialogClosed, + EPhoneCmdLast }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phone_plat/phone_application_voip_commands_api/inc/phoneappvoipcommands.hrh --- a/phone_plat/phone_application_voip_commands_api/inc/phoneappvoipcommands.hrh Mon Apr 19 16:39:38 2010 +0300 +++ b/phone_plat/phone_application_voip_commands_api/inc/phoneappvoipcommands.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -74,6 +74,10 @@ EPhoneCmdServiceEnablingTimedOut, EPhoneCmdHandoverToWlan, EPhoneCmdHandoverToGsm, + /** Command id for unattended transfer callback ok. */ + EPhoneCmdUnattendedTransferCallBackOk, + /** Command id for unattended transfer callback cancel. */ + EPhoneCmdUnattendedTransferCallBackCancel, // Last VoIP command, not used in menu nor soft key. // Add new VoIP commands before this. EPhoneCmdVoIPLast diff -r d398543c5fb7 -r 5d467ea4b3e5 phone_plat/telephony_information_api/inc/telinformationpstypes.h --- a/phone_plat/telephony_information_api/inc/telinformationpstypes.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phone_plat/telephony_information_api/inc/telinformationpstypes.h Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ // INCLUDES #include -#include +#include // CONSTANTS diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/group/commonphoneapp_icons_scalable.mk --- a/phoneapp/phoneui/group/commonphoneapp_icons_scalable.mk Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/group/commonphoneapp_icons_scalable.mk Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2004-2010 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" @@ -75,6 +75,7 @@ /c8,8 qgn_indi_button_unmute_mic.svg \ /c8,8 qgn_indi_button_video_to_voice.svg \ /c8,8 qgn_indi_button_voice_to_video.svg \ + /c8,8 qgn_indi_button_video_share.svg \ /c8,8 qgn_indi_button_answer.svg \ /c8,8 qgn_indi_button_reject.svg \ /c8,8 qgn_indi_tb_call.svg \ @@ -83,7 +84,9 @@ /c8,8 qgn_indi_dialer_add_contacts.svg \ /c8,8 qgn_indi_dialer_logs.svg \ /c8,8 qgn_indi_button_send_dtmf.svg \ - /c8,8 qgn_indi_button_silence.svg + /c8,8 qgn_indi_button_silence.svg \ + /c8,8 qgn_indi_button_answer_white.svg \ + /c8,8 qgn_indi_button_logdialer_white.svg \ FREEZE : do_nothing diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/group/iconlist.txt --- a/phoneapp/phoneui/group/iconlist.txt Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/group/iconlist.txt Fri Apr 23 14:59:43 2010 +0100 @@ -16,6 +16,7 @@ -c8,8 qgn_indi_button_unmute_mic -c8,8 qgn_indi_button_video_to_voice -c8,8 qgn_indi_button_voice_to_video +-c8,8 qgn_indi_button_video_share -c8,8 qgn_indi_button_answer -c8,8 qgn_indi_button_reject -c8,8 qgn_indi_dialer_call_send @@ -29,4 +30,6 @@ -c8,8 qgn_indi_tb_microphone_unmute -c8,8 qgn_indi_tb_ihf_on -c8,8 qgn_indi_tb_handset --c8,8 qgn_indi_tb_bthf \ No newline at end of file +-c8,8 qgn_indi_tb_bthf +-c8,8 qgn_indi_button_answer_white +-c8,8 qgn_indi_button_logdialer_white \ No newline at end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/help/data/xhtml.zip Binary file phoneapp/phoneui/help/data/xhtml.zip has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/help/inc/incl.hlp.hrh --- a/phoneapp/phoneui/help/inc/incl.hlp.hrh Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/help/inc/incl.hlp.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/inc/cphoneappui.h --- a/phoneapp/phoneui/inc/cphoneappui.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/inc/cphoneappui.h Fri Apr 23 14:59:43 2010 +0100 @@ -279,8 +279,6 @@ // Id of system events from Starter states. TInt iStarterEventId; - CPhoneQwertyHandler* iQwertyHandler; - // System evenviroment notifier CEnvironmentChangeNotifier* iEnvChangeNotifier; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/loc/phone.loc --- a/phoneapp/phoneui/loc/phone.loc Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/loc/phone.loc Fri Apr 23 14:59:43 2010 +0100 @@ -451,4 +451,10 @@ // #define qtn_called_number_has_barred_incoming_calls "Called number has barred incoming calls" +//d: Permanent note Invalid Card. Shown when the Sim inserted is not same as +//d: the one provided by the operator. +//l: popup_note_window +//w: +//r: 5.0 +#define text_invalid_card "Invalid card" // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/loc/voip.loc --- a/phoneapp/phoneui/loc/voip.loc Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/loc/voip.loc Fri Apr 23 14:59:43 2010 +0100 @@ -580,4 +580,21 @@ // r: 5.0 #define qtn_ipcomm_creating_conn_failed_permanently "Connecting %U failed due to defective settings. Contact your service provider." +// d: Prompt text for number entry. +// d: Topmost row shows text in case of transfer dialer. +// l: heading_pane_t1 +// w: +// r: 5.0 +// +#define qtn_dialer_unatt_transfer_input_field_text "Address:" + +// d: Text in the transfer Dialer Options menu. This is shown only +// d: when user has entered characters to number entry. This item +// d: performs the unattended transfer request. +// l: list_single_pane_t1_cp2 +// w: +// r: 5.0 +// +#define qtn_dialer_options_send_uatransfer_req "Send" + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/src/cphoneappui.cpp --- a/phoneapp/phoneui/src/cphoneappui.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/src/cphoneappui.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -55,7 +55,6 @@ #include "phoneconstants.h" #include "cphoneclearblacklist.h" #include "cphonestatuspane.h" -#include "cphoneqwertyhandler.h" #include "tphonecmdparaminteger.h" #ifndef __WINS__ #include @@ -90,7 +89,6 @@ delete iPhoneViewController; } delete iPhoneUIController; - delete iQwertyHandler; CPhoneRecoverySystem::Remove( iStartupSignalRecoveryId ); @@ -109,6 +107,10 @@ BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible ); SetKeyEventFlags( CAknAppUiBase::EDisableSendKeyShort | CAknAppUiBase::EDisableSendKeyLong ); + // Item specific soft key IS DISABLED in order to make SK1 visible with easy dialing. + CEikCba* cba = static_cast( CEikButtonGroupContainer::Current()->ButtonGroup() ); + cba->EnableItemSpecificSoftkey( EFalse ); + SetAliasKeyCodeResolverL( this ); // Set phone application to be system application so it can't be closed @@ -132,8 +134,7 @@ keySounds->PushContextL( R_PHONEUI_DEFAULT_SKEY_LIST ); iPhoneViewController = CPhoneViewController::NewL( ClientRect() ); - iPhoneUIController = CPhoneUIController::NewL( iPhoneViewController ); - iQwertyHandler = CPhoneQwertyHandler::NewL(); + iPhoneUIController = CPhoneUIController::NewL( *iPhoneViewController ); // Blacklist singleton is initialized here // return value is ignored since we do not require its services in this class @@ -597,30 +598,6 @@ Exit(); return; } - - if ( iQwertyHandler->IsQwertyInput() ) - { - TInt code = iQwertyHandler->NumericKeyCode( *keyEvent ); - TBool fepSimulated = keyEvent->iModifiers & EModifierSpecial; - if ( !fepSimulated && - ( ( code != EKeyNull && code != keyEvent->iCode ) || - ( code == EKeyNull && CPhoneKeys::IsNumericKey( - *keyEvent, - ( TEventCode ) aEvent.Type() ) ) ) - ) - { - // Modify event according to keyboard layout - TWsEvent newWsEvent = aEvent; - TKeyEvent* newKeyEvent = newWsEvent.Key(); - newKeyEvent->iCode = code; - TInt shiftMask = EModifierLeftShift | - EModifierRightShift | - EModifierShift; - shiftMask = ~shiftMask; - newKeyEvent->iModifiers = newKeyEvent->iModifiers & shiftMask; - return CAknAppUi::HandleWsEventL( newWsEvent, aDestination ); - } - } } break; @@ -820,15 +797,6 @@ { __LOGMETHODSTARTEND( EPhonePhoneapp, "CPhoneAppUI::HandleApplicationSpecificEventL" ); - if( aType == EEikKeyLockEnabled ) - { - iPhoneUIController->HandleKeyLockEnabled( ETrue ); - } - else if( aType == EEikKeyLockDisabled ) - { - iPhoneUIController->HandleKeyLockEnabled( EFalse ); - } - CAknAppUi::HandleApplicationSpecificEventL( aType, aEvent ); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/srcdata/callhandlingui.rss --- a/phoneapp/phoneui/srcdata/callhandlingui.rss Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/srcdata/callhandlingui.rss Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -568,6 +568,33 @@ }; } +// ----------------------------------------------------------------------------- +// +// r_phoneui_video_share_button +// Video share button +// +// ----------------------------------------------------------------------------- +// +RESOURCE BUBBLE_TOUCH_PANE_BUTTON r_phoneui_video_share_button + { + commands = + { + EPhoneInCallCmdShareLiveVideo + }; + button = AVKON_BUTTON + { + states = + { + AVKON_BUTTON_STATE + { + txt = qtn_incal_button_share_video\ + <0x0001>\ + qtn_incal_button_share_video_landscape; + } + }; + }; + } + // ---------------------------------------------------------------- // // r_phoneui_incall_buttons @@ -587,7 +614,7 @@ // r_phoneui_voice_to_video_toggle_button }; } - + // ---------------------------------------------------------------- // // r_phoneui_two_singles_buttons @@ -608,7 +635,27 @@ // r_phoneui_end_all_calls_button }; } - + +// ---------------------------------------------------------------- +// +// r_phoneui_incall_video_share_buttons +// Touch buttons shown in incall situation. +// +// ---------------------------------------------------------------- +// +RESOURCE BUBBLE_TOUCH_PANE r_phoneui_incall_video_share_buttons + { + buttons = + { + r_phoneui_video_share_button, + r_phoneui_end_call_button + + // ALTERNATIVE BUTTONS FOR REPLACE, TOTAL MAX.4 BUTTONS + // r_phoneui_go_to_idle_button + // r_phoneui_voice_to_video_toggle_button + }; + } + // ---------------------------------------------------------------- // // r_phoneui_conference_buttons diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneui/srcdata/phoneui.rss --- a/phoneapp/phoneui/srcdata/phoneui.rss Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneui/srcdata/phoneui.rss Fri Apr 23 14:59:43 2010 +0100 @@ -35,7 +35,6 @@ #include #include #include -#include #include @@ -4797,14 +4796,6 @@ // --------------------------------------------------------- // -RESOURCE TBUF r_notetext_use_keyguard_to_unlock - { - buf = qtn_keyg_info_note_display_lock_switch; - } - - -// --------------------------------------------------------- -// RESOURCE TBUF r_incal_remote_create_conference_text { buf = qtn_incal_info_conf_active; @@ -6235,20 +6226,19 @@ buf = qtn_bt_dev_address; } - -// --------------------------------------------------------- -// -// r_phone_information_note_with_wait +// --------------------------------------------------------- +// +// r_phone_information_note_with_cba // It defines note template for information notes. Text // must be replaced to correct in code. Note has wait // flag. // // --------------------------------------------------------- // -RESOURCE DIALOG r_phone_information_note_with_wait +RESOURCE DIALOG r_phone_information_note_with_cba { flags = EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar | - EEikDialogFlagCbaButtons | EEikDialogFlagWait; + EEikDialogFlagCbaButtons; buttons = r_phoneui_wait_note_cba; items = { @@ -6999,7 +6989,16 @@ buf = text_sim_lock_active; } - +// ----------------------------------------------------------------------------- +// +// r_sim_invalid_uicc +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_sim_invalid_uicc + { + buf = text_invalid_card; + } // ----------------------------------------------------------------------------- // @@ -7729,6 +7728,11 @@ }, MENU_ITEM { + command = EEasyDialingSettingsItemPlaceHolder; + flags = EEikMenuItemDimmed; + }, + MENU_ITEM + { command = EAknCmdEditItemPlaceHolder; }, MENU_ITEM diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/bwins/phoneuicontrolu.def --- a/phoneapp/phoneuicontrol/bwins/phoneuicontrolu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/bwins/phoneuicontrolu.def Fri Apr 23 14:59:43 2010 +0100 @@ -1,11 +1,11 @@ EXPORTS ?CallWaitingNoteL@CPhoneState@@IAEXH@Z @ 1 NONAME ; void CPhoneState::CallWaitingNoteL(int) ?HandleKeyMessageL@CPhoneStateIncoming@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 2 NONAME ; void CPhoneStateIncoming::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?EnableCallUIL@CPhoneState@@QAEXXZ @ 3 NONAME ; void CPhoneState::EnableCallUIL(void) - ?TopAppIsDisplayedL@CPhoneState@@IBEHXZ @ 4 NONAME ; int CPhoneState::TopAppIsDisplayedL(void) const - ?HandleKeyMessageL@CPhoneStateCallSetup@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 5 NONAME ; void CPhoneStateCallSetup::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?SetContextMenuL@CPhoneState@@MAEXH@Z @ 6 NONAME ; void CPhoneState::SetContextMenuL(int) - ?CallFetchedNumberL@CPhoneStateInCall@@MAEXABVTDesC16@@@Z @ 7 NONAME ; void CPhoneStateInCall::CallFetchedNumberL(class TDesC16 const &) + ?TopAppIsDisplayedL@CPhoneState@@IBEHXZ @ 3 NONAME ; int CPhoneState::TopAppIsDisplayedL(void) const + ?HandleKeyMessageL@CPhoneStateCallSetup@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 4 NONAME ; void CPhoneStateCallSetup::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ?SetContextMenuL@CPhoneState@@MAEXH@Z @ 5 NONAME ; void CPhoneState::SetContextMenuL(int) + ?CallFetchedNumberL@CPhoneStateInCall@@MAEXABVTDesC16@@@Z @ 6 NONAME ; void CPhoneStateInCall::CallFetchedNumberL(class TDesC16 const &) + ?DisconnectCallL@CPhoneState@@MAEXXZ @ 7 NONAME ; void CPhoneState::DisconnectCallL(void) ?SetCbaL@CPhoneCbaManager@@QAEXH@Z @ 8 NONAME ; void CPhoneCbaManager::SetCbaL(int) ?InstanceL@CPhoneReconnectQuery@@SAPAV1@XZ @ 9 NONAME ; class CPhoneReconnectQuery * CPhoneReconnectQuery::InstanceL(void) ?HandlePhoneStartupL@CPhoneState@@UAEXXZ @ 10 NONAME ; void CPhoneState::HandlePhoneStartupL(void) @@ -16,220 +16,222 @@ ?DisplayCallTerminationNoteL@CPhoneState@@IAEXXZ @ 15 NONAME ; void CPhoneState::DisplayCallTerminationNoteL(void) ??0CPhoneStateInCall@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 16 NONAME ; CPhoneStateInCall::CPhoneStateInCall(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) ?HandleNumberLongKeyPressL@CPhoneStateIdle@@IAEXXZ @ 17 NONAME ; void CPhoneStateIdle::HandleNumberLongKeyPressL(void) - ?PhoneEngine@CPhoneStateMachine@@UAEPAVMPEPhoneModel@@XZ @ 18 NONAME ; class MPEPhoneModel * CPhoneStateMachine::PhoneEngine(void) - ?OpenMenuBarL@CPhoneStateCallSetup@@MAEXXZ @ 19 NONAME ; void CPhoneStateCallSetup::OpenMenuBarL(void) - ??1CPhoneStateCallSetup@@UAE@XZ @ 20 NONAME ; CPhoneStateCallSetup::~CPhoneStateCallSetup(void) - ?HandleEnvironmentChangeL@CPhoneUIController@@UAEXH@Z @ 21 NONAME ; void CPhoneUIController::HandleEnvironmentChangeL(int) - ?Instance@CPhoneStateHandle@@SAPAV1@XZ @ 22 NONAME ; class CPhoneStateHandle * CPhoneStateHandle::Instance(void) - ?HandleNumberEntryClearedL@CPhoneStateIdle@@MAEXXZ @ 23 NONAME ; void CPhoneStateIdle::HandleNumberEntryClearedL(void) - ?DynInitMenuPaneL@CPhoneStateIncoming@@MAEXHPAVCEikMenuPane@@@Z @ 24 NONAME ; void CPhoneStateIncoming::DynInitMenuPaneL(int, class CEikMenuPane *) - ?HandleCommandL@CPhoneState@@UAEHH@Z @ 25 NONAME ; int CPhoneState::HandleCommandL(int) - ?StartAlsLineChangeTimerL@CPhoneState@@IAEXXZ @ 26 NONAME ; void CPhoneState::StartAlsLineChangeTimerL(void) - ?IsNumberEntryVisibleL@CPhoneState@@QAEHXZ @ 27 NONAME ; int CPhoneState::IsNumberEntryVisibleL(void) - ?RetainPreviousKeylockStateL@CPhoneState@@QAEXXZ @ 28 NONAME ; void CPhoneState::RetainPreviousKeylockStateL(void) - ?HandlePhoneEngineMessageL@CPhoneStateIdle@@UAEXHH@Z @ 29 NONAME ; void CPhoneStateIdle::HandlePhoneEngineMessageL(int, int) - ?HandleDialingL@CPhoneStateIdle@@MAEXH@Z @ 30 NONAME ; void CPhoneStateIdle::HandleDialingL(int) - ?CustomizedDialerCbaResourceIdL@CPhoneState@@IAEHXZ @ 31 NONAME ; int CPhoneState::CustomizedDialerCbaResourceIdL(void) - ?CaptureKeysDuringCallNotificationL@CPhoneState@@IAEXH@Z @ 32 NONAME ; void CPhoneState::CaptureKeysDuringCallNotificationL(int) - ?HandleKeyPressDurationL@CPhoneState@@UAEXW4TKeyCode@@VTTimeIntervalMicroSeconds@@@Z @ 33 NONAME ; void CPhoneState::HandleKeyPressDurationL(enum TKeyCode, class TTimeIntervalMicroSeconds) - ?ChangeState@CPhoneStateMachine@@UAEXH@Z @ 34 NONAME ; void CPhoneStateMachine::ChangeState(int) - ?IsSimStateNotPresentWithSecurityModeEnabled@CPhoneState@@IAEHXZ @ 35 NONAME ; int CPhoneState::IsSimStateNotPresentWithSecurityModeEnabled(void) - ?HandlePhoneEngineMessageL@CPhoneState@@UAEXHH@Z @ 36 NONAME ; void CPhoneState::HandlePhoneEngineMessageL(int, int) - ?HandleNumberEntryClearedL@CPhoneStateIncoming@@UAEXXZ @ 37 NONAME ; void CPhoneStateIncoming::HandleNumberEntryClearedL(void) - ?HandleKeyEventL@CPhoneUIController@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 38 NONAME ; enum TKeyResponse CPhoneUIController::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?HandleRemConCommandL@CPhoneStateIdle@@MAEHW4TRemConCoreApiOperationId@@W4TRemConCoreApiButtonAction@@@Z @ 39 NONAME ; int CPhoneStateIdle::HandleRemConCommandL(enum TRemConCoreApiOperationId, enum TRemConCoreApiButtonAction) - ?HandleAudioPlayStoppedL@CPhoneStateIncoming@@MAEXXZ @ 40 NONAME ; void CPhoneStateIncoming::HandleAudioPlayStoppedL(void) - ?HandleCenRepChangeL@CPhoneState@@UAEXABVTUid@@I@Z @ 41 NONAME ; void CPhoneState::HandleCenRepChangeL(class TUid const &, unsigned int) - ?HandleLongHashL@CPhoneState@@UAEXXZ @ 42 NONAME ; void CPhoneState::HandleLongHashL(void) - ?DialL@CPhoneStateIdle@@MAEXABVTDesC16@@W4TPhoneNumberType@@W4TDialInitiationMethod@1@@Z @ 43 NONAME ; void CPhoneStateIdle::DialL(class TDesC16 const &, enum TPhoneNumberType, enum CPhoneStateIdle::TDialInitiationMethod) - ?ShowNumberBusyNoteL@CPhoneState@@IAEXXZ @ 44 NONAME ; void CPhoneState::ShowNumberBusyNoteL(void) - ?DisconnectCallL@CPhoneState@@IAEHXZ @ 45 NONAME ; int CPhoneState::DisconnectCallL(void) - ?HandleNumberEntryClearedL@CPhoneStateCallSetup@@MAEXXZ @ 46 NONAME ; void CPhoneStateCallSetup::HandleNumberEntryClearedL(void) - ?HandleIdleForegroundEventL@CPhoneStateIdle@@UAEXXZ @ 47 NONAME ; void CPhoneStateIdle::HandleIdleForegroundEventL(void) - ?HandleDisconnectingL@CPhoneState@@IAEXH@Z @ 48 NONAME ; void CPhoneState::HandleDisconnectingL(int) - ?HandleAudioMuteChangedL@CPhoneState@@IAEXXZ @ 49 NONAME ; void CPhoneState::HandleAudioMuteChangedL(void) - ?HandleKeyLockEnabled@CPhoneState@@UAEXH@Z @ 50 NONAME ; void CPhoneState::HandleKeyLockEnabled(int) - ?HandleCommandL@CPhoneStateIncoming@@UAEHH@Z @ 51 NONAME ; int CPhoneStateIncoming::HandleCommandL(int) - ?UpdateSingleActiveCallL@CPhoneState@@IAEXH@Z @ 52 NONAME ; void CPhoneState::UpdateSingleActiveCallL(int) - ?IsOnScreenDialerSupported@CPhoneState@@IBEHXZ @ 53 NONAME ; int CPhoneState::IsOnScreenDialerSupported(void) const - ?SimState@CPhoneState@@IBE?AW4TPESimState@@XZ @ 54 NONAME ; enum TPESimState CPhoneState::SimState(void) const - ?HandleKeyEventL@CPhoneStateCallSetup@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 55 NONAME ; void CPhoneStateCallSetup::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?SetupIdleScreenInBackgroundL@CPhoneState@@IAEXXZ @ 56 NONAME ; void CPhoneState::SetupIdleScreenInBackgroundL(void) - ?SendGlobalWarningNoteL@CPhoneState@@IAEXH@Z @ 57 NONAME ; void CPhoneState::SendGlobalWarningNoteL(int) - ?CompleteSatRequestL@CPhoneState@@IAEXH@Z @ 58 NONAME ; void CPhoneState::CompleteSatRequestL(int) - ?NewL@CPhoneStateStartup@@SAPAV1@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 59 NONAME ; class CPhoneStateStartup * CPhoneStateStartup::NewL(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?LaunchNewCallQueryL@CPhoneStateInCall@@IAEXXZ @ 60 NONAME ; void CPhoneStateInCall::LaunchNewCallQueryL(void) - ?NeedToSendToBackgroundL@CPhoneState@@IBEHXZ @ 61 NONAME ; int CPhoneState::NeedToSendToBackgroundL(void) const + ?HandlePropertyChangedL@CPhoneStateMachine@@UAEXABVTUid@@IH@Z @ 18 NONAME ; void CPhoneStateMachine::HandlePropertyChangedL(class TUid const &, unsigned int, int) + ?PhoneEngine@CPhoneStateMachine@@UAEPAVMPEPhoneModel@@XZ @ 19 NONAME ; class MPEPhoneModel * CPhoneStateMachine::PhoneEngine(void) + ?OpenMenuBarL@CPhoneStateCallSetup@@MAEXXZ @ 20 NONAME ; void CPhoneStateCallSetup::OpenMenuBarL(void) + ??1CPhoneStateCallSetup@@UAE@XZ @ 21 NONAME ; CPhoneStateCallSetup::~CPhoneStateCallSetup(void) + ?HandleEnvironmentChangeL@CPhoneUIController@@UAEXH@Z @ 22 NONAME ; void CPhoneUIController::HandleEnvironmentChangeL(int) + ?SetToolbarButtonLoudspeakerEnabled@CPhoneState@@IAEXXZ @ 23 NONAME ; void CPhoneState::SetToolbarButtonLoudspeakerEnabled(void) + ?Instance@CPhoneStateHandle@@SAPAV1@XZ @ 24 NONAME ; class CPhoneStateHandle * CPhoneStateHandle::Instance(void) + ?HandleNumberEntryClearedL@CPhoneStateIdle@@MAEXXZ @ 25 NONAME ; void CPhoneStateIdle::HandleNumberEntryClearedL(void) + ?DynInitMenuPaneL@CPhoneStateIncoming@@MAEXHPAVCEikMenuPane@@@Z @ 26 NONAME ; void CPhoneStateIncoming::DynInitMenuPaneL(int, class CEikMenuPane *) + ?HandleCommandL@CPhoneState@@UAEHH@Z @ 27 NONAME ; int CPhoneState::HandleCommandL(int) + ?StartAlsLineChangeTimerL@CPhoneState@@IAEXXZ @ 28 NONAME ; void CPhoneState::StartAlsLineChangeTimerL(void) + ?IsNumberEntryVisibleL@CPhoneState@@QAEHXZ @ 29 NONAME ; int CPhoneState::IsNumberEntryVisibleL(void) + ?HandlePhoneEngineMessageL@CPhoneStateIdle@@UAEXHH@Z @ 30 NONAME ; void CPhoneStateIdle::HandlePhoneEngineMessageL(int, int) + ?HandleDialingL@CPhoneStateIdle@@MAEXH@Z @ 31 NONAME ; void CPhoneStateIdle::HandleDialingL(int) + ?CustomizedDialerCbaResourceIdL@CPhoneState@@IAEHXZ @ 32 NONAME ; int CPhoneState::CustomizedDialerCbaResourceIdL(void) + ?CaptureKeysDuringCallNotificationL@CPhoneState@@IAEXH@Z @ 33 NONAME ; void CPhoneState::CaptureKeysDuringCallNotificationL(int) + ?HandleKeyPressDurationL@CPhoneState@@UAEXW4TKeyCode@@VTTimeIntervalMicroSeconds@@@Z @ 34 NONAME ; void CPhoneState::HandleKeyPressDurationL(enum TKeyCode, class TTimeIntervalMicroSeconds) + ?RegisterStateObserver@CPhoneSecurityModeObserver@@UAEXAAVMPhoneSecurityModeChangeObserver@@@Z @ 35 NONAME ; void CPhoneSecurityModeObserver::RegisterStateObserver(class MPhoneSecurityModeChangeObserver &) + ?ChangeState@CPhoneStateMachine@@UAEXH@Z @ 36 NONAME ; void CPhoneStateMachine::ChangeState(int) + ?NewL@CPhoneUIController@@SAPAV1@AAVCPhoneViewController@@@Z @ 37 NONAME ; class CPhoneUIController * CPhoneUIController::NewL(class CPhoneViewController &) + ?IsSimStateNotPresentWithSecurityModeEnabled@CPhoneState@@IAEHXZ @ 38 NONAME ; int CPhoneState::IsSimStateNotPresentWithSecurityModeEnabled(void) + ?HandlePhoneEngineMessageL@CPhoneState@@UAEXHH@Z @ 39 NONAME ; void CPhoneState::HandlePhoneEngineMessageL(int, int) + ?HandleNumberEntryClearedL@CPhoneStateIncoming@@UAEXXZ @ 40 NONAME ; void CPhoneStateIncoming::HandleNumberEntryClearedL(void) + ?HandleKeyEventL@CPhoneUIController@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 41 NONAME ; enum TKeyResponse CPhoneUIController::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?HandleRemConCommandL@CPhoneStateIdle@@MAEHW4TRemConCoreApiOperationId@@W4TRemConCoreApiButtonAction@@@Z @ 42 NONAME ; int CPhoneStateIdle::HandleRemConCommandL(enum TRemConCoreApiOperationId, enum TRemConCoreApiButtonAction) + ?HandleAudioPlayStoppedL@CPhoneStateIncoming@@MAEXXZ @ 43 NONAME ; void CPhoneStateIncoming::HandleAudioPlayStoppedL(void) + ?HandleCenRepChangeL@CPhoneState@@UAEXABVTUid@@I@Z @ 44 NONAME ; void CPhoneState::HandleCenRepChangeL(class TUid const &, unsigned int) + ?HandleLongHashL@CPhoneState@@UAEXXZ @ 45 NONAME ; void CPhoneState::HandleLongHashL(void) + ?DialL@CPhoneStateIdle@@MAEXABVTDesC16@@W4TPhoneNumberType@@W4TDialInitiationMethod@1@@Z @ 46 NONAME ; void CPhoneStateIdle::DialL(class TDesC16 const &, enum TPhoneNumberType, enum CPhoneStateIdle::TDialInitiationMethod) + ?ShowNumberBusyNoteL@CPhoneState@@IAEXXZ @ 47 NONAME ; void CPhoneState::ShowNumberBusyNoteL(void) + ?HandleNumberEntryClearedL@CPhoneStateCallSetup@@MAEXXZ @ 48 NONAME ; void CPhoneStateCallSetup::HandleNumberEntryClearedL(void) + ?HandleIdleForegroundEventL@CPhoneStateIdle@@UAEXXZ @ 49 NONAME ; void CPhoneStateIdle::HandleIdleForegroundEventL(void) + ?HandleDisconnectingL@CPhoneState@@IAEXH@Z @ 50 NONAME ; void CPhoneState::HandleDisconnectingL(int) + ?HandleAudioMuteChangedL@CPhoneState@@IAEXXZ @ 51 NONAME ; void CPhoneState::HandleAudioMuteChangedL(void) + ?HandleCommandL@CPhoneStateIncoming@@UAEHH@Z @ 52 NONAME ; int CPhoneStateIncoming::HandleCommandL(int) + ?UpdateSingleActiveCallL@CPhoneState@@IAEXH@Z @ 53 NONAME ; void CPhoneState::UpdateSingleActiveCallL(int) + ?IsOnScreenDialerSupported@CPhoneState@@IBEHXZ @ 54 NONAME ; int CPhoneState::IsOnScreenDialerSupported(void) const + ?SimState@CPhoneState@@IBE?AW4TPESimState@@XZ @ 55 NONAME ; enum TPESimState CPhoneState::SimState(void) const + ?HandleKeyEventL@CPhoneStateCallSetup@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 56 NONAME ; void CPhoneStateCallSetup::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?SetupIdleScreenInBackgroundL@CPhoneState@@IAEXXZ @ 57 NONAME ; void CPhoneState::SetupIdleScreenInBackgroundL(void) + ?SendGlobalWarningNoteL@CPhoneState@@IAEXH@Z @ 58 NONAME ; void CPhoneState::SendGlobalWarningNoteL(int) + ?CompleteSatRequestL@CPhoneState@@IAEXH@Z @ 59 NONAME ; void CPhoneState::CompleteSatRequestL(int) + ?NewL@CPhoneStateStartup@@SAPAV1@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 60 NONAME ; class CPhoneStateStartup * CPhoneStateStartup::NewL(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?LaunchNewCallQueryL@CPhoneStateInCall@@IAEXXZ @ 61 NONAME ; void CPhoneStateInCall::LaunchNewCallQueryL(void) ?SetCallHeaderTextsForCallComingInL@CPhoneState@@IAEXHHPAVTPhoneCmdParamCallHeaderData@@@Z @ 62 NONAME ; void CPhoneState::SetCallHeaderTextsForCallComingInL(int, int, class TPhoneCmdParamCallHeaderData *) - ?IsSimOk@CPhoneState@@QAEHXZ @ 63 NONAME ; int CPhoneState::IsSimOk(void) - ?ClearNumberEntryContentCache@CPhoneState@@IAEXXZ @ 64 NONAME ; void CPhoneState::ClearNumberEntryContentCache(void) - ?HandleCommandL@CPhoneStateIdle@@UAEHH@Z @ 65 NONAME ; int CPhoneStateIdle::HandleCommandL(int) - ?ViewCommandHandle@CPhoneStateHandle@@QAEPAVMPhoneViewCommandHandle@@XZ @ 66 NONAME ; class MPhoneViewCommandHandle * CPhoneStateHandle::ViewCommandHandle(void) - ?DialMultimediaCallL@CPhoneStateIdle@@IAEXXZ @ 67 NONAME ; void CPhoneStateIdle::DialMultimediaCallL(void) - ?DisconnectOutgoingCallL@CPhoneStateInCall@@IAEXXZ @ 68 NONAME ; void CPhoneStateInCall::DisconnectOutgoingCallL(void) - ?IsKeyLockOn@CPhoneState@@MBEHXZ @ 69 NONAME ; int CPhoneState::IsKeyLockOn(void) const - ??1CPhoneStateInCall@@UAE@XZ @ 70 NONAME ; CPhoneStateInCall::~CPhoneStateInCall(void) - ?CustomizedDialerMenuResourceIdL@CPhoneState@@IAEHXZ @ 71 NONAME ; int CPhoneState::CustomizedDialerMenuResourceIdL(void) - ?ShowReconnectQueryL@CPhoneReconnectQuery@@QAEXH@Z @ 72 NONAME ; void CPhoneReconnectQuery::ShowReconnectQueryL(int) - ?UpdateSilenceButtonDimming@CPhoneState@@IAEXXZ @ 73 NONAME ; void CPhoneState::UpdateSilenceButtonDimming(void) - ?SetNumberEntryVisibilityL@CPhoneState@@IAEXH@Z @ 74 NONAME ; void CPhoneState::SetNumberEntryVisibilityL(int) - ?HandleError@CPhoneUIController@@UAEXABUTPEErrorInfo@@@Z @ 75 NONAME ; void CPhoneUIController::HandleError(struct TPEErrorInfo const &) - ?ConstructL@CPhoneStateInCall@@MAEXXZ @ 76 NONAME ; void CPhoneStateInCall::ConstructL(void) - ?OnlyHashInNumberEntryL@CPhoneStateIdle@@MAEXXZ @ 77 NONAME ; void CPhoneStateIdle::OnlyHashInNumberEntryL(void) - ?IsVideoCallRingingL@CPhoneStateInCall@@MAEHXZ @ 78 NONAME ; int CPhoneStateInCall::IsVideoCallRingingL(void) - ?HandlePhoneForegroundEventL@CPhoneStateIdle@@UAEXXZ @ 79 NONAME ; void CPhoneStateIdle::HandlePhoneForegroundEventL(void) - ?HandleHoldSwitchL@CPhoneState@@QAEXXZ @ 80 NONAME ; void CPhoneState::HandleHoldSwitchL(void) - ?CloseDtmfQueryL@CPhoneStateInCall@@IAEXXZ @ 81 NONAME ; void CPhoneStateInCall::CloseDtmfQueryL(void) - ?DynInitMenuBarL@CPhoneState@@UAEXHPAVCEikMenuBar@@@Z @ 82 NONAME ; void CPhoneState::DynInitMenuBarL(int, class CEikMenuBar *) - ?HandleDtmfKeyToneL@CPhoneStateStartup@@EAEXABUTKeyEvent@@W4TEventCode@@@Z @ 83 NONAME ; void CPhoneStateStartup::HandleDtmfKeyToneL(struct TKeyEvent const &, enum TEventCode) - ?HandleNumberEntryEdited@CPhoneState@@MAEXXZ @ 84 NONAME ; void CPhoneState::HandleNumberEntryEdited(void) - ?ShowTextQueryL@CPhoneState@@IAEXHHHPAVTDes16@@H@Z @ 85 NONAME ; void CPhoneState::ShowTextQueryL(int, int, int, class TDes16 *, int) - ?DialMultimediaCallL@CPhoneState@@IAEXXZ @ 86 NONAME ; void CPhoneState::DialMultimediaCallL(void) - ?NewL@CPhoneUIController@@SAPAV1@PAVMPhoneViewCommandHandle@@@Z @ 87 NONAME ; class CPhoneUIController * CPhoneUIController::NewL(class MPhoneViewCommandHandle *) - ?HandleCreateNumberEntryL@CPhoneStateStartup@@EAEXABUTKeyEvent@@W4TEventCode@@@Z @ 88 NONAME ; void CPhoneStateStartup::HandleCreateNumberEntryL(struct TKeyEvent const &, enum TEventCode) - ?CheckDisableHWKeysAndCallUIL@CPhoneState@@QAEXXZ @ 89 NONAME ; void CPhoneState::CheckDisableHWKeysAndCallUIL(void) + ?HandlePhoneEngineMessageL@CPhoneStateMachine@@UAEXHH@Z @ 63 NONAME ; void CPhoneStateMachine::HandlePhoneEngineMessageL(int, int) + ?IsSecurityMode@CPhoneSecurityModeObserver@@UAEHXZ @ 64 NONAME ; int CPhoneSecurityModeObserver::IsSecurityMode(void) + ?IsSimOk@CPhoneState@@QAEHXZ @ 65 NONAME ; int CPhoneState::IsSimOk(void) + ?ClearNumberEntryContentCache@CPhoneState@@IAEXXZ @ 66 NONAME ; void CPhoneState::ClearNumberEntryContentCache(void) + ?HandleCommandL@CPhoneStateIdle@@UAEHH@Z @ 67 NONAME ; int CPhoneStateIdle::HandleCommandL(int) + ?ViewCommandHandle@CPhoneStateHandle@@QAEPAVMPhoneViewCommandHandle@@XZ @ 68 NONAME ; class MPhoneViewCommandHandle * CPhoneStateHandle::ViewCommandHandle(void) + ?DialMultimediaCallL@CPhoneStateIdle@@IAEXXZ @ 69 NONAME ; void CPhoneStateIdle::DialMultimediaCallL(void) + ?DisconnectOutgoingCallL@CPhoneStateInCall@@IAEXXZ @ 70 NONAME ; void CPhoneStateInCall::DisconnectOutgoingCallL(void) + ?IsKeyLockOn@CPhoneState@@MBEHXZ @ 71 NONAME ; int CPhoneState::IsKeyLockOn(void) const + ??1CPhoneStateInCall@@UAE@XZ @ 72 NONAME ; CPhoneStateInCall::~CPhoneStateInCall(void) + ?CustomizedDialerMenuResourceIdL@CPhoneState@@IAEHXZ @ 73 NONAME ; int CPhoneState::CustomizedDialerMenuResourceIdL(void) + ?ShowReconnectQueryL@CPhoneReconnectQuery@@QAEXH@Z @ 74 NONAME ; void CPhoneReconnectQuery::ShowReconnectQueryL(int) + ?UpdateSilenceButtonDimming@CPhoneState@@IAEXXZ @ 75 NONAME ; void CPhoneState::UpdateSilenceButtonDimming(void) + ?SetNumberEntryVisibilityL@CPhoneState@@IAEXH@Z @ 76 NONAME ; void CPhoneState::SetNumberEntryVisibilityL(int) + ?HandleError@CPhoneUIController@@UAEXABUTPEErrorInfo@@@Z @ 77 NONAME ; void CPhoneUIController::HandleError(struct TPEErrorInfo const &) + ?ConstructL@CPhoneStateInCall@@MAEXXZ @ 78 NONAME ; void CPhoneStateInCall::ConstructL(void) + ?OnlyHashInNumberEntryL@CPhoneStateIdle@@MAEXXZ @ 79 NONAME ; void CPhoneStateIdle::OnlyHashInNumberEntryL(void) + ?IsVideoCallRingingL@CPhoneStateInCall@@MAEHXZ @ 80 NONAME ; int CPhoneStateInCall::IsVideoCallRingingL(void) + ?IsAutolockEnabled@CPhoneSecurityModeObserver@@UAEHXZ @ 81 NONAME ; int CPhoneSecurityModeObserver::IsAutolockEnabled(void) + ?HandlePhoneForegroundEventL@CPhoneStateIdle@@UAEXXZ @ 82 NONAME ; void CPhoneStateIdle::HandlePhoneForegroundEventL(void) + ?CloseDtmfQueryL@CPhoneStateInCall@@IAEXXZ @ 83 NONAME ; void CPhoneStateInCall::CloseDtmfQueryL(void) + ?DynInitMenuBarL@CPhoneState@@UAEXHPAVCEikMenuBar@@@Z @ 84 NONAME ; void CPhoneState::DynInitMenuBarL(int, class CEikMenuBar *) + ?HandleDtmfKeyToneL@CPhoneStateStartup@@EAEXABUTKeyEvent@@W4TEventCode@@@Z @ 85 NONAME ; void CPhoneStateStartup::HandleDtmfKeyToneL(struct TKeyEvent const &, enum TEventCode) + ?HandleNumberEntryEdited@CPhoneState@@MAEXXZ @ 86 NONAME ; void CPhoneState::HandleNumberEntryEdited(void) + ?ShowTextQueryL@CPhoneState@@IAEXHHHPAVTDes16@@H@Z @ 87 NONAME ; void CPhoneState::ShowTextQueryL(int, int, int, class TDes16 *, int) + ?DialMultimediaCallL@CPhoneState@@IAEXXZ @ 88 NONAME ; void CPhoneState::DialMultimediaCallL(void) + ?HandleCreateNumberEntryL@CPhoneStateStartup@@EAEXABUTKeyEvent@@W4TEventCode@@@Z @ 89 NONAME ; void CPhoneStateStartup::HandleCreateNumberEntryL(struct TKeyEvent const &, enum TEventCode) ?IsMenuBarVisibleL@CPhoneState@@UBEHXZ @ 90 NONAME ; int CPhoneState::IsMenuBarVisibleL(void) const ?HandleErrorL@CPhoneState@@UAEXABUTPEErrorInfo@@@Z @ 91 NONAME ; void CPhoneState::HandleErrorL(struct TPEErrorInfo const &) ?HandleCommandL@CPhoneStateCallSetup@@UAEHH@Z @ 92 NONAME ; int CPhoneStateCallSetup::HandleCommandL(int) - ?HandleAudioOutputChangedL@CPhoneState@@IAEXXZ @ 93 NONAME ; void CPhoneState::HandleAudioOutputChangedL(void) - ??1CPhoneUIController@@UAE@XZ @ 94 NONAME ; CPhoneUIController::~CPhoneUIController(void) - ?HandleKeyEventL@CPhoneState@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 95 NONAME ; void CPhoneState::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?UpdateIncomingContextMenuL@CPhoneState@@MAEXH@Z @ 96 NONAME ; void CPhoneState::UpdateIncomingContextMenuL(int) - ?OpenMenuBarL@CPhoneStateInCall@@MAEXXZ @ 97 NONAME ; void CPhoneStateInCall::OpenMenuBarL(void) - ?UpdateIncomingCbaL@CPhoneCbaManager@@QAEXH@Z @ 98 NONAME ; void CPhoneCbaManager::UpdateIncomingCbaL(int) - ?SetTouchPaneButtonDisabled@CPhoneState@@IAEXH@Z @ 99 NONAME ; void CPhoneState::SetTouchPaneButtonDisabled(int) - ?ConstructL@CPhoneStateIncoming@@MAEXXZ @ 100 NONAME ; void CPhoneStateIncoming::ConstructL(void) - ?CreatePhoneEngineL@CPhoneStateMachine@@UAEPAVMPEPhoneModel@@AAVMEngineMonitor@@@Z @ 101 NONAME ; class MPEPhoneModel * CPhoneStateMachine::CreatePhoneEngineL(class MEngineMonitor &) - ?SetTouchPaneButtons@CPhoneState@@IAEXH@Z @ 102 NONAME ; void CPhoneState::SetTouchPaneButtons(int) - ?HandleIdleForegroundEventL@CPhoneStateStartup@@UAEXXZ @ 103 NONAME ; void CPhoneStateStartup::HandleIdleForegroundEventL(void) - ?CallFromNumberEntryL@CPhoneState@@IAEXXZ @ 104 NONAME ; void CPhoneState::CallFromNumberEntryL(void) - ?UpdateCbaL@CPhoneCbaManager@@QAEXH@Z @ 105 NONAME ; void CPhoneCbaManager::UpdateCbaL(int) - ?IsVideoCall@CPhoneState@@IAEHH@Z @ 106 NONAME ; int CPhoneState::IsVideoCall(int) - ?IsSwivelClosed@CPhoneState@@QBEHXZ @ 107 NONAME ; int CPhoneState::IsSwivelClosed(void) const - ?CloseCustomizedDialerL@CPhoneState@@QAEXXZ @ 108 NONAME ; void CPhoneState::CloseCustomizedDialerL(void) - ?HandlePhoneForegroundEventL@CPhoneUIController@@UAEXXZ @ 109 NONAME ; void CPhoneUIController::HandlePhoneForegroundEventL(void) - ?CheckIfRestoreNEContentAfterDtmfDialer@CPhoneState@@IAEXXZ @ 110 NONAME ; void CPhoneState::CheckIfRestoreNEContentAfterDtmfDialer(void) - ?UpdateInCallContextMenuL@CPhoneState@@UAEXXZ @ 111 NONAME ; void CPhoneState::UpdateInCallContextMenuL(void) - ?HandleNumericKeyEventL@CPhoneState@@MAEXABUTKeyEvent@@W4TEventCode@@@Z @ 112 NONAME ; void CPhoneState::HandleNumericKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?SendGlobalErrorNoteL@CPhoneState@@QAEXH@Z @ 113 NONAME ; void CPhoneState::SendGlobalErrorNoteL(int) - ?IsAutoLockOn@CPhoneState@@UBEHXZ @ 114 NONAME ; int CPhoneState::IsAutoLockOn(void) const - ?UpdateCbaL@CPhoneStateCallSetup@@MAEXH@Z @ 115 NONAME ; void CPhoneStateCallSetup::UpdateCbaL(int) - ?RestoreNumberEntryContentL@CPhoneState@@IAEXXZ @ 116 NONAME ; void CPhoneState::RestoreNumberEntryContentL(void) - ?HandleKeyEventL@CPhoneStateIdle@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 117 NONAME ; void CPhoneStateIdle::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?IsNumberEntryContentStored@CPhoneState@@IAEHXZ @ 118 NONAME ; int CPhoneState::IsNumberEntryContentStored(void) - ?IsVideoCallActiveL@CPhoneStateInCall@@MAEHXZ @ 119 NONAME ; int CPhoneStateInCall::IsVideoCallActiveL(void) - ?HandlePhoneStartupL@CPhoneStateStartup@@UAEXXZ @ 120 NONAME ; void CPhoneStateStartup::HandlePhoneStartupL(void) - ?DialVoiceCallL@CPhoneState@@IAEXXZ @ 121 NONAME ; void CPhoneState::DialVoiceCallL(void) - ?EndUiUpdate@CPhoneState@@IAEXXZ @ 122 NONAME ; void CPhoneState::EndUiUpdate(void) - ?HandleKeyPressDurationL@CPhoneStateIncoming@@UAEXW4TKeyCode@@VTTimeIntervalMicroSeconds@@@Z @ 123 NONAME ; void CPhoneStateIncoming::HandleKeyPressDurationL(enum TKeyCode, class TTimeIntervalMicroSeconds) - ?UpdateInCallCbaL@CPhoneStateInCall@@MAEXXZ @ 124 NONAME ; void CPhoneStateInCall::UpdateInCallCbaL(void) - ?EndTransEffect@CPhoneState@@QAEXXZ @ 125 NONAME ; void CPhoneState::EndTransEffect(void) - ?HandleEnvironmentChangeL@CPhoneState@@UAEXH@Z @ 126 NONAME ; void CPhoneState::HandleEnvironmentChangeL(int) - ?HandleKeyMessageL@CPhoneStateInCall@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 127 NONAME ; void CPhoneStateInCall::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?SetRingingTonePlaybackL@CPhoneState@@IAEXH@Z @ 128 NONAME ; void CPhoneState::SetRingingTonePlaybackL(int) - ?ProcessCommandL@CPhoneState@@UAEHH@Z @ 129 NONAME ; int CPhoneState::ProcessCommandL(int) - ?BeginUiUpdateLC@CPhoneState@@IAEXXZ @ 130 NONAME ; void CPhoneState::BeginUiUpdateLC(void) - ?DecreaseAudioVolumeL@CPhoneState@@IAEXXZ @ 131 NONAME ; void CPhoneState::DecreaseAudioVolumeL(void) - ?PhoneEngineInfo@CPhoneStateMachine@@UAEPAVMPEEngineInfo@@XZ @ 132 NONAME ; class MPEEngineInfo * CPhoneStateMachine::PhoneEngineInfo(void) - ?CreateNumberEntryL@CPhoneStateInCall@@IAEXXZ @ 133 NONAME ; void CPhoneStateInCall::CreateNumberEntryL(void) - ?HandleSystemEventL@CPhoneUIController@@UAEXABVTWsEvent@@@Z @ 134 NONAME ; void CPhoneUIController::HandleSystemEventL(class TWsEvent const &) - ?DynInitMenuPaneL@CPhoneUIController@@UAEXHPAVCEikMenuPane@@@Z @ 135 NONAME ; void CPhoneUIController::DynInitMenuPaneL(int, class CEikMenuPane *) - ??0CPhoneStateStartup@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 136 NONAME ; CPhoneStateStartup::CPhoneStateStartup(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?GetRemoteInfoDataL@CPhoneState@@IAEXHAAVTDes16@@@Z @ 137 NONAME ; void CPhoneState::GetRemoteInfoDataL(int, class TDes16 &) - ?SetDivertIndication@CPhoneState@@UAEXH@Z @ 138 NONAME ; void CPhoneState::SetDivertIndication(int) - ?UpdateCbaL@CPhoneStateInCall@@MAEXH@Z @ 139 NONAME ; void CPhoneStateInCall::UpdateCbaL(int) - ?SetCallId@CPhoneStateMachine@@UAEXH@Z @ 140 NONAME ; void CPhoneStateMachine::SetCallId(int) - ?ProcessCommandL@CPhoneUIController@@UAEHH@Z @ 141 NONAME ; int CPhoneUIController::ProcessCommandL(int) - ?DisplayHeaderForCallComingInL@CPhoneState@@IAEXHH@Z @ 142 NONAME ; void CPhoneState::DisplayHeaderForCallComingInL(int, int) - ??0CPhoneStateIdle@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 143 NONAME ; CPhoneStateIdle::CPhoneStateIdle(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?SendPhoneEngineMessage@CPhoneStateMachine@@UAEXH@Z @ 144 NONAME ; void CPhoneStateMachine::SendPhoneEngineMessage(int) - ??0CPhoneStateCallSetup@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 145 NONAME ; CPhoneStateCallSetup::CPhoneStateCallSetup(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ??0CPhoneState@@QAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 146 NONAME ; CPhoneState::CPhoneState(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?HandleDtmfKeyToneL@CPhoneState@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 147 NONAME ; void CPhoneState::HandleDtmfKeyToneL(struct TKeyEvent const &, enum TEventCode) - ?HandleKeyMessageL@CPhoneStateIdle@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 148 NONAME ; void CPhoneStateIdle::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?HandleForegroundEventL@CPhoneUIController@@UAEXH@Z @ 149 NONAME ; void CPhoneUIController::HandleForegroundEventL(int) - ?HandleSendCommandL@CPhoneStateIdle@@MAEXXZ @ 150 NONAME ; void CPhoneStateIdle::HandleSendCommandL(void) - ?HandleCommandL@CPhoneUIController@@UAEHH@Z @ 151 NONAME ; int CPhoneUIController::HandleCommandL(int) - ?HandleCreateNumberEntryL@CPhoneState@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 152 NONAME ; void CPhoneState::HandleCreateNumberEntryL(struct TKeyEvent const &, enum TEventCode) - ?DisableHWKeysL@CPhoneState@@QAEXXZ @ 153 NONAME ; void CPhoneState::DisableHWKeysL(void) - ?DisplayHeaderForOutgoingCallL@CPhoneState@@IAEXH@Z @ 154 NONAME ; void CPhoneState::DisplayHeaderForOutgoingCallL(int) - ?GetBlockedKeyList@CPhoneState@@UBEABV?$RArray@H@@XZ @ 155 NONAME ; class RArray const & CPhoneState::GetBlockedKeyList(void) const - ?HandlePhoneEngineMessageL@CPhoneStateInCall@@UAEXHH@Z @ 156 NONAME ; void CPhoneStateInCall::HandlePhoneEngineMessageL(int, int) - ?IsSpeedDialNumber@CPhoneStateIdle@@IBEHABVTDesC16@@@Z @ 157 NONAME ; int CPhoneStateIdle::IsSpeedDialNumber(class TDesC16 const &) const - ?IsNumberEntryUsedL@CPhoneState@@UAEHXZ @ 158 NONAME ; int CPhoneState::IsNumberEntryUsedL(void) - ?PhoneStorage@CPhoneStateMachine@@UAEPAVMPhoneStorage@@XZ @ 159 NONAME ; class MPhoneStorage * CPhoneStateMachine::PhoneStorage(void) - ??1CPhoneState@@UAE@XZ @ 160 NONAME ; CPhoneState::~CPhoneState(void) - ?HandleCreateNumberEntryL@CPhoneStateCallSetup@@MAEXABUTKeyEvent@@W4TEventCode@@@Z @ 161 NONAME ; void CPhoneStateCallSetup::HandleCreateNumberEntryL(struct TKeyEvent const &, enum TEventCode) - ?HandlePhoneEngineMessageL@CPhoneStateCallSetup@@UAEXHH@Z @ 162 NONAME ; void CPhoneStateCallSetup::HandlePhoneEngineMessageL(int, int) - ?HandlePhoneFocusLostEventL@CPhoneState@@UAEXXZ @ 163 NONAME ; void CPhoneState::HandlePhoneFocusLostEventL(void) - ??1CPhoneStateMachine@@UAE@XZ @ 164 NONAME ; CPhoneStateMachine::~CPhoneStateMachine(void) - ?HandleIdleForegroundEventL@CPhoneState@@UAEXXZ @ 165 NONAME ; void CPhoneState::HandleIdleForegroundEventL(void) - ?DynInitMenuPaneL@CPhoneState@@UAEXHPAVCEikMenuPane@@@Z @ 166 NONAME ; void CPhoneState::DynInitMenuPaneL(int, class CEikMenuPane *) - ?IsDTMFEditorVisibleL@CPhoneState@@IBEHXZ @ 167 NONAME ; int CPhoneState::IsDTMFEditorVisibleL(void) const - ?ConstructL@CPhoneStateCallSetup@@MAEXXZ @ 168 NONAME ; void CPhoneStateCallSetup::ConstructL(void) - ?BeginTransEffectLC@CPhoneState@@QAEXW4TStateTransEffectType@@@Z @ 169 NONAME ; void CPhoneState::BeginTransEffectLC(enum TStateTransEffectType) - ?HandleMessage@CPhoneUIController@@UAEXHH@Z @ 170 NONAME ; void CPhoneUIController::HandleMessage(int, int) - ?HandleSystemEventL@CPhoneState@@UAEXABVTWsEvent@@@Z @ 171 NONAME ; void CPhoneState::HandleSystemEventL(class TWsEvent const &) - ?DisplayCallSetupL@CPhoneStateIdle@@IAEXH@Z @ 172 NONAME ; void CPhoneStateIdle::DisplayCallSetupL(int) - ?ConstructL@CPhoneStateStartup@@MAEXXZ @ 173 NONAME ; void CPhoneStateStartup::ConstructL(void) - ?HandleKeyMessageL@CPhoneStateStartup@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 174 NONAME ; void CPhoneStateStartup::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?ShowNoteL@CPhoneState@@IAEXH@Z @ 175 NONAME ; void CPhoneState::ShowNoteL(int) - ?HandlePropertyChangedL@CPhoneState@@UAEXABVTUid@@IH@Z @ 176 NONAME ; void CPhoneState::HandlePropertyChangedL(class TUid const &, unsigned int, int) - ?IsAnyQueryActiveL@CPhoneState@@QAEHXZ @ 177 NONAME ; int CPhoneState::IsAnyQueryActiveL(void) - ?State@CPhoneStateMachine@@UAEPAVMPhoneState@@XZ @ 178 NONAME ; class MPhoneState * CPhoneStateMachine::State(void) - ?SetHandsfreeModeL@CPhoneState@@IAEXH@Z @ 179 NONAME ; void CPhoneState::SetHandsfreeModeL(int) - ?IsCustomizedDialerVisibleL@CPhoneState@@QBEHXZ @ 180 NONAME ; int CPhoneState::IsCustomizedDialerVisibleL(void) const - ?UpdateInCallCbaL@CPhoneStateCallSetup@@MAEXXZ @ 181 NONAME ; void CPhoneStateCallSetup::UpdateInCallCbaL(void) - ?HandleNumberEntryClearedL@CPhoneStateInCall@@MAEXXZ @ 182 NONAME ; void CPhoneStateInCall::HandleNumberEntryClearedL(void) - ??0CPhoneStateIncoming@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 183 NONAME ; CPhoneStateIncoming::CPhoneStateIncoming(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ??1CPhoneStateIncoming@@UAE@XZ @ 184 NONAME ; CPhoneStateIncoming::~CPhoneStateIncoming(void) - ?HandleKeyLockEnabled@CPhoneUIController@@UAEXH@Z @ 185 NONAME ; void CPhoneUIController::HandleKeyLockEnabled(int) - ?DisableCallUIL@CPhoneState@@QAEXXZ @ 186 NONAME ; void CPhoneState::DisableCallUIL(void) - ?DeleteTouchPaneButtons@CPhoneState@@IAEXXZ @ 187 NONAME ; void CPhoneState::DeleteTouchPaneButtons(void) - ?ProcessCommandL@CPhoneStateIdle@@UAEHH@Z @ 188 NONAME ; int CPhoneStateIdle::ProcessCommandL(int) - ?IsNoteVisibleL@CPhoneState@@MAEHXZ @ 189 NONAME ; int CPhoneState::IsNoteVisibleL(void) - ?DynInitMenuBarL@CPhoneUIController@@UAEXHPAVCEikMenuBar@@@Z @ 190 NONAME ; void CPhoneUIController::DynInitMenuBarL(int, class CEikMenuBar *) - ?IsAlphanumericSupportedAndCharInput@CPhoneState@@MAEHABUTKeyEvent@@@Z @ 191 NONAME ; int CPhoneState::IsAlphanumericSupportedAndCharInput(struct TKeyEvent const &) - ?HandlePhoneEngineMessageL@CPhoneStateStartup@@UAEXHH@Z @ 192 NONAME ; void CPhoneStateStartup::HandlePhoneEngineMessageL(int, int) - ?HandleKeyEventL@CPhoneStateIncoming@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 193 NONAME ; void CPhoneStateIncoming::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?HandleKeyEventL@CPhoneStateStartup@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 194 NONAME ; void CPhoneStateStartup::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?HandleNumberEntryClearedL@CPhoneState@@MAEXXZ @ 195 NONAME ; void CPhoneState::HandleNumberEntryClearedL(void) - ?OnlyHashInNumberEntryL@CPhoneState@@MAEXXZ @ 196 NONAME ; void CPhoneState::OnlyHashInNumberEntryL(void) - ?IncreaseAudioVolumeL@CPhoneState@@IAEXXZ @ 197 NONAME ; void CPhoneState::IncreaseAudioVolumeL(void) - ?ConstructL@CPhoneStateIdle@@MAEXXZ @ 198 NONAME ; void CPhoneStateIdle::ConstructL(void) - ?CheckIfShowCallTerminationNote@CPhoneState@@MAEHXZ @ 199 NONAME ; int CPhoneState::CheckIfShowCallTerminationNote(void) - ?SetCallHeaderType@CPhoneState@@IAEXW4TPhoneCallTypeFlags@CBubbleManager@@@Z @ 200 NONAME ; void CPhoneState::SetCallHeaderType(enum CBubbleManager::TPhoneCallTypeFlags) - ?SendGlobalInfoNoteL@CPhoneState@@QAEXH@Z @ 201 NONAME ; void CPhoneState::SendGlobalInfoNoteL(int) - ?DisplayIdleScreenL@CPhoneState@@IAEXXZ @ 202 NONAME ; void CPhoneState::DisplayIdleScreenL(void) - ?StartShowSecurityNoteL@CPhoneState@@IAEXXZ @ 203 NONAME ; void CPhoneState::StartShowSecurityNoteL(void) - ?StoreNumberEntryContentL@CPhoneState@@IAEXXZ @ 204 NONAME ; void CPhoneState::StoreNumberEntryContentL(void) - ?SetBTHandsfreeModeL@CPhoneState@@IAEXH@Z @ 205 NONAME ; void CPhoneState::SetBTHandsfreeModeL(int) - ?HandlePhoneEngineMessageL@CPhoneStateIncoming@@UAEXHH@Z @ 206 NONAME ; void CPhoneStateIncoming::HandlePhoneEngineMessageL(int, int) - ?SetDefaultFlagsL@CPhoneState@@IAEXXZ @ 207 NONAME ; void CPhoneState::SetDefaultFlagsL(void) - ?HandleCommandL@CPhoneStateInCall@@UAEHH@Z @ 208 NONAME ; int CPhoneStateInCall::HandleCommandL(int) - ?DialVoiceCallL@CPhoneStateIdle@@IAEXXZ @ 209 NONAME ; void CPhoneStateIdle::DialVoiceCallL(void) - ?UpdateRemoteInfoDataL@CPhoneState@@IAEXH@Z @ 210 NONAME ; void CPhoneState::UpdateRemoteInfoDataL(int) - ?GetRingingCallL@CPhoneStateInCall@@MAEHXZ @ 211 NONAME ; int CPhoneStateInCall::GetRingingCallL(void) - ?HandleIdleForegroundEventL@CPhoneUIController@@UAEXXZ @ 212 NONAME ; void CPhoneUIController::HandleIdleForegroundEventL(void) - ?HandlePhoneForegroundEventL@CPhoneState@@UAEXXZ @ 213 NONAME ; void CPhoneState::HandlePhoneForegroundEventL(void) - ?HandleForegroundEventL@CPhoneState@@UAEXH@Z @ 214 NONAME ; void CPhoneState::HandleForegroundEventL(int) - ?DisplayIncomingCallL@CPhoneStateIdle@@IAEXH@Z @ 215 NONAME ; void CPhoneStateIdle::DisplayIncomingCallL(int) - ?HandleRemConCommandL@CPhoneState@@UAEHW4TRemConCoreApiOperationId@@W4TRemConCoreApiButtonAction@@@Z @ 216 NONAME ; int CPhoneState::HandleRemConCommandL(enum TRemConCoreApiOperationId, enum TRemConCoreApiButtonAction) - ??1CPhoneStateIdle@@UAE@XZ @ 217 NONAME ; CPhoneStateIdle::~CPhoneStateIdle(void) - ?PhoneNumberFromEntryLC@CPhoneState@@IAEPAVHBufC16@@XZ @ 218 NONAME ; class HBufC16 * CPhoneState::PhoneNumberFromEntryLC(void) - ?BaseConstructL@CPhoneState@@QAEXXZ @ 219 NONAME ; void CPhoneState::BaseConstructL(void) - ?HandlePhoneStartupL@CPhoneUIController@@UAEXXZ @ 220 NONAME ; void CPhoneUIController::HandlePhoneStartupL(void) - ?SpeedDialL@CPhoneStateIdle@@IAEXABIW4TDialInitiationMethod@1@@Z @ 221 NONAME ; void CPhoneStateIdle::SpeedDialL(unsigned int const &, enum CPhoneStateIdle::TDialInitiationMethod) - ?SetTouchPaneButtonEnabled@CPhoneState@@IAEXH@Z @ 222 NONAME ; void CPhoneState::SetTouchPaneButtonEnabled(int) - ?SetPhoneEngine@CPhoneStateMachine@@UAEXPAVMPEPhoneModel@@@Z @ 223 NONAME ; void CPhoneStateMachine::SetPhoneEngine(class MPEPhoneModel *) - ?SpeedDialCanceledL@CPhoneStateIdle@@IAEXABI@Z @ 224 NONAME ; void CPhoneStateIdle::SpeedDialCanceledL(unsigned int const &) - ?CloseDTMFEditorL@CPhoneState@@IAEXXZ @ 225 NONAME ; void CPhoneState::CloseDTMFEditorL(void) - ?SetTouchPaneVisible@CPhoneState@@IAEXH@Z @ 226 NONAME ; void CPhoneState::SetTouchPaneVisible(int) - ?HandlePhoneFocusLostEventL@CPhoneUIController@@UAEXXZ @ 227 NONAME ; void CPhoneUIController::HandlePhoneFocusLostEventL(void) - ?HandleKeyLockEnabled@CPhoneStateIncoming@@UAEXH@Z @ 228 NONAME ; void CPhoneStateIncoming::HandleKeyLockEnabled(int) - ??0CPhoneStateMachine@@IAE@PAVMPhoneViewCommandHandle@@@Z @ 229 NONAME ; CPhoneStateMachine::CPhoneStateMachine(class MPhoneViewCommandHandle *) - ??1CPhoneStateStartup@@UAE@XZ @ 230 NONAME ; CPhoneStateStartup::~CPhoneStateStartup(void) - ?HandleKeyMessageL@CPhoneState@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 231 NONAME ; void CPhoneState::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?SetToolbarButtonLoudspeakerEnabled@CPhoneState@@IAEXXZ @ 232 NONAME ; void CPhoneState::SetToolbarButtonLoudspeakerEnabled(void) - ?SetToolbarDimming@CPhoneState@@IAEXH@Z @ 233 NONAME ; void CPhoneState::SetToolbarDimming(int) + ?SecurityMode@CPhoneStateMachine@@UAEPAVMPhoneSecurityModeObserver@@XZ @ 93 NONAME ; class MPhoneSecurityModeObserver * CPhoneStateMachine::SecurityMode(void) + ?HandleAudioOutputChangedL@CPhoneState@@IAEXXZ @ 94 NONAME ; void CPhoneState::HandleAudioOutputChangedL(void) + ??1CPhoneUIController@@UAE@XZ @ 95 NONAME ; CPhoneUIController::~CPhoneUIController(void) + ?HandleKeyEventL@CPhoneState@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 96 NONAME ; void CPhoneState::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?UpdateIncomingContextMenuL@CPhoneState@@MAEXH@Z @ 97 NONAME ; void CPhoneState::UpdateIncomingContextMenuL(int) + ?OpenMenuBarL@CPhoneStateInCall@@MAEXXZ @ 98 NONAME ; void CPhoneStateInCall::OpenMenuBarL(void) + ?UpdateIncomingCbaL@CPhoneCbaManager@@QAEXH@Z @ 99 NONAME ; void CPhoneCbaManager::UpdateIncomingCbaL(int) + ?SetTouchPaneButtonDisabled@CPhoneState@@IAEXH@Z @ 100 NONAME ; void CPhoneState::SetTouchPaneButtonDisabled(int) + ?ConstructL@CPhoneStateIncoming@@MAEXXZ @ 101 NONAME ; void CPhoneStateIncoming::ConstructL(void) + ?CreatePhoneEngineL@CPhoneStateMachine@@UAEPAVMPEPhoneModel@@AAVMEngineMonitor@@@Z @ 102 NONAME ; class MPEPhoneModel * CPhoneStateMachine::CreatePhoneEngineL(class MEngineMonitor &) + ?SetTouchPaneButtons@CPhoneState@@IAEXH@Z @ 103 NONAME ; void CPhoneState::SetTouchPaneButtons(int) + ?HandleIdleForegroundEventL@CPhoneStateStartup@@UAEXXZ @ 104 NONAME ; void CPhoneStateStartup::HandleIdleForegroundEventL(void) + ?CallFromNumberEntryL@CPhoneState@@IAEXXZ @ 105 NONAME ; void CPhoneState::CallFromNumberEntryL(void) + ?UpdateCbaL@CPhoneCbaManager@@QAEXH@Z @ 106 NONAME ; void CPhoneCbaManager::UpdateCbaL(int) + ?IsVideoCall@CPhoneState@@IAEHH@Z @ 107 NONAME ; int CPhoneState::IsVideoCall(int) + ?IsSwivelClosed@CPhoneState@@QBEHXZ @ 108 NONAME ; int CPhoneState::IsSwivelClosed(void) const + ?CloseCustomizedDialerL@CPhoneState@@QAEXXZ @ 109 NONAME ; void CPhoneState::CloseCustomizedDialerL(void) + ?HandlePhoneForegroundEventL@CPhoneUIController@@UAEXXZ @ 110 NONAME ; void CPhoneUIController::HandlePhoneForegroundEventL(void) + ?CheckIfRestoreNEContentAfterDtmfDialer@CPhoneState@@IAEXXZ @ 111 NONAME ; void CPhoneState::CheckIfRestoreNEContentAfterDtmfDialer(void) + ?UpdateInCallContextMenuL@CPhoneState@@UAEXXZ @ 112 NONAME ; void CPhoneState::UpdateInCallContextMenuL(void) + ?HandleNumericKeyEventL@CPhoneState@@MAEXABUTKeyEvent@@W4TEventCode@@@Z @ 113 NONAME ; void CPhoneState::HandleNumericKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?SetToolbarDimming@CPhoneState@@IAEXH@Z @ 114 NONAME ; void CPhoneState::SetToolbarDimming(int) + ?SendGlobalErrorNoteL@CPhoneState@@QAEXH@Z @ 115 NONAME ; void CPhoneState::SendGlobalErrorNoteL(int) + ?IsAutoLockOn@CPhoneState@@UBEHXZ @ 116 NONAME ; int CPhoneState::IsAutoLockOn(void) const + ?UpdateCbaL@CPhoneStateCallSetup@@MAEXH@Z @ 117 NONAME ; void CPhoneStateCallSetup::UpdateCbaL(int) + ?RestoreNumberEntryContentL@CPhoneState@@IAEXXZ @ 118 NONAME ; void CPhoneState::RestoreNumberEntryContentL(void) + ?HandleKeyEventL@CPhoneStateIdle@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 119 NONAME ; void CPhoneStateIdle::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?IsNumberEntryContentStored@CPhoneState@@IAEHXZ @ 120 NONAME ; int CPhoneState::IsNumberEntryContentStored(void) + ?IsVideoCallActiveL@CPhoneStateInCall@@MAEHXZ @ 121 NONAME ; int CPhoneStateInCall::IsVideoCallActiveL(void) + ?DialVoiceCallL@CPhoneState@@IAEXXZ @ 122 NONAME ; void CPhoneState::DialVoiceCallL(void) + ?HandlePhoneStartupL@CPhoneStateStartup@@UAEXXZ @ 123 NONAME ; void CPhoneStateStartup::HandlePhoneStartupL(void) + ?EndUiUpdate@CPhoneState@@IAEXXZ @ 124 NONAME ; void CPhoneState::EndUiUpdate(void) + ?HandleKeyPressDurationL@CPhoneStateIncoming@@UAEXW4TKeyCode@@VTTimeIntervalMicroSeconds@@@Z @ 125 NONAME ; void CPhoneStateIncoming::HandleKeyPressDurationL(enum TKeyCode, class TTimeIntervalMicroSeconds) + ?UpdateInCallCbaL@CPhoneStateInCall@@MAEXXZ @ 126 NONAME ; void CPhoneStateInCall::UpdateInCallCbaL(void) + ?EndTransEffect@CPhoneState@@QAEXXZ @ 127 NONAME ; void CPhoneState::EndTransEffect(void) + ?HandleEnvironmentChangeL@CPhoneState@@UAEXH@Z @ 128 NONAME ; void CPhoneState::HandleEnvironmentChangeL(int) + ?HandleKeyMessageL@CPhoneStateInCall@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 129 NONAME ; void CPhoneStateInCall::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ?SetRingingTonePlaybackL@CPhoneState@@IAEXH@Z @ 130 NONAME ; void CPhoneState::SetRingingTonePlaybackL(int) + ?ProcessCommandL@CPhoneState@@UAEHH@Z @ 131 NONAME ; int CPhoneState::ProcessCommandL(int) + ?BeginUiUpdateLC@CPhoneState@@IAEXXZ @ 132 NONAME ; void CPhoneState::BeginUiUpdateLC(void) + ?DecreaseAudioVolumeL@CPhoneState@@IAEXXZ @ 133 NONAME ; void CPhoneState::DecreaseAudioVolumeL(void) + ?RemoveStateObserver@CPhoneSecurityModeObserver@@UAEXAAVMPhoneSecurityModeChangeObserver@@@Z @ 134 NONAME ; void CPhoneSecurityModeObserver::RemoveStateObserver(class MPhoneSecurityModeChangeObserver &) + ?PhoneEngineInfo@CPhoneStateMachine@@UAEPAVMPEEngineInfo@@XZ @ 135 NONAME ; class MPEEngineInfo * CPhoneStateMachine::PhoneEngineInfo(void) + ?CreateNumberEntryL@CPhoneStateInCall@@IAEXXZ @ 136 NONAME ; void CPhoneStateInCall::CreateNumberEntryL(void) + ?HandleSystemEventL@CPhoneUIController@@UAEXABVTWsEvent@@@Z @ 137 NONAME ; void CPhoneUIController::HandleSystemEventL(class TWsEvent const &) + ?DynInitMenuPaneL@CPhoneUIController@@UAEXHPAVCEikMenuPane@@@Z @ 138 NONAME ; void CPhoneUIController::DynInitMenuPaneL(int, class CEikMenuPane *) + ??0CPhoneStateStartup@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 139 NONAME ; CPhoneStateStartup::CPhoneStateStartup(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?GetRemoteInfoDataL@CPhoneState@@IAEXHAAVTDes16@@@Z @ 140 NONAME ; void CPhoneState::GetRemoteInfoDataL(int, class TDes16 &) + ?SetDivertIndication@CPhoneState@@UAEXH@Z @ 141 NONAME ; void CPhoneState::SetDivertIndication(int) + ?UpdateCbaL@CPhoneStateInCall@@MAEXH@Z @ 142 NONAME ; void CPhoneStateInCall::UpdateCbaL(int) + ?SetCallId@CPhoneStateMachine@@UAEXH@Z @ 143 NONAME ; void CPhoneStateMachine::SetCallId(int) + ?ProcessCommandL@CPhoneUIController@@UAEHH@Z @ 144 NONAME ; int CPhoneUIController::ProcessCommandL(int) + ?DisplayHeaderForCallComingInL@CPhoneState@@IAEXHH@Z @ 145 NONAME ; void CPhoneState::DisplayHeaderForCallComingInL(int, int) + ??0CPhoneStateIdle@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 146 NONAME ; CPhoneStateIdle::CPhoneStateIdle(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?SendPhoneEngineMessage@CPhoneStateMachine@@UAEXH@Z @ 147 NONAME ; void CPhoneStateMachine::SendPhoneEngineMessage(int) + ??0CPhoneStateCallSetup@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 148 NONAME ; CPhoneStateCallSetup::CPhoneStateCallSetup(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ??0CPhoneState@@QAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 149 NONAME ; CPhoneState::CPhoneState(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?HandleDtmfKeyToneL@CPhoneState@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 150 NONAME ; void CPhoneState::HandleDtmfKeyToneL(struct TKeyEvent const &, enum TEventCode) + ?HandleKeyMessageL@CPhoneStateIdle@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 151 NONAME ; void CPhoneStateIdle::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ?HandlePEConstructionReadyL@CPhoneStateStartup@@QAEXH@Z @ 152 NONAME ; void CPhoneStateStartup::HandlePEConstructionReadyL(int) + ?HandleForegroundEventL@CPhoneUIController@@UAEXH@Z @ 153 NONAME ; void CPhoneUIController::HandleForegroundEventL(int) + ?HandleSendCommandL@CPhoneStateIdle@@MAEXXZ @ 154 NONAME ; void CPhoneStateIdle::HandleSendCommandL(void) + ?HandleCommandL@CPhoneUIController@@UAEHH@Z @ 155 NONAME ; int CPhoneUIController::HandleCommandL(int) + ?HandleCreateNumberEntryL@CPhoneState@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 156 NONAME ; void CPhoneState::HandleCreateNumberEntryL(struct TKeyEvent const &, enum TEventCode) + ?DisplayHeaderForOutgoingCallL@CPhoneState@@IAEXH@Z @ 157 NONAME ; void CPhoneState::DisplayHeaderForOutgoingCallL(int) + ?HandlePhoneEngineMessageL@CPhoneStateInCall@@UAEXHH@Z @ 158 NONAME ; void CPhoneStateInCall::HandlePhoneEngineMessageL(int, int) + ?IsSpeedDialNumber@CPhoneStateIdle@@IBEHABVTDesC16@@@Z @ 159 NONAME ; int CPhoneStateIdle::IsSpeedDialNumber(class TDesC16 const &) const + ?IsNumberEntryUsedL@CPhoneState@@UAEHXZ @ 160 NONAME ; int CPhoneState::IsNumberEntryUsedL(void) + ??1CPhoneState@@UAE@XZ @ 161 NONAME ; CPhoneState::~CPhoneState(void) + ?HandleCreateNumberEntryL@CPhoneStateCallSetup@@MAEXABUTKeyEvent@@W4TEventCode@@@Z @ 162 NONAME ; void CPhoneStateCallSetup::HandleCreateNumberEntryL(struct TKeyEvent const &, enum TEventCode) + ?HandlePhoneEngineMessageL@CPhoneStateCallSetup@@UAEXHH@Z @ 163 NONAME ; void CPhoneStateCallSetup::HandlePhoneEngineMessageL(int, int) + ?HandlePhoneFocusLostEventL@CPhoneState@@UAEXXZ @ 164 NONAME ; void CPhoneState::HandlePhoneFocusLostEventL(void) + ?HandlePropertyChangedL@CPhoneStateInCall@@EAEXABVTUid@@IH@Z @ 165 NONAME ; void CPhoneStateInCall::HandlePropertyChangedL(class TUid const &, unsigned int, int) + ??1CPhoneStateMachine@@UAE@XZ @ 166 NONAME ; CPhoneStateMachine::~CPhoneStateMachine(void) + ?HandleIdleForegroundEventL@CPhoneState@@UAEXXZ @ 167 NONAME ; void CPhoneState::HandleIdleForegroundEventL(void) + ?DynInitMenuPaneL@CPhoneState@@UAEXHPAVCEikMenuPane@@@Z @ 168 NONAME ; void CPhoneState::DynInitMenuPaneL(int, class CEikMenuPane *) + ?IsDTMFEditorVisibleL@CPhoneState@@IBEHXZ @ 169 NONAME ; int CPhoneState::IsDTMFEditorVisibleL(void) const + ?ConstructL@CPhoneStateCallSetup@@MAEXXZ @ 170 NONAME ; void CPhoneStateCallSetup::ConstructL(void) + ?BeginTransEffectLC@CPhoneState@@QAEXW4TStateTransEffectType@@@Z @ 171 NONAME ; void CPhoneState::BeginTransEffectLC(enum TStateTransEffectType) + ?SetSecurityModeObserver@CPhoneStateMachine@@UAEXPAVMPhoneSecurityModeObserver@@@Z @ 172 NONAME ; void CPhoneStateMachine::SetSecurityModeObserver(class MPhoneSecurityModeObserver *) + ?HandleMessage@CPhoneUIController@@UAEXHH@Z @ 173 NONAME ; void CPhoneUIController::HandleMessage(int, int) + ?HandleSystemEventL@CPhoneState@@UAEXABVTWsEvent@@@Z @ 174 NONAME ; void CPhoneState::HandleSystemEventL(class TWsEvent const &) + ?NeedToReturnToForegroundAppL@CPhoneState@@IBEHXZ @ 175 NONAME ; int CPhoneState::NeedToReturnToForegroundAppL(void) const + ?DisplayCallSetupL@CPhoneStateIdle@@IAEXH@Z @ 176 NONAME ; void CPhoneStateIdle::DisplayCallSetupL(int) + ?ConstructL@CPhoneStateStartup@@MAEXXZ @ 177 NONAME ; void CPhoneStateStartup::ConstructL(void) + ?HandleKeyMessageL@CPhoneStateStartup@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 178 NONAME ; void CPhoneStateStartup::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ?ShowNoteL@CPhoneState@@IAEXH@Z @ 179 NONAME ; void CPhoneState::ShowNoteL(int) + ?HandlePropertyChangedL@CPhoneState@@UAEXABVTUid@@IH@Z @ 180 NONAME ; void CPhoneState::HandlePropertyChangedL(class TUid const &, unsigned int, int) + ?IsAnyQueryActiveL@CPhoneState@@QAEHXZ @ 181 NONAME ; int CPhoneState::IsAnyQueryActiveL(void) + ?State@CPhoneStateMachine@@UAEPAVMPhoneState@@XZ @ 182 NONAME ; class MPhoneState * CPhoneStateMachine::State(void) + ?SetHandsfreeModeL@CPhoneState@@IAEXH@Z @ 183 NONAME ; void CPhoneState::SetHandsfreeModeL(int) + ?IsCustomizedDialerVisibleL@CPhoneState@@QBEHXZ @ 184 NONAME ; int CPhoneState::IsCustomizedDialerVisibleL(void) const + ?UpdateInCallCbaL@CPhoneStateCallSetup@@MAEXXZ @ 185 NONAME ; void CPhoneStateCallSetup::UpdateInCallCbaL(void) + ?HandleNumberEntryClearedL@CPhoneStateInCall@@MAEXXZ @ 186 NONAME ; void CPhoneStateInCall::HandleNumberEntryClearedL(void) + ??0CPhoneStateIncoming@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 187 NONAME ; CPhoneStateIncoming::CPhoneStateIncoming(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ??1CPhoneStateIncoming@@UAE@XZ @ 188 NONAME ; CPhoneStateIncoming::~CPhoneStateIncoming(void) + ?DeleteTouchPaneButtons@CPhoneState@@IAEXXZ @ 189 NONAME ; void CPhoneState::DeleteTouchPaneButtons(void) + ?ProcessCommandL@CPhoneStateIdle@@UAEHH@Z @ 190 NONAME ; int CPhoneStateIdle::ProcessCommandL(int) + ?IsNoteVisibleL@CPhoneState@@MAEHXZ @ 191 NONAME ; int CPhoneState::IsNoteVisibleL(void) + ?DynInitMenuBarL@CPhoneUIController@@UAEXHPAVCEikMenuBar@@@Z @ 192 NONAME ; void CPhoneUIController::DynInitMenuBarL(int, class CEikMenuBar *) + ?IsAlphanumericSupportedAndCharInput@CPhoneState@@MAEHABUTKeyEvent@@@Z @ 193 NONAME ; int CPhoneState::IsAlphanumericSupportedAndCharInput(struct TKeyEvent const &) + ?HandlePhoneEngineMessageL@CPhoneStateStartup@@UAEXHH@Z @ 194 NONAME ; void CPhoneStateStartup::HandlePhoneEngineMessageL(int, int) + ?HandleKeyEventL@CPhoneStateIncoming@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 195 NONAME ; void CPhoneStateIncoming::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?HandleKeyEventL@CPhoneStateStartup@@UAEXABUTKeyEvent@@W4TEventCode@@@Z @ 196 NONAME ; void CPhoneStateStartup::HandleKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?HandleNumberEntryClearedL@CPhoneState@@MAEXXZ @ 197 NONAME ; void CPhoneState::HandleNumberEntryClearedL(void) + ?OnlyHashInNumberEntryL@CPhoneState@@MAEXXZ @ 198 NONAME ; void CPhoneState::OnlyHashInNumberEntryL(void) + ?IncreaseAudioVolumeL@CPhoneState@@IAEXXZ @ 199 NONAME ; void CPhoneState::IncreaseAudioVolumeL(void) + ?ConstructL@CPhoneStateIdle@@MAEXXZ @ 200 NONAME ; void CPhoneStateIdle::ConstructL(void) + ?CheckIfShowCallTerminationNote@CPhoneState@@MAEHXZ @ 201 NONAME ; int CPhoneState::CheckIfShowCallTerminationNote(void) + ?SetCallHeaderType@CPhoneState@@IAEXW4TPhoneCallTypeFlags@CBubbleManager@@@Z @ 202 NONAME ; void CPhoneState::SetCallHeaderType(enum CBubbleManager::TPhoneCallTypeFlags) + ?SendGlobalInfoNoteL@CPhoneState@@QAEXH@Z @ 203 NONAME ; void CPhoneState::SendGlobalInfoNoteL(int) + ?DisplayIdleScreenL@CPhoneState@@IAEXXZ @ 204 NONAME ; void CPhoneState::DisplayIdleScreenL(void) + ?StartShowSecurityNoteL@CPhoneState@@IAEXXZ @ 205 NONAME ; void CPhoneState::StartShowSecurityNoteL(void) + ?StoreNumberEntryContentL@CPhoneState@@IAEXXZ @ 206 NONAME ; void CPhoneState::StoreNumberEntryContentL(void) + ?SetBTHandsfreeModeL@CPhoneState@@IAEXH@Z @ 207 NONAME ; void CPhoneState::SetBTHandsfreeModeL(int) + ?HandlePhoneEngineMessageL@CPhoneStateIncoming@@UAEXHH@Z @ 208 NONAME ; void CPhoneStateIncoming::HandlePhoneEngineMessageL(int, int) + ?SetDefaultFlagsL@CPhoneState@@IAEXXZ @ 209 NONAME ; void CPhoneState::SetDefaultFlagsL(void) + ?HandleCommandL@CPhoneStateInCall@@UAEHH@Z @ 210 NONAME ; int CPhoneStateInCall::HandleCommandL(int) + ?DialVoiceCallL@CPhoneStateIdle@@IAEXXZ @ 211 NONAME ; void CPhoneStateIdle::DialVoiceCallL(void) + ?UpdateRemoteInfoDataL@CPhoneState@@IAEXH@Z @ 212 NONAME ; void CPhoneState::UpdateRemoteInfoDataL(int) + ?GetRingingCallL@CPhoneStateInCall@@MAEHXZ @ 213 NONAME ; int CPhoneStateInCall::GetRingingCallL(void) + ?HandleIdleForegroundEventL@CPhoneUIController@@UAEXXZ @ 214 NONAME ; void CPhoneUIController::HandleIdleForegroundEventL(void) + ?HandlePhoneForegroundEventL@CPhoneState@@UAEXXZ @ 215 NONAME ; void CPhoneState::HandlePhoneForegroundEventL(void) + ?HandleForegroundEventL@CPhoneState@@UAEXH@Z @ 216 NONAME ; void CPhoneState::HandleForegroundEventL(int) + ?DisplayIncomingCallL@CPhoneStateIdle@@IAEXH@Z @ 217 NONAME ; void CPhoneStateIdle::DisplayIncomingCallL(int) + ?SetSecurityMessageHandler@CPhoneStateMachine@@UAEXPAVMPhoneSecurityMessageHandler@@@Z @ 218 NONAME ; void CPhoneStateMachine::SetSecurityMessageHandler(class MPhoneSecurityMessageHandler *) + ?HandleRemConCommandL@CPhoneState@@UAEHW4TRemConCoreApiOperationId@@W4TRemConCoreApiButtonAction@@@Z @ 219 NONAME ; int CPhoneState::HandleRemConCommandL(enum TRemConCoreApiOperationId, enum TRemConCoreApiButtonAction) + ??1CPhoneStateIdle@@UAE@XZ @ 220 NONAME ; CPhoneStateIdle::~CPhoneStateIdle(void) + ?IsDialingExtensionInFocusL@CPhoneState@@QBEHXZ @ 221 NONAME ; int CPhoneState::IsDialingExtensionInFocusL(void) const + ?Initialize@CPhoneSecurityModeObserver@@UAEXXZ @ 222 NONAME ; void CPhoneSecurityModeObserver::Initialize(void) + ?PhoneNumberFromEntryLC@CPhoneState@@IAEPAVHBufC16@@XZ @ 223 NONAME ; class HBufC16 * CPhoneState::PhoneNumberFromEntryLC(void) + ?BaseConstructL@CPhoneState@@QAEXXZ @ 224 NONAME ; void CPhoneState::BaseConstructL(void) + ?HandlePhoneStartupL@CPhoneUIController@@UAEXXZ @ 225 NONAME ; void CPhoneUIController::HandlePhoneStartupL(void) + ?SpeedDialL@CPhoneStateIdle@@IAEXABIW4TDialInitiationMethod@1@@Z @ 226 NONAME ; void CPhoneStateIdle::SpeedDialL(unsigned int const &, enum CPhoneStateIdle::TDialInitiationMethod) + ?SetTouchPaneButtonEnabled@CPhoneState@@IAEXH@Z @ 227 NONAME ; void CPhoneState::SetTouchPaneButtonEnabled(int) + ?SetPhoneEngine@CPhoneStateMachine@@UAEXPAVMPEPhoneModel@@@Z @ 228 NONAME ; void CPhoneStateMachine::SetPhoneEngine(class MPEPhoneModel *) + ?SpeedDialCanceledL@CPhoneStateIdle@@IAEXABI@Z @ 229 NONAME ; void CPhoneStateIdle::SpeedDialCanceledL(unsigned int const &) + ?CloseDTMFEditorL@CPhoneState@@IAEXXZ @ 230 NONAME ; void CPhoneState::CloseDTMFEditorL(void) + ?SetTouchPaneVisible@CPhoneState@@IAEXH@Z @ 231 NONAME ; void CPhoneState::SetTouchPaneVisible(int) + ?HandlePhoneFocusLostEventL@CPhoneUIController@@UAEXXZ @ 232 NONAME ; void CPhoneUIController::HandlePhoneFocusLostEventL(void) + ??0CPhoneStateMachine@@IAE@PAVMPhoneViewCommandHandle@@@Z @ 233 NONAME ; CPhoneStateMachine::CPhoneStateMachine(class MPhoneViewCommandHandle *) + ??1CPhoneStateStartup@@UAE@XZ @ 234 NONAME ; CPhoneStateStartup::~CPhoneStateStartup(void) + ?HandleKeyMessageL@CPhoneState@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 235 NONAME ; void CPhoneState::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/eabi/phoneuicontrolu.def --- a/phoneapp/phoneuicontrol/eabi/phoneuicontrolu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/eabi/phoneuicontrolu.def Fri Apr 23 14:59:43 2010 +0100 @@ -3,172 +3,172 @@ _ZN11CPhoneState11EndUiUpdateEv @ 2 NONAME _ZN11CPhoneState11IsVideoCallEi @ 3 NONAME _ZN11CPhoneState12HandleErrorLERK12TPEErrorInfo @ 4 NONAME - _ZN11CPhoneState13EnableCallUILEv @ 5 NONAME - _ZN11CPhoneState14BaseConstructLEv @ 6 NONAME - _ZN11CPhoneState14DialVoiceCallLEv @ 7 NONAME - _ZN11CPhoneState14DisableCallUILEv @ 8 NONAME - _ZN11CPhoneState14DisableHWKeysLEv @ 9 NONAME - _ZN11CPhoneState14EndTransEffectEv @ 10 NONAME - _ZN11CPhoneState14HandleCommandLEi @ 11 NONAME - _ZN11CPhoneState14IsNoteVisibleLEv @ 12 NONAME - _ZN11CPhoneState14ShowTextQueryLEiiiP6TDes16i @ 13 NONAME - _ZN11CPhoneState15BeginUiUpdateLCEv @ 14 NONAME - _ZN11CPhoneState15DisconnectCallLEv @ 15 NONAME - _ZN11CPhoneState15DynInitMenuBarLEiP11CEikMenuBar @ 16 NONAME - _ZN11CPhoneState15HandleKeyEventLERK9TKeyEvent10TEventCode @ 17 NONAME - _ZN11CPhoneState15HandleLongHashLEv @ 18 NONAME - _ZN11CPhoneState15ProcessCommandLEi @ 19 NONAME - _ZN11CPhoneState15SetContextMenuLEi @ 20 NONAME - _ZN11CPhoneState16CallWaitingNoteLEi @ 21 NONAME - _ZN11CPhoneState16CloseDTMFEditorLEv @ 22 NONAME - _ZN11CPhoneState16DynInitMenuPaneLEiP12CEikMenuPane @ 23 NONAME - _ZN11CPhoneState16SetDefaultFlagsLEv @ 24 NONAME - _ZN11CPhoneState17HandleHoldSwitchLEv @ 25 NONAME - _ZN11CPhoneState17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 26 NONAME - _ZN11CPhoneState17IsAnyQueryActiveLEv @ 27 NONAME - _ZN11CPhoneState17SetCallHeaderTypeEN14CBubbleManager19TPhoneCallTypeFlagsE @ 28 NONAME - _ZN11CPhoneState17SetHandsfreeModeLEi @ 29 NONAME - _ZN11CPhoneState18BeginTransEffectLCE21TStateTransEffectType @ 30 NONAME - _ZN11CPhoneState18DisplayIdleScreenLEv @ 31 NONAME - _ZN11CPhoneState18GetRemoteInfoDataLEiR6TDes16 @ 32 NONAME - _ZN11CPhoneState18HandleDtmfKeyToneLERK9TKeyEvent10TEventCode @ 33 NONAME - _ZN11CPhoneState18HandleSystemEventLERK8TWsEvent @ 34 NONAME - _ZN11CPhoneState18IsNumberEntryUsedLEv @ 35 NONAME - _ZN11CPhoneState19CompleteSatRequestLEi @ 36 NONAME - _ZN11CPhoneState19DialMultimediaCallLEv @ 37 NONAME - _ZN11CPhoneState19HandleCenRepChangeLERK4TUidj @ 38 NONAME - _ZN11CPhoneState19HandlePhoneStartupLEv @ 39 NONAME - _ZN11CPhoneState19SendGlobalInfoNoteLEi @ 40 NONAME - _ZN11CPhoneState19SetBTHandsfreeModeLEi @ 41 NONAME - _ZN11CPhoneState19SetDivertIndicationEi @ 42 NONAME - _ZN11CPhoneState19SetTouchPaneButtonsEi @ 43 NONAME - _ZN11CPhoneState19SetTouchPaneVisibleEi @ 44 NONAME - _ZN11CPhoneState19ShowNumberBusyNoteLEv @ 45 NONAME - _ZN11CPhoneState20CallFromNumberEntryLEv @ 46 NONAME - _ZN11CPhoneState20DecreaseAudioVolumeLEv @ 47 NONAME - _ZN11CPhoneState20HandleDisconnectingLEi @ 48 NONAME - _ZN11CPhoneState20HandleKeyLockEnabledEi @ 49 NONAME - _ZN11CPhoneState20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 50 NONAME - _ZN11CPhoneState20IncreaseAudioVolumeLEv @ 51 NONAME - _ZN11CPhoneState20SendGlobalErrorNoteLEi @ 52 NONAME - _ZN11CPhoneState21IsNumberEntryVisibleLEv @ 53 NONAME - _ZN11CPhoneState21UpdateRemoteInfoDataLEi @ 54 NONAME - _ZN11CPhoneState22CloseCustomizedDialerLEv @ 55 NONAME - _ZN11CPhoneState22DeleteTouchPaneButtonsEv @ 56 NONAME - _ZN11CPhoneState22HandleForegroundEventLEi @ 57 NONAME - _ZN11CPhoneState22HandleNumericKeyEventLERK9TKeyEvent10TEventCode @ 58 NONAME - _ZN11CPhoneState22HandlePropertyChangedLERK4TUidji @ 59 NONAME - _ZN11CPhoneState22OnlyHashInNumberEntryLEv @ 60 NONAME - _ZN11CPhoneState22PhoneNumberFromEntryLCEv @ 61 NONAME - _ZN11CPhoneState22SendGlobalWarningNoteLEi @ 62 NONAME - _ZN11CPhoneState22StartShowSecurityNoteLEv @ 63 NONAME - _ZN11CPhoneState23HandleAudioMuteChangedLEv @ 64 NONAME - _ZN11CPhoneState23HandleKeyPressDurationLE8TKeyCode25TTimeIntervalMicroSeconds @ 65 NONAME - _ZN11CPhoneState23HandleNumberEntryEditedEv @ 66 NONAME - _ZN11CPhoneState23SetRingingTonePlaybackLEi @ 67 NONAME - _ZN11CPhoneState23UpdateSingleActiveCallLEi @ 68 NONAME - _ZN11CPhoneState24HandleCreateNumberEntryLERK9TKeyEvent10TEventCode @ 69 NONAME - _ZN11CPhoneState24HandleEnvironmentChangeLEi @ 70 NONAME - _ZN11CPhoneState24StartAlsLineChangeTimerLEv @ 71 NONAME - _ZN11CPhoneState24StoreNumberEntryContentLEv @ 72 NONAME - _ZN11CPhoneState24UpdateInCallContextMenuLEv @ 73 NONAME - _ZN11CPhoneState25HandleAudioOutputChangedLEv @ 74 NONAME - _ZN11CPhoneState25HandleNumberEntryClearedLEv @ 75 NONAME - _ZN11CPhoneState25HandlePhoneEngineMessageLEii @ 76 NONAME - _ZN11CPhoneState25SetNumberEntryVisibilityLEi @ 77 NONAME - _ZN11CPhoneState25SetTouchPaneButtonEnabledEi @ 78 NONAME - _ZN11CPhoneState26HandleIdleForegroundEventLEv @ 79 NONAME - _ZN11CPhoneState26HandlePhoneFocusLostEventLEv @ 80 NONAME - _ZN11CPhoneState26IsNumberEntryContentStoredEv @ 81 NONAME - _ZN11CPhoneState26RestoreNumberEntryContentLEv @ 82 NONAME - _ZN11CPhoneState26SetTouchPaneButtonDisabledEi @ 83 NONAME - _ZN11CPhoneState26UpdateIncomingContextMenuLEi @ 84 NONAME - _ZN11CPhoneState26UpdateSilenceButtonDimmingEv @ 85 NONAME - _ZN11CPhoneState27DisplayCallTerminationNoteLEv @ 86 NONAME - _ZN11CPhoneState27HandlePhoneForegroundEventLEv @ 87 NONAME - _ZN11CPhoneState27RetainPreviousKeylockStateLEv @ 88 NONAME - _ZN11CPhoneState28CheckDisableHWKeysAndCallUILEv @ 89 NONAME - _ZN11CPhoneState28ClearNumberEntryContentCacheEv @ 90 NONAME - _ZN11CPhoneState28SetupIdleScreenInBackgroundLEv @ 91 NONAME - _ZN11CPhoneState29DisplayHeaderForCallComingInLEii @ 92 NONAME - _ZN11CPhoneState29DisplayHeaderForOutgoingCallLEi @ 93 NONAME - _ZN11CPhoneState30CheckIfShowCallTerminationNoteEv @ 94 NONAME - _ZN11CPhoneState30CustomizedDialerCbaResourceIdLEv @ 95 NONAME - _ZN11CPhoneState31CustomizedDialerMenuResourceIdLEv @ 96 NONAME - _ZN11CPhoneState34CaptureKeysDuringCallNotificationLEi @ 97 NONAME - _ZN11CPhoneState34SetCallHeaderTextsForCallComingInLEiiP28TPhoneCmdParamCallHeaderData @ 98 NONAME - _ZN11CPhoneState35IsAlphanumericSupportedAndCharInputERK9TKeyEvent @ 99 NONAME - _ZN11CPhoneState38CheckIfRestoreNEContentAfterDtmfDialerEv @ 100 NONAME - _ZN11CPhoneState43IsSimStateNotPresentWithSecurityModeEnabledEv @ 101 NONAME - _ZN11CPhoneState7IsSimOkEv @ 102 NONAME - _ZN11CPhoneState9ShowNoteLEi @ 103 NONAME - _ZN11CPhoneStateC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 104 NONAME - _ZN11CPhoneStateC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 105 NONAME - _ZN11CPhoneStateD0Ev @ 106 NONAME - _ZN11CPhoneStateD1Ev @ 107 NONAME - _ZN11CPhoneStateD2Ev @ 108 NONAME - _ZN15CPhoneStateIdle10ConstructLEv @ 109 NONAME - _ZN15CPhoneStateIdle10SpeedDialLERKjNS_21TDialInitiationMethodE @ 110 NONAME - _ZN15CPhoneStateIdle14DialVoiceCallLEv @ 111 NONAME - _ZN15CPhoneStateIdle14HandleCommandLEi @ 112 NONAME - _ZN15CPhoneStateIdle14HandleDialingLEi @ 113 NONAME - _ZN15CPhoneStateIdle15HandleKeyEventLERK9TKeyEvent10TEventCode @ 114 NONAME - _ZN15CPhoneStateIdle15ProcessCommandLEi @ 115 NONAME - _ZN15CPhoneStateIdle17DisplayCallSetupLEi @ 116 NONAME - _ZN15CPhoneStateIdle17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 117 NONAME - _ZN15CPhoneStateIdle18HandleSendCommandLEv @ 118 NONAME - _ZN15CPhoneStateIdle18SpeedDialCanceledLERKj @ 119 NONAME - _ZN15CPhoneStateIdle19DialMultimediaCallLEv @ 120 NONAME - _ZN15CPhoneStateIdle20DisplayIncomingCallLEi @ 121 NONAME - _ZN15CPhoneStateIdle20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 122 NONAME - _ZN15CPhoneStateIdle22OnlyHashInNumberEntryLEv @ 123 NONAME - _ZN15CPhoneStateIdle25HandleNumberEntryClearedLEv @ 124 NONAME - _ZN15CPhoneStateIdle25HandleNumberLongKeyPressLEv @ 125 NONAME - _ZN15CPhoneStateIdle25HandlePhoneEngineMessageLEii @ 126 NONAME - _ZN15CPhoneStateIdle26HandleIdleForegroundEventLEv @ 127 NONAME - _ZN15CPhoneStateIdle26HandlePhoneFocusLostEventLEv @ 128 NONAME - _ZN15CPhoneStateIdle27HandlePhoneForegroundEventLEv @ 129 NONAME - _ZN15CPhoneStateIdle5DialLERK7TDesC1616TPhoneNumberTypeNS_21TDialInitiationMethodE @ 130 NONAME - _ZN15CPhoneStateIdleC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 131 NONAME - _ZN15CPhoneStateIdleC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 132 NONAME - _ZN15CPhoneStateIdleD0Ev @ 133 NONAME - _ZN15CPhoneStateIdleD1Ev @ 134 NONAME - _ZN15CPhoneStateIdleD2Ev @ 135 NONAME - _ZN16CPhoneCbaManager10UpdateCbaLEi @ 136 NONAME - _ZN16CPhoneCbaManager18UpdateIncomingCbaLEi @ 137 NONAME - _ZN16CPhoneCbaManager7SetCbaLEi @ 138 NONAME - _ZN17CPhoneStateHandle17ViewCommandHandleEv @ 139 NONAME - _ZN17CPhoneStateHandle8InstanceEv @ 140 NONAME - _ZN17CPhoneStateInCall10ConstructLEv @ 141 NONAME - _ZN17CPhoneStateInCall10UpdateCbaLEi @ 142 NONAME - _ZN17CPhoneStateInCall11HandleIdleLEi @ 143 NONAME - _ZN17CPhoneStateInCall12OpenMenuBarLEv @ 144 NONAME - _ZN17CPhoneStateInCall14HandleCommandLEi @ 145 NONAME - _ZN17CPhoneStateInCall15CloseDtmfQueryLEv @ 146 NONAME - _ZN17CPhoneStateInCall15GetRingingCallLEv @ 147 NONAME - _ZN17CPhoneStateInCall16UpdateInCallCbaLEv @ 148 NONAME - _ZN17CPhoneStateInCall17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 149 NONAME - _ZN17CPhoneStateInCall18CallFetchedNumberLERK7TDesC16 @ 150 NONAME - _ZN17CPhoneStateInCall18CreateNumberEntryLEv @ 151 NONAME - _ZN17CPhoneStateInCall18IsVideoCallActiveLEv @ 152 NONAME - _ZN17CPhoneStateInCall19IsVideoCallRingingLEv @ 153 NONAME - _ZN17CPhoneStateInCall19LaunchNewCallQueryLEv @ 154 NONAME - _ZN17CPhoneStateInCall23DisconnectOutgoingCallLEv @ 155 NONAME - _ZN17CPhoneStateInCall25HandleNumberEntryClearedLEv @ 156 NONAME - _ZN17CPhoneStateInCall25HandlePhoneEngineMessageLEii @ 157 NONAME - _ZN17CPhoneStateInCall34PhoneNumberAvailableInPhoneEngineLEi @ 158 NONAME - _ZN17CPhoneStateInCallC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 159 NONAME - _ZN17CPhoneStateInCallC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 160 NONAME - _ZN17CPhoneStateInCallD0Ev @ 161 NONAME - _ZN17CPhoneStateInCallD1Ev @ 162 NONAME - _ZN17CPhoneStateInCallD2Ev @ 163 NONAME - _ZN18CPhoneStateMachine11ChangeStateEi @ 164 NONAME - _ZN18CPhoneStateMachine11PhoneEngineEv @ 165 NONAME - _ZN18CPhoneStateMachine12PhoneStorageEv @ 166 NONAME - _ZN18CPhoneStateMachine14SetPhoneEngineEP13MPEPhoneModel @ 167 NONAME - _ZN18CPhoneStateMachine15PhoneEngineInfoEv @ 168 NONAME - _ZN18CPhoneStateMachine18CreatePhoneEngineLER14MEngineMonitor @ 169 NONAME - _ZN18CPhoneStateMachine22SendPhoneEngineMessageEi @ 170 NONAME + _ZN11CPhoneState14BaseConstructLEv @ 5 NONAME + _ZN11CPhoneState14DialVoiceCallLEv @ 6 NONAME + _ZN11CPhoneState14EndTransEffectEv @ 7 NONAME + _ZN11CPhoneState14HandleCommandLEi @ 8 NONAME + _ZN11CPhoneState14IsNoteVisibleLEv @ 9 NONAME + _ZN11CPhoneState14ShowTextQueryLEiiiP6TDes16i @ 10 NONAME + _ZN11CPhoneState15BeginUiUpdateLCEv @ 11 NONAME + _ZN11CPhoneState15DisconnectCallLEv @ 12 NONAME + _ZN11CPhoneState15DynInitMenuBarLEiP11CEikMenuBar @ 13 NONAME + _ZN11CPhoneState15HandleKeyEventLERK9TKeyEvent10TEventCode @ 14 NONAME + _ZN11CPhoneState15HandleLongHashLEv @ 15 NONAME + _ZN11CPhoneState15ProcessCommandLEi @ 16 NONAME + _ZN11CPhoneState15SetContextMenuLEi @ 17 NONAME + _ZN11CPhoneState16CallWaitingNoteLEi @ 18 NONAME + _ZN11CPhoneState16CloseDTMFEditorLEv @ 19 NONAME + _ZN11CPhoneState16DynInitMenuPaneLEiP12CEikMenuPane @ 20 NONAME + _ZN11CPhoneState16SetDefaultFlagsLEv @ 21 NONAME + _ZN11CPhoneState17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 22 NONAME + _ZN11CPhoneState17IsAnyQueryActiveLEv @ 23 NONAME + _ZN11CPhoneState17SetCallHeaderTypeEN14CBubbleManager19TPhoneCallTypeFlagsE @ 24 NONAME + _ZN11CPhoneState17SetHandsfreeModeLEi @ 25 NONAME + _ZN11CPhoneState17SetToolbarDimmingEi @ 26 NONAME + _ZN11CPhoneState18BeginTransEffectLCE21TStateTransEffectType @ 27 NONAME + _ZN11CPhoneState18DisplayIdleScreenLEv @ 28 NONAME + _ZN11CPhoneState18GetRemoteInfoDataLEiR6TDes16 @ 29 NONAME + _ZN11CPhoneState18HandleDtmfKeyToneLERK9TKeyEvent10TEventCode @ 30 NONAME + _ZN11CPhoneState18HandleSystemEventLERK8TWsEvent @ 31 NONAME + _ZN11CPhoneState18IsNumberEntryUsedLEv @ 32 NONAME + _ZN11CPhoneState19CompleteSatRequestLEi @ 33 NONAME + _ZN11CPhoneState19DialMultimediaCallLEv @ 34 NONAME + _ZN11CPhoneState19HandleCenRepChangeLERK4TUidj @ 35 NONAME + _ZN11CPhoneState19HandlePhoneStartupLEv @ 36 NONAME + _ZN11CPhoneState19SendGlobalInfoNoteLEi @ 37 NONAME + _ZN11CPhoneState19SetBTHandsfreeModeLEi @ 38 NONAME + _ZN11CPhoneState19SetDivertIndicationEi @ 39 NONAME + _ZN11CPhoneState19SetTouchPaneButtonsEi @ 40 NONAME + _ZN11CPhoneState19SetTouchPaneVisibleEi @ 41 NONAME + _ZN11CPhoneState19ShowNumberBusyNoteLEv @ 42 NONAME + _ZN11CPhoneState20CallFromNumberEntryLEv @ 43 NONAME + _ZN11CPhoneState20DecreaseAudioVolumeLEv @ 44 NONAME + _ZN11CPhoneState20HandleDisconnectingLEi @ 45 NONAME + _ZN11CPhoneState20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 46 NONAME + _ZN11CPhoneState20IncreaseAudioVolumeLEv @ 47 NONAME + _ZN11CPhoneState20SendGlobalErrorNoteLEi @ 48 NONAME + _ZN11CPhoneState21IsNumberEntryVisibleLEv @ 49 NONAME + _ZN11CPhoneState21UpdateRemoteInfoDataLEi @ 50 NONAME + _ZN11CPhoneState22CloseCustomizedDialerLEv @ 51 NONAME + _ZN11CPhoneState22DeleteTouchPaneButtonsEv @ 52 NONAME + _ZN11CPhoneState22HandleForegroundEventLEi @ 53 NONAME + _ZN11CPhoneState22HandleNumericKeyEventLERK9TKeyEvent10TEventCode @ 54 NONAME + _ZN11CPhoneState22HandlePropertyChangedLERK4TUidji @ 55 NONAME + _ZN11CPhoneState22OnlyHashInNumberEntryLEv @ 56 NONAME + _ZN11CPhoneState22PhoneNumberFromEntryLCEv @ 57 NONAME + _ZN11CPhoneState22SendGlobalWarningNoteLEi @ 58 NONAME + _ZN11CPhoneState22StartShowSecurityNoteLEv @ 59 NONAME + _ZN11CPhoneState23HandleAudioMuteChangedLEv @ 60 NONAME + _ZN11CPhoneState23HandleKeyPressDurationLE8TKeyCode25TTimeIntervalMicroSeconds @ 61 NONAME + _ZN11CPhoneState23HandleNumberEntryEditedEv @ 62 NONAME + _ZN11CPhoneState23SetRingingTonePlaybackLEi @ 63 NONAME + _ZN11CPhoneState23UpdateSingleActiveCallLEi @ 64 NONAME + _ZN11CPhoneState24HandleCreateNumberEntryLERK9TKeyEvent10TEventCode @ 65 NONAME + _ZN11CPhoneState24HandleEnvironmentChangeLEi @ 66 NONAME + _ZN11CPhoneState24StartAlsLineChangeTimerLEv @ 67 NONAME + _ZN11CPhoneState24StoreNumberEntryContentLEv @ 68 NONAME + _ZN11CPhoneState24UpdateInCallContextMenuLEv @ 69 NONAME + _ZN11CPhoneState25HandleAudioOutputChangedLEv @ 70 NONAME + _ZN11CPhoneState25HandleNumberEntryClearedLEv @ 71 NONAME + _ZN11CPhoneState25HandlePhoneEngineMessageLEii @ 72 NONAME + _ZN11CPhoneState25SetNumberEntryVisibilityLEi @ 73 NONAME + _ZN11CPhoneState25SetTouchPaneButtonEnabledEi @ 74 NONAME + _ZN11CPhoneState26HandleIdleForegroundEventLEv @ 75 NONAME + _ZN11CPhoneState26HandlePhoneFocusLostEventLEv @ 76 NONAME + _ZN11CPhoneState26IsNumberEntryContentStoredEv @ 77 NONAME + _ZN11CPhoneState26RestoreNumberEntryContentLEv @ 78 NONAME + _ZN11CPhoneState26SetTouchPaneButtonDisabledEi @ 79 NONAME + _ZN11CPhoneState26UpdateIncomingContextMenuLEi @ 80 NONAME + _ZN11CPhoneState26UpdateSilenceButtonDimmingEv @ 81 NONAME + _ZN11CPhoneState27DisplayCallTerminationNoteLEv @ 82 NONAME + _ZN11CPhoneState27HandlePhoneForegroundEventLEv @ 83 NONAME + _ZN11CPhoneState28ClearNumberEntryContentCacheEv @ 84 NONAME + _ZN11CPhoneState28SetupIdleScreenInBackgroundLEv @ 85 NONAME + _ZN11CPhoneState29DisplayHeaderForCallComingInLEii @ 86 NONAME + _ZN11CPhoneState29DisplayHeaderForOutgoingCallLEi @ 87 NONAME + _ZN11CPhoneState30CheckIfShowCallTerminationNoteEv @ 88 NONAME + _ZN11CPhoneState30CustomizedDialerCbaResourceIdLEv @ 89 NONAME + _ZN11CPhoneState31CustomizedDialerMenuResourceIdLEv @ 90 NONAME + _ZN11CPhoneState34CaptureKeysDuringCallNotificationLEi @ 91 NONAME + _ZN11CPhoneState34SetCallHeaderTextsForCallComingInLEiiP28TPhoneCmdParamCallHeaderData @ 92 NONAME + _ZN11CPhoneState34SetToolbarButtonLoudspeakerEnabledEv @ 93 NONAME + _ZN11CPhoneState35IsAlphanumericSupportedAndCharInputERK9TKeyEvent @ 94 NONAME + _ZN11CPhoneState38CheckIfRestoreNEContentAfterDtmfDialerEv @ 95 NONAME + _ZN11CPhoneState43IsSimStateNotPresentWithSecurityModeEnabledEv @ 96 NONAME + _ZN11CPhoneState7IsSimOkEv @ 97 NONAME + _ZN11CPhoneState9ShowNoteLEi @ 98 NONAME + _ZN11CPhoneStateC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 99 NONAME + _ZN11CPhoneStateC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 100 NONAME + _ZN11CPhoneStateD0Ev @ 101 NONAME + _ZN11CPhoneStateD1Ev @ 102 NONAME + _ZN11CPhoneStateD2Ev @ 103 NONAME + _ZN15CPhoneStateIdle10ConstructLEv @ 104 NONAME + _ZN15CPhoneStateIdle10SpeedDialLERKjNS_21TDialInitiationMethodE @ 105 NONAME + _ZN15CPhoneStateIdle14DialVoiceCallLEv @ 106 NONAME + _ZN15CPhoneStateIdle14HandleCommandLEi @ 107 NONAME + _ZN15CPhoneStateIdle14HandleDialingLEi @ 108 NONAME + _ZN15CPhoneStateIdle15HandleKeyEventLERK9TKeyEvent10TEventCode @ 109 NONAME + _ZN15CPhoneStateIdle15ProcessCommandLEi @ 110 NONAME + _ZN15CPhoneStateIdle17DisplayCallSetupLEi @ 111 NONAME + _ZN15CPhoneStateIdle17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 112 NONAME + _ZN15CPhoneStateIdle18HandleSendCommandLEv @ 113 NONAME + _ZN15CPhoneStateIdle18SpeedDialCanceledLERKj @ 114 NONAME + _ZN15CPhoneStateIdle19DialMultimediaCallLEv @ 115 NONAME + _ZN15CPhoneStateIdle20DisplayIncomingCallLEi @ 116 NONAME + _ZN15CPhoneStateIdle20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 117 NONAME + _ZN15CPhoneStateIdle22OnlyHashInNumberEntryLEv @ 118 NONAME + _ZN15CPhoneStateIdle25HandleNumberEntryClearedLEv @ 119 NONAME + _ZN15CPhoneStateIdle25HandleNumberLongKeyPressLEv @ 120 NONAME + _ZN15CPhoneStateIdle25HandlePhoneEngineMessageLEii @ 121 NONAME + _ZN15CPhoneStateIdle26HandleIdleForegroundEventLEv @ 122 NONAME + _ZN15CPhoneStateIdle26HandlePhoneFocusLostEventLEv @ 123 NONAME + _ZN15CPhoneStateIdle27HandlePhoneForegroundEventLEv @ 124 NONAME + _ZN15CPhoneStateIdle5DialLERK7TDesC1616TPhoneNumberTypeNS_21TDialInitiationMethodE @ 125 NONAME + _ZN15CPhoneStateIdleC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 126 NONAME + _ZN15CPhoneStateIdleC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 127 NONAME + _ZN15CPhoneStateIdleD0Ev @ 128 NONAME + _ZN15CPhoneStateIdleD1Ev @ 129 NONAME + _ZN15CPhoneStateIdleD2Ev @ 130 NONAME + _ZN16CPhoneCbaManager10UpdateCbaLEi @ 131 NONAME + _ZN16CPhoneCbaManager18UpdateIncomingCbaLEi @ 132 NONAME + _ZN16CPhoneCbaManager7SetCbaLEi @ 133 NONAME + _ZN17CPhoneStateHandle17ViewCommandHandleEv @ 134 NONAME + _ZN17CPhoneStateHandle8InstanceEv @ 135 NONAME + _ZN17CPhoneStateInCall10ConstructLEv @ 136 NONAME + _ZN17CPhoneStateInCall10UpdateCbaLEi @ 137 NONAME + _ZN17CPhoneStateInCall11HandleIdleLEi @ 138 NONAME + _ZN17CPhoneStateInCall12OpenMenuBarLEv @ 139 NONAME + _ZN17CPhoneStateInCall14HandleCommandLEi @ 140 NONAME + _ZN17CPhoneStateInCall15CloseDtmfQueryLEv @ 141 NONAME + _ZN17CPhoneStateInCall15GetRingingCallLEv @ 142 NONAME + _ZN17CPhoneStateInCall16UpdateInCallCbaLEv @ 143 NONAME + _ZN17CPhoneStateInCall17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 144 NONAME + _ZN17CPhoneStateInCall18CallFetchedNumberLERK7TDesC16 @ 145 NONAME + _ZN17CPhoneStateInCall18CreateNumberEntryLEv @ 146 NONAME + _ZN17CPhoneStateInCall18IsVideoCallActiveLEv @ 147 NONAME + _ZN17CPhoneStateInCall19IsVideoCallRingingLEv @ 148 NONAME + _ZN17CPhoneStateInCall19LaunchNewCallQueryLEv @ 149 NONAME + _ZN17CPhoneStateInCall22HandlePropertyChangedLERK4TUidji @ 150 NONAME + _ZN17CPhoneStateInCall23DisconnectOutgoingCallLEv @ 151 NONAME + _ZN17CPhoneStateInCall25HandleNumberEntryClearedLEv @ 152 NONAME + _ZN17CPhoneStateInCall25HandlePhoneEngineMessageLEii @ 153 NONAME + _ZN17CPhoneStateInCall34PhoneNumberAvailableInPhoneEngineLEi @ 154 NONAME + _ZN17CPhoneStateInCallC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 155 NONAME + _ZN17CPhoneStateInCallC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 156 NONAME + _ZN17CPhoneStateInCallD0Ev @ 157 NONAME + _ZN17CPhoneStateInCallD1Ev @ 158 NONAME + _ZN17CPhoneStateInCallD2Ev @ 159 NONAME + _ZN18CPhoneStateMachine11ChangeStateEi @ 160 NONAME + _ZN18CPhoneStateMachine11PhoneEngineEv @ 161 NONAME + _ZN18CPhoneStateMachine12SecurityModeEv @ 162 NONAME + _ZN18CPhoneStateMachine14SetPhoneEngineEP13MPEPhoneModel @ 163 NONAME + _ZN18CPhoneStateMachine15PhoneEngineInfoEv @ 164 NONAME + _ZN18CPhoneStateMachine18CreatePhoneEngineLER14MEngineMonitor @ 165 NONAME + _ZN18CPhoneStateMachine22HandlePropertyChangedLERK4TUidji @ 166 NONAME + _ZN18CPhoneStateMachine22SendPhoneEngineMessageEi @ 167 NONAME + _ZN18CPhoneStateMachine23SetSecurityModeObserverEP26MPhoneSecurityModeObserver @ 168 NONAME + _ZN18CPhoneStateMachine25HandlePhoneEngineMessageLEii @ 169 NONAME + _ZN18CPhoneStateMachine25SetSecurityMessageHandlerEP28MPhoneSecurityMessageHandler @ 170 NONAME _ZN18CPhoneStateMachine5StateEv @ 171 NONAME _ZN18CPhoneStateMachine9SetCallIdEi @ 172 NONAME _ZN18CPhoneStateMachineC1EP23MPhoneViewCommandHandle @ 173 NONAME @@ -184,28 +184,28 @@ _ZN18CPhoneStateStartup24HandleCreateNumberEntryLERK9TKeyEvent10TEventCode @ 183 NONAME _ZN18CPhoneStateStartup25HandlePhoneEngineMessageLEii @ 184 NONAME _ZN18CPhoneStateStartup26HandleIdleForegroundEventLEv @ 185 NONAME - _ZN18CPhoneStateStartup4NewLEP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 186 NONAME - _ZN18CPhoneStateStartupC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 187 NONAME - _ZN18CPhoneStateStartupC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 188 NONAME - _ZN18CPhoneStateStartupD0Ev @ 189 NONAME - _ZN18CPhoneStateStartupD1Ev @ 190 NONAME - _ZN18CPhoneStateStartupD2Ev @ 191 NONAME - _ZN18CPhoneUIController11HandleErrorERK12TPEErrorInfo @ 192 NONAME - _ZN18CPhoneUIController13HandleMessageEii @ 193 NONAME - _ZN18CPhoneUIController14HandleCommandLEi @ 194 NONAME - _ZN18CPhoneUIController15DynInitMenuBarLEiP11CEikMenuBar @ 195 NONAME - _ZN18CPhoneUIController15HandleKeyEventLERK9TKeyEvent10TEventCode @ 196 NONAME - _ZN18CPhoneUIController15ProcessCommandLEi @ 197 NONAME - _ZN18CPhoneUIController16DynInitMenuPaneLEiP12CEikMenuPane @ 198 NONAME - _ZN18CPhoneUIController18HandleSystemEventLERK8TWsEvent @ 199 NONAME - _ZN18CPhoneUIController19HandlePhoneStartupLEv @ 200 NONAME - _ZN18CPhoneUIController20HandleKeyLockEnabledEi @ 201 NONAME + _ZN18CPhoneStateStartup26HandlePEConstructionReadyLEi @ 186 NONAME + _ZN18CPhoneStateStartup4NewLEP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 187 NONAME + _ZN18CPhoneStateStartupC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 188 NONAME + _ZN18CPhoneStateStartupC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 189 NONAME + _ZN18CPhoneStateStartupD0Ev @ 190 NONAME + _ZN18CPhoneStateStartupD1Ev @ 191 NONAME + _ZN18CPhoneStateStartupD2Ev @ 192 NONAME + _ZN18CPhoneUIController11HandleErrorERK12TPEErrorInfo @ 193 NONAME + _ZN18CPhoneUIController13HandleMessageEii @ 194 NONAME + _ZN18CPhoneUIController14HandleCommandLEi @ 195 NONAME + _ZN18CPhoneUIController15DynInitMenuBarLEiP11CEikMenuBar @ 196 NONAME + _ZN18CPhoneUIController15HandleKeyEventLERK9TKeyEvent10TEventCode @ 197 NONAME + _ZN18CPhoneUIController15ProcessCommandLEi @ 198 NONAME + _ZN18CPhoneUIController16DynInitMenuPaneLEiP12CEikMenuPane @ 199 NONAME + _ZN18CPhoneUIController18HandleSystemEventLERK8TWsEvent @ 200 NONAME + _ZN18CPhoneUIController19HandlePhoneStartupLEv @ 201 NONAME _ZN18CPhoneUIController22HandleForegroundEventLEi @ 202 NONAME _ZN18CPhoneUIController24HandleEnvironmentChangeLEi @ 203 NONAME _ZN18CPhoneUIController26HandleIdleForegroundEventLEv @ 204 NONAME _ZN18CPhoneUIController26HandlePhoneFocusLostEventLEv @ 205 NONAME _ZN18CPhoneUIController27HandlePhoneForegroundEventLEv @ 206 NONAME - _ZN18CPhoneUIController4NewLEP23MPhoneViewCommandHandle @ 207 NONAME + _ZN18CPhoneUIController4NewLER20CPhoneViewController @ 207 NONAME _ZN18CPhoneUIControllerD0Ev @ 208 NONAME _ZN18CPhoneUIControllerD1Ev @ 209 NONAME _ZN18CPhoneUIControllerD2Ev @ 210 NONAME @@ -214,206 +214,206 @@ _ZN19CPhoneStateIncoming15HandleKeyEventLERK9TKeyEvent10TEventCode @ 213 NONAME _ZN19CPhoneStateIncoming16DynInitMenuPaneLEiP12CEikMenuPane @ 214 NONAME _ZN19CPhoneStateIncoming17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 215 NONAME - _ZN19CPhoneStateIncoming20HandleKeyLockEnabledEi @ 216 NONAME - _ZN19CPhoneStateIncoming23HandleAudioPlayStoppedLEv @ 217 NONAME - _ZN19CPhoneStateIncoming23HandleKeyPressDurationLE8TKeyCode25TTimeIntervalMicroSeconds @ 218 NONAME - _ZN19CPhoneStateIncoming25HandleNumberEntryClearedLEv @ 219 NONAME - _ZN19CPhoneStateIncoming25HandlePhoneEngineMessageLEii @ 220 NONAME - _ZN19CPhoneStateIncomingC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 221 NONAME - _ZN19CPhoneStateIncomingC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 222 NONAME - _ZN19CPhoneStateIncomingD0Ev @ 223 NONAME - _ZN19CPhoneStateIncomingD1Ev @ 224 NONAME - _ZN19CPhoneStateIncomingD2Ev @ 225 NONAME - _ZN20CPhoneReconnectQuery19ShowReconnectQueryLEi @ 226 NONAME - _ZN20CPhoneReconnectQuery9InstanceLEv @ 227 NONAME - _ZN20CPhoneStateCallSetup10ConstructLEv @ 228 NONAME - _ZN20CPhoneStateCallSetup10UpdateCbaLEi @ 229 NONAME - _ZN20CPhoneStateCallSetup12OpenMenuBarLEv @ 230 NONAME - _ZN20CPhoneStateCallSetup14HandleCommandLEi @ 231 NONAME - _ZN20CPhoneStateCallSetup15HandleKeyEventLERK9TKeyEvent10TEventCode @ 232 NONAME - _ZN20CPhoneStateCallSetup16UpdateInCallCbaLEv @ 233 NONAME - _ZN20CPhoneStateCallSetup17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 234 NONAME - _ZN20CPhoneStateCallSetup24HandleCreateNumberEntryLERK9TKeyEvent10TEventCode @ 235 NONAME - _ZN20CPhoneStateCallSetup25HandleNumberEntryClearedLEv @ 236 NONAME - _ZN20CPhoneStateCallSetup25HandlePhoneEngineMessageLEii @ 237 NONAME - _ZN20CPhoneStateCallSetupC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 238 NONAME - _ZN20CPhoneStateCallSetupC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 239 NONAME - _ZN20CPhoneStateCallSetupD0Ev @ 240 NONAME - _ZN20CPhoneStateCallSetupD1Ev @ 241 NONAME - _ZN20CPhoneStateCallSetupD2Ev @ 242 NONAME - _ZNK11CPhoneState11IsKeyLockOnEv @ 243 NONAME - _ZNK11CPhoneState12IsAutoLockOnEv @ 244 NONAME - _ZNK11CPhoneState14IsSwivelClosedEv @ 245 NONAME - _ZNK11CPhoneState17GetBlockedKeyListEv @ 246 NONAME - _ZNK11CPhoneState17IsMenuBarVisibleLEv @ 247 NONAME - _ZNK11CPhoneState18TopAppIsDisplayedLEv @ 248 NONAME - _ZNK11CPhoneState20IsDTMFEditorVisibleLEv @ 249 NONAME - _ZNK11CPhoneState23NeedToSendToBackgroundLEv @ 250 NONAME - _ZNK11CPhoneState25IsOnScreenDialerSupportedEv @ 251 NONAME - _ZNK11CPhoneState26IsCustomizedDialerVisibleLEv @ 252 NONAME - _ZNK11CPhoneState8SimStateEv @ 253 NONAME - _ZNK15CPhoneStateIdle17IsSpeedDialNumberERK7TDesC16 @ 254 NONAME - _ZTI11CPhoneState @ 255 NONAME - _ZTI15CPhoneStateIdle @ 256 NONAME - _ZTI17CPhoneStateHandle @ 257 NONAME - _ZTI17CPhoneStateInCall @ 258 NONAME - _ZTI18CPhoneStateMachine @ 259 NONAME - _ZTI18CPhoneStateStartup @ 260 NONAME - _ZTI18CPhoneUIController @ 261 NONAME - _ZTI19CPhoneStateIncoming @ 262 NONAME - _ZTI20CPhoneReconnectQuery @ 263 NONAME - _ZTI20CPhoneStateCallSetup @ 264 NONAME - _ZTI23CPhoneDtmfWaitCharTimer @ 265 NONAME - _ZTI23CPhoneKeyEventForwarder @ 266 NONAME - _ZTI24CPhoneSystemEventHandler @ 267 NONAME - _ZTI26CPhoneRemoteControlHandler @ 268 NONAME - _ZTI27CPhoneBtaaDisconnectHandler @ 269 NONAME - _ZTV11CPhoneState @ 270 NONAME - _ZTV15CPhoneStateIdle @ 271 NONAME - _ZTV17CPhoneStateHandle @ 272 NONAME - _ZTV17CPhoneStateInCall @ 273 NONAME - _ZTV18CPhoneStateMachine @ 274 NONAME - _ZTV18CPhoneStateStartup @ 275 NONAME - _ZTV18CPhoneUIController @ 276 NONAME - _ZTV19CPhoneStateIncoming @ 277 NONAME - _ZTV20CPhoneReconnectQuery @ 278 NONAME - _ZTV20CPhoneStateCallSetup @ 279 NONAME - _ZTV23CPhoneDtmfWaitCharTimer @ 280 NONAME - _ZTV23CPhoneKeyEventForwarder @ 281 NONAME - _ZTV24CPhoneSystemEventHandler @ 282 NONAME - _ZTV26CPhoneRemoteControlHandler @ 283 NONAME - _ZTV27CPhoneBtaaDisconnectHandler @ 284 NONAME - _ZThn12_N11CPhoneState15DynInitMenuBarLEiP11CEikMenuBar @ 285 NONAME - _ZThn12_N11CPhoneState16DynInitMenuPaneLEiP12CEikMenuPane @ 286 NONAME - _ZThn12_N11CPhoneState18HandleSystemEventLERK8TWsEvent @ 287 NONAME - _ZThn12_N11CPhoneState19HandleCenRepChangeLERK4TUidj @ 288 NONAME - _ZThn12_N11CPhoneState19HandlePhoneStartupLEv @ 289 NONAME - _ZThn12_N11CPhoneState20HandleKeyLockEnabledEi @ 290 NONAME - _ZThn12_N11CPhoneState22HandleForegroundEventLEi @ 291 NONAME - _ZThn12_N11CPhoneState22HandlePropertyChangedLERK4TUidji @ 292 NONAME - _ZThn12_N11CPhoneState24HandleEnvironmentChangeLEi @ 293 NONAME - _ZThn12_N11CPhoneState26HandleIdleForegroundEventLEv @ 294 NONAME - _ZThn12_N11CPhoneState26HandlePhoneFocusLostEventLEv @ 295 NONAME - _ZThn12_N11CPhoneState27HandlePhoneForegroundEventLEv @ 296 NONAME - _ZThn12_N11CPhoneStateD0Ev @ 297 NONAME - _ZThn12_N11CPhoneStateD1Ev @ 298 NONAME - _ZThn12_N15CPhoneStateIdle26HandleIdleForegroundEventLEv @ 299 NONAME - _ZThn12_N15CPhoneStateIdle26HandlePhoneFocusLostEventLEv @ 300 NONAME - _ZThn12_N15CPhoneStateIdle27HandlePhoneForegroundEventLEv @ 301 NONAME - _ZThn12_N15CPhoneStateIdleD0Ev @ 302 NONAME - _ZThn12_N15CPhoneStateIdleD1Ev @ 303 NONAME - _ZThn12_N17CPhoneStateInCallD0Ev @ 304 NONAME - _ZThn12_N17CPhoneStateInCallD1Ev @ 305 NONAME - _ZThn12_N18CPhoneStateStartup19HandlePhoneStartupLEv @ 306 NONAME - _ZThn12_N18CPhoneStateStartup26HandleIdleForegroundEventLEv @ 307 NONAME - _ZThn12_N18CPhoneStateStartupD0Ev @ 308 NONAME - _ZThn12_N18CPhoneStateStartupD1Ev @ 309 NONAME - _ZThn12_N18CPhoneUIController15DynInitMenuBarLEiP11CEikMenuBar @ 310 NONAME - _ZThn12_N18CPhoneUIController16DynInitMenuPaneLEiP12CEikMenuPane @ 311 NONAME - _ZThn12_N18CPhoneUIController18HandleSystemEventLERK8TWsEvent @ 312 NONAME - _ZThn12_N18CPhoneUIController19HandlePhoneStartupLEv @ 313 NONAME - _ZThn12_N18CPhoneUIController20HandleKeyLockEnabledEi @ 314 NONAME - _ZThn12_N18CPhoneUIController22HandleForegroundEventLEi @ 315 NONAME - _ZThn12_N18CPhoneUIController24HandleEnvironmentChangeLEi @ 316 NONAME - _ZThn12_N18CPhoneUIController26HandleIdleForegroundEventLEv @ 317 NONAME - _ZThn12_N18CPhoneUIController26HandlePhoneFocusLostEventLEv @ 318 NONAME - _ZThn12_N18CPhoneUIController27HandlePhoneForegroundEventLEv @ 319 NONAME - _ZThn12_N18CPhoneUIControllerD0Ev @ 320 NONAME - _ZThn12_N18CPhoneUIControllerD1Ev @ 321 NONAME - _ZThn12_N19CPhoneStateIncoming16DynInitMenuPaneLEiP12CEikMenuPane @ 322 NONAME - _ZThn12_N19CPhoneStateIncoming20HandleKeyLockEnabledEi @ 323 NONAME - _ZThn12_N19CPhoneStateIncomingD0Ev @ 324 NONAME - _ZThn12_N19CPhoneStateIncomingD1Ev @ 325 NONAME - _ZThn12_N20CPhoneStateCallSetupD0Ev @ 326 NONAME - _ZThn12_N20CPhoneStateCallSetupD1Ev @ 327 NONAME - _ZThn16_N11CPhoneState14HandleCommandLEi @ 328 NONAME - _ZThn16_N11CPhoneState15ProcessCommandLEi @ 329 NONAME - _ZThn16_N11CPhoneStateD0Ev @ 330 NONAME - _ZThn16_N11CPhoneStateD1Ev @ 331 NONAME - _ZThn16_N15CPhoneStateIdle14HandleCommandLEi @ 332 NONAME - _ZThn16_N15CPhoneStateIdle15ProcessCommandLEi @ 333 NONAME - _ZThn16_N15CPhoneStateIdleD0Ev @ 334 NONAME - _ZThn16_N15CPhoneStateIdleD1Ev @ 335 NONAME - _ZThn16_N17CPhoneStateInCall14HandleCommandLEi @ 336 NONAME - _ZThn16_N17CPhoneStateInCallD0Ev @ 337 NONAME - _ZThn16_N17CPhoneStateInCallD1Ev @ 338 NONAME - _ZThn16_N18CPhoneStateStartupD0Ev @ 339 NONAME - _ZThn16_N18CPhoneStateStartupD1Ev @ 340 NONAME - _ZThn16_N18CPhoneUIController14HandleCommandLEi @ 341 NONAME - _ZThn16_N18CPhoneUIController15ProcessCommandLEi @ 342 NONAME - _ZThn16_N18CPhoneUIControllerD0Ev @ 343 NONAME - _ZThn16_N18CPhoneUIControllerD1Ev @ 344 NONAME - _ZThn16_N19CPhoneStateIncoming14HandleCommandLEi @ 345 NONAME - _ZThn16_N19CPhoneStateIncomingD0Ev @ 346 NONAME - _ZThn16_N19CPhoneStateIncomingD1Ev @ 347 NONAME - _ZThn16_N20CPhoneStateCallSetup14HandleCommandLEi @ 348 NONAME - _ZThn16_N20CPhoneStateCallSetupD0Ev @ 349 NONAME - _ZThn16_N20CPhoneStateCallSetupD1Ev @ 350 NONAME - _ZThn20_N11CPhoneState20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 351 NONAME - _ZThn20_N11CPhoneStateD0Ev @ 352 NONAME - _ZThn20_N11CPhoneStateD1Ev @ 353 NONAME - _ZThn20_N15CPhoneStateIdle20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 354 NONAME - _ZThn20_N15CPhoneStateIdleD0Ev @ 355 NONAME - _ZThn20_N15CPhoneStateIdleD1Ev @ 356 NONAME - _ZThn20_N17CPhoneStateInCallD0Ev @ 357 NONAME - _ZThn20_N17CPhoneStateInCallD1Ev @ 358 NONAME - _ZThn20_N18CPhoneStateStartupD0Ev @ 359 NONAME - _ZThn20_N18CPhoneStateStartupD1Ev @ 360 NONAME - _ZThn20_N19CPhoneStateIncomingD0Ev @ 361 NONAME - _ZThn20_N19CPhoneStateIncomingD1Ev @ 362 NONAME - _ZThn20_N20CPhoneStateCallSetupD0Ev @ 363 NONAME - _ZThn20_N20CPhoneStateCallSetupD1Ev @ 364 NONAME - _ZThn24_N11CPhoneState19SetDivertIndicationEi @ 365 NONAME - _ZThn24_N11CPhoneStateD0Ev @ 366 NONAME - _ZThn24_N11CPhoneStateD1Ev @ 367 NONAME - _ZThn24_N15CPhoneStateIdleD0Ev @ 368 NONAME - _ZThn24_N15CPhoneStateIdleD1Ev @ 369 NONAME - _ZThn24_N17CPhoneStateInCallD0Ev @ 370 NONAME - _ZThn24_N17CPhoneStateInCallD1Ev @ 371 NONAME - _ZThn24_N18CPhoneStateStartupD0Ev @ 372 NONAME - _ZThn24_N18CPhoneStateStartupD1Ev @ 373 NONAME - _ZThn24_N19CPhoneStateIncomingD0Ev @ 374 NONAME - _ZThn24_N19CPhoneStateIncomingD1Ev @ 375 NONAME - _ZThn24_N20CPhoneStateCallSetupD0Ev @ 376 NONAME - _ZThn24_N20CPhoneStateCallSetupD1Ev @ 377 NONAME - _ZThn28_NK11CPhoneState17GetBlockedKeyListEv @ 378 NONAME - _ZThn32_N11CPhoneState25HandleNumberEntryClearedLEv @ 379 NONAME - _ZThn32_N15CPhoneStateIdle25HandleNumberEntryClearedLEv @ 380 NONAME - _ZThn32_N17CPhoneStateInCall25HandleNumberEntryClearedLEv @ 381 NONAME - _ZThn32_N19CPhoneStateIncoming25HandleNumberEntryClearedLEv @ 382 NONAME - _ZThn32_N20CPhoneStateCallSetup25HandleNumberEntryClearedLEv @ 383 NONAME - _ZThn36_N11CPhoneState23HandleNumberEntryEditedEv @ 384 NONAME - _ZThn36_N11CPhoneStateD0Ev @ 385 NONAME - _ZThn36_N11CPhoneStateD1Ev @ 386 NONAME - _ZThn36_N15CPhoneStateIdleD0Ev @ 387 NONAME - _ZThn36_N15CPhoneStateIdleD1Ev @ 388 NONAME - _ZThn36_N17CPhoneStateInCallD0Ev @ 389 NONAME - _ZThn36_N17CPhoneStateInCallD1Ev @ 390 NONAME - _ZThn36_N18CPhoneStateStartupD0Ev @ 391 NONAME - _ZThn36_N18CPhoneStateStartupD1Ev @ 392 NONAME - _ZThn36_N19CPhoneStateIncomingD0Ev @ 393 NONAME - _ZThn36_N19CPhoneStateIncomingD1Ev @ 394 NONAME - _ZThn36_N20CPhoneStateCallSetupD0Ev @ 395 NONAME - _ZThn36_N20CPhoneStateCallSetupD1Ev @ 396 NONAME - _ZThn40_NK11CPhoneState11IsKeyLockOnEv @ 397 NONAME - _ZThn40_NK11CPhoneState12IsAutoLockOnEv @ 398 NONAME - _ZThn4_N11CPhoneState12HandleErrorLERK12TPEErrorInfo @ 399 NONAME - _ZThn4_N11CPhoneState25HandlePhoneEngineMessageLEii @ 400 NONAME - _ZThn4_N11CPhoneStateD0Ev @ 401 NONAME - _ZThn4_N11CPhoneStateD1Ev @ 402 NONAME - _ZThn4_N15CPhoneStateIdle25HandlePhoneEngineMessageLEii @ 403 NONAME - _ZThn4_N15CPhoneStateIdleD0Ev @ 404 NONAME - _ZThn4_N15CPhoneStateIdleD1Ev @ 405 NONAME - _ZThn4_N17CPhoneStateInCall25HandlePhoneEngineMessageLEii @ 406 NONAME - _ZThn4_N17CPhoneStateInCallD0Ev @ 407 NONAME - _ZThn4_N17CPhoneStateInCallD1Ev @ 408 NONAME - _ZThn4_N18CPhoneStateMachine11ChangeStateEi @ 409 NONAME - _ZThn4_N18CPhoneStateMachine11PhoneEngineEv @ 410 NONAME - _ZThn4_N18CPhoneStateMachine12PhoneStorageEv @ 411 NONAME - _ZThn4_N18CPhoneStateMachine14SetPhoneEngineEP13MPEPhoneModel @ 412 NONAME - _ZThn4_N18CPhoneStateMachine15PhoneEngineInfoEv @ 413 NONAME - _ZThn4_N18CPhoneStateMachine18CreatePhoneEngineLER14MEngineMonitor @ 414 NONAME - _ZThn4_N18CPhoneStateMachine22SendPhoneEngineMessageEi @ 415 NONAME + _ZN19CPhoneStateIncoming23HandleAudioPlayStoppedLEv @ 216 NONAME + _ZN19CPhoneStateIncoming23HandleKeyPressDurationLE8TKeyCode25TTimeIntervalMicroSeconds @ 217 NONAME + _ZN19CPhoneStateIncoming25HandleNumberEntryClearedLEv @ 218 NONAME + _ZN19CPhoneStateIncoming25HandlePhoneEngineMessageLEii @ 219 NONAME + _ZN19CPhoneStateIncomingC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 220 NONAME + _ZN19CPhoneStateIncomingC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 221 NONAME + _ZN19CPhoneStateIncomingD0Ev @ 222 NONAME + _ZN19CPhoneStateIncomingD1Ev @ 223 NONAME + _ZN19CPhoneStateIncomingD2Ev @ 224 NONAME + _ZN20CPhoneReconnectQuery19ShowReconnectQueryLEi @ 225 NONAME + _ZN20CPhoneReconnectQuery9InstanceLEv @ 226 NONAME + _ZN20CPhoneStateCallSetup10ConstructLEv @ 227 NONAME + _ZN20CPhoneStateCallSetup10UpdateCbaLEi @ 228 NONAME + _ZN20CPhoneStateCallSetup12OpenMenuBarLEv @ 229 NONAME + _ZN20CPhoneStateCallSetup14HandleCommandLEi @ 230 NONAME + _ZN20CPhoneStateCallSetup15HandleKeyEventLERK9TKeyEvent10TEventCode @ 231 NONAME + _ZN20CPhoneStateCallSetup16UpdateInCallCbaLEv @ 232 NONAME + _ZN20CPhoneStateCallSetup17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 233 NONAME + _ZN20CPhoneStateCallSetup24HandleCreateNumberEntryLERK9TKeyEvent10TEventCode @ 234 NONAME + _ZN20CPhoneStateCallSetup25HandleNumberEntryClearedLEv @ 235 NONAME + _ZN20CPhoneStateCallSetup25HandlePhoneEngineMessageLEii @ 236 NONAME + _ZN20CPhoneStateCallSetupC1EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 237 NONAME + _ZN20CPhoneStateCallSetupC2EP18MPhoneStateMachineP23MPhoneViewCommandHandleP19MPhoneCustomization @ 238 NONAME + _ZN20CPhoneStateCallSetupD0Ev @ 239 NONAME + _ZN20CPhoneStateCallSetupD1Ev @ 240 NONAME + _ZN20CPhoneStateCallSetupD2Ev @ 241 NONAME + _ZNK11CPhoneState11IsKeyLockOnEv @ 242 NONAME + _ZNK11CPhoneState12IsAutoLockOnEv @ 243 NONAME + _ZNK11CPhoneState14IsSwivelClosedEv @ 244 NONAME + _ZNK11CPhoneState17IsMenuBarVisibleLEv @ 245 NONAME + _ZNK11CPhoneState18TopAppIsDisplayedLEv @ 246 NONAME + _ZNK11CPhoneState20IsDTMFEditorVisibleLEv @ 247 NONAME + _ZNK11CPhoneState25IsOnScreenDialerSupportedEv @ 248 NONAME + _ZNK11CPhoneState26IsCustomizedDialerVisibleLEv @ 249 NONAME + _ZNK11CPhoneState26IsDialingExtensionInFocusLEv @ 250 NONAME + _ZNK11CPhoneState28NeedToReturnToForegroundAppLEv @ 251 NONAME + _ZNK11CPhoneState8SimStateEv @ 252 NONAME + _ZNK15CPhoneStateIdle17IsSpeedDialNumberERK7TDesC16 @ 253 NONAME + _ZTI11CPhoneState @ 254 NONAME + _ZTI15CPhoneStateIdle @ 255 NONAME + _ZTI17CPhoneStateHandle @ 256 NONAME + _ZTI17CPhoneStateInCall @ 257 NONAME + _ZTI18CPhoneStateMachine @ 258 NONAME + _ZTI18CPhoneStateStartup @ 259 NONAME + _ZTI18CPhoneUIController @ 260 NONAME + _ZTI19CPhoneStateIncoming @ 261 NONAME + _ZTI20CPhoneReconnectQuery @ 262 NONAME + _ZTI20CPhoneStateCallSetup @ 263 NONAME + _ZTI23CPhoneDtmfWaitCharTimer @ 264 NONAME + _ZTI23CPhoneKeyEventForwarder @ 265 NONAME + _ZTI24CPhoneSystemEventHandler @ 266 NONAME + _ZTI26CPhoneRemoteControlHandler @ 267 NONAME + _ZTI27CPhoneBtaaDisconnectHandler @ 268 NONAME + _ZTV11CPhoneState @ 269 NONAME + _ZTV15CPhoneStateIdle @ 270 NONAME + _ZTV17CPhoneStateHandle @ 271 NONAME + _ZTV17CPhoneStateInCall @ 272 NONAME + _ZTV18CPhoneStateMachine @ 273 NONAME + _ZTV18CPhoneStateStartup @ 274 NONAME + _ZTV18CPhoneUIController @ 275 NONAME + _ZTV19CPhoneStateIncoming @ 276 NONAME + _ZTV20CPhoneReconnectQuery @ 277 NONAME + _ZTV20CPhoneStateCallSetup @ 278 NONAME + _ZTV23CPhoneDtmfWaitCharTimer @ 279 NONAME + _ZTV23CPhoneKeyEventForwarder @ 280 NONAME + _ZTV24CPhoneSystemEventHandler @ 281 NONAME + _ZTV26CPhoneRemoteControlHandler @ 282 NONAME + _ZTV27CPhoneBtaaDisconnectHandler @ 283 NONAME + _ZThn12_N11CPhoneState15DynInitMenuBarLEiP11CEikMenuBar @ 284 NONAME + _ZThn12_N11CPhoneState16DynInitMenuPaneLEiP12CEikMenuPane @ 285 NONAME + _ZThn12_N11CPhoneState18HandleSystemEventLERK8TWsEvent @ 286 NONAME + _ZThn12_N11CPhoneState19HandleCenRepChangeLERK4TUidj @ 287 NONAME + _ZThn12_N11CPhoneState19HandlePhoneStartupLEv @ 288 NONAME + _ZThn12_N11CPhoneState22HandleForegroundEventLEi @ 289 NONAME + _ZThn12_N11CPhoneState22HandlePropertyChangedLERK4TUidji @ 290 NONAME + _ZThn12_N11CPhoneState24HandleEnvironmentChangeLEi @ 291 NONAME + _ZThn12_N11CPhoneState26HandleIdleForegroundEventLEv @ 292 NONAME + _ZThn12_N11CPhoneState26HandlePhoneFocusLostEventLEv @ 293 NONAME + _ZThn12_N11CPhoneState27HandlePhoneForegroundEventLEv @ 294 NONAME + _ZThn12_N11CPhoneStateD0Ev @ 295 NONAME + _ZThn12_N11CPhoneStateD1Ev @ 296 NONAME + _ZThn12_N15CPhoneStateIdle26HandleIdleForegroundEventLEv @ 297 NONAME + _ZThn12_N15CPhoneStateIdle26HandlePhoneFocusLostEventLEv @ 298 NONAME + _ZThn12_N15CPhoneStateIdle27HandlePhoneForegroundEventLEv @ 299 NONAME + _ZThn12_N15CPhoneStateIdleD0Ev @ 300 NONAME + _ZThn12_N15CPhoneStateIdleD1Ev @ 301 NONAME + _ZThn12_N17CPhoneStateInCall22HandlePropertyChangedLERK4TUidji @ 302 NONAME + _ZThn12_N17CPhoneStateInCallD0Ev @ 303 NONAME + _ZThn12_N17CPhoneStateInCallD1Ev @ 304 NONAME + _ZThn12_N18CPhoneStateStartup19HandlePhoneStartupLEv @ 305 NONAME + _ZThn12_N18CPhoneStateStartup26HandleIdleForegroundEventLEv @ 306 NONAME + _ZThn12_N18CPhoneStateStartupD0Ev @ 307 NONAME + _ZThn12_N18CPhoneStateStartupD1Ev @ 308 NONAME + _ZThn12_N18CPhoneUIController15DynInitMenuBarLEiP11CEikMenuBar @ 309 NONAME + _ZThn12_N18CPhoneUIController16DynInitMenuPaneLEiP12CEikMenuPane @ 310 NONAME + _ZThn12_N18CPhoneUIController18HandleSystemEventLERK8TWsEvent @ 311 NONAME + _ZThn12_N18CPhoneUIController19HandlePhoneStartupLEv @ 312 NONAME + _ZThn12_N18CPhoneUIController22HandleForegroundEventLEi @ 313 NONAME + _ZThn12_N18CPhoneUIController24HandleEnvironmentChangeLEi @ 314 NONAME + _ZThn12_N18CPhoneUIController26HandleIdleForegroundEventLEv @ 315 NONAME + _ZThn12_N18CPhoneUIController26HandlePhoneFocusLostEventLEv @ 316 NONAME + _ZThn12_N18CPhoneUIController27HandlePhoneForegroundEventLEv @ 317 NONAME + _ZThn12_N18CPhoneUIControllerD0Ev @ 318 NONAME + _ZThn12_N18CPhoneUIControllerD1Ev @ 319 NONAME + _ZThn12_N19CPhoneStateIncoming16DynInitMenuPaneLEiP12CEikMenuPane @ 320 NONAME + _ZThn12_N19CPhoneStateIncomingD0Ev @ 321 NONAME + _ZThn12_N19CPhoneStateIncomingD1Ev @ 322 NONAME + _ZThn12_N20CPhoneStateCallSetupD0Ev @ 323 NONAME + _ZThn12_N20CPhoneStateCallSetupD1Ev @ 324 NONAME + _ZThn16_N11CPhoneState14HandleCommandLEi @ 325 NONAME + _ZThn16_N11CPhoneState15ProcessCommandLEi @ 326 NONAME + _ZThn16_N11CPhoneStateD0Ev @ 327 NONAME + _ZThn16_N11CPhoneStateD1Ev @ 328 NONAME + _ZThn16_N15CPhoneStateIdle14HandleCommandLEi @ 329 NONAME + _ZThn16_N15CPhoneStateIdle15ProcessCommandLEi @ 330 NONAME + _ZThn16_N15CPhoneStateIdleD0Ev @ 331 NONAME + _ZThn16_N15CPhoneStateIdleD1Ev @ 332 NONAME + _ZThn16_N17CPhoneStateInCall14HandleCommandLEi @ 333 NONAME + _ZThn16_N17CPhoneStateInCallD0Ev @ 334 NONAME + _ZThn16_N17CPhoneStateInCallD1Ev @ 335 NONAME + _ZThn16_N18CPhoneStateStartupD0Ev @ 336 NONAME + _ZThn16_N18CPhoneStateStartupD1Ev @ 337 NONAME + _ZThn16_N18CPhoneUIController14HandleCommandLEi @ 338 NONAME + _ZThn16_N18CPhoneUIController15ProcessCommandLEi @ 339 NONAME + _ZThn16_N18CPhoneUIControllerD0Ev @ 340 NONAME + _ZThn16_N18CPhoneUIControllerD1Ev @ 341 NONAME + _ZThn16_N19CPhoneStateIncoming14HandleCommandLEi @ 342 NONAME + _ZThn16_N19CPhoneStateIncomingD0Ev @ 343 NONAME + _ZThn16_N19CPhoneStateIncomingD1Ev @ 344 NONAME + _ZThn16_N20CPhoneStateCallSetup14HandleCommandLEi @ 345 NONAME + _ZThn16_N20CPhoneStateCallSetupD0Ev @ 346 NONAME + _ZThn16_N20CPhoneStateCallSetupD1Ev @ 347 NONAME + _ZThn20_N11CPhoneState20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 348 NONAME + _ZThn20_N11CPhoneStateD0Ev @ 349 NONAME + _ZThn20_N11CPhoneStateD1Ev @ 350 NONAME + _ZThn20_N15CPhoneStateIdle20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 351 NONAME + _ZThn20_N15CPhoneStateIdleD0Ev @ 352 NONAME + _ZThn20_N15CPhoneStateIdleD1Ev @ 353 NONAME + _ZThn20_N17CPhoneStateInCallD0Ev @ 354 NONAME + _ZThn20_N17CPhoneStateInCallD1Ev @ 355 NONAME + _ZThn20_N18CPhoneStateStartupD0Ev @ 356 NONAME + _ZThn20_N18CPhoneStateStartupD1Ev @ 357 NONAME + _ZThn20_N19CPhoneStateIncomingD0Ev @ 358 NONAME + _ZThn20_N19CPhoneStateIncomingD1Ev @ 359 NONAME + _ZThn20_N20CPhoneStateCallSetupD0Ev @ 360 NONAME + _ZThn20_N20CPhoneStateCallSetupD1Ev @ 361 NONAME + _ZThn24_N11CPhoneState19SetDivertIndicationEi @ 362 NONAME + _ZThn24_N11CPhoneStateD0Ev @ 363 NONAME + _ZThn24_N11CPhoneStateD1Ev @ 364 NONAME + _ZThn24_N15CPhoneStateIdleD0Ev @ 365 NONAME + _ZThn24_N15CPhoneStateIdleD1Ev @ 366 NONAME + _ZThn24_N17CPhoneStateInCallD0Ev @ 367 NONAME + _ZThn24_N17CPhoneStateInCallD1Ev @ 368 NONAME + _ZThn24_N18CPhoneStateStartupD0Ev @ 369 NONAME + _ZThn24_N18CPhoneStateStartupD1Ev @ 370 NONAME + _ZThn24_N19CPhoneStateIncomingD0Ev @ 371 NONAME + _ZThn24_N19CPhoneStateIncomingD1Ev @ 372 NONAME + _ZThn24_N20CPhoneStateCallSetupD0Ev @ 373 NONAME + _ZThn24_N20CPhoneStateCallSetupD1Ev @ 374 NONAME + _ZThn28_N11CPhoneState25HandleNumberEntryClearedLEv @ 375 NONAME + _ZThn28_N15CPhoneStateIdle25HandleNumberEntryClearedLEv @ 376 NONAME + _ZThn28_N17CPhoneStateInCall25HandleNumberEntryClearedLEv @ 377 NONAME + _ZThn28_N19CPhoneStateIncoming25HandleNumberEntryClearedLEv @ 378 NONAME + _ZThn28_N20CPhoneStateCallSetup25HandleNumberEntryClearedLEv @ 379 NONAME + _ZThn32_N11CPhoneState23HandleNumberEntryEditedEv @ 380 NONAME + _ZThn32_N11CPhoneStateD0Ev @ 381 NONAME + _ZThn32_N11CPhoneStateD1Ev @ 382 NONAME + _ZThn32_N15CPhoneStateIdleD0Ev @ 383 NONAME + _ZThn32_N15CPhoneStateIdleD1Ev @ 384 NONAME + _ZThn32_N17CPhoneStateInCallD0Ev @ 385 NONAME + _ZThn32_N17CPhoneStateInCallD1Ev @ 386 NONAME + _ZThn32_N18CPhoneStateStartupD0Ev @ 387 NONAME + _ZThn32_N18CPhoneStateStartupD1Ev @ 388 NONAME + _ZThn32_N19CPhoneStateIncomingD0Ev @ 389 NONAME + _ZThn32_N19CPhoneStateIncomingD1Ev @ 390 NONAME + _ZThn32_N20CPhoneStateCallSetupD0Ev @ 391 NONAME + _ZThn32_N20CPhoneStateCallSetupD1Ev @ 392 NONAME + _ZThn36_NK11CPhoneState11IsKeyLockOnEv @ 393 NONAME + _ZThn36_NK11CPhoneState12IsAutoLockOnEv @ 394 NONAME + _ZThn4_N11CPhoneState12HandleErrorLERK12TPEErrorInfo @ 395 NONAME + _ZThn4_N11CPhoneState25HandlePhoneEngineMessageLEii @ 396 NONAME + _ZThn4_N11CPhoneStateD0Ev @ 397 NONAME + _ZThn4_N11CPhoneStateD1Ev @ 398 NONAME + _ZThn4_N15CPhoneStateIdle25HandlePhoneEngineMessageLEii @ 399 NONAME + _ZThn4_N15CPhoneStateIdleD0Ev @ 400 NONAME + _ZThn4_N15CPhoneStateIdleD1Ev @ 401 NONAME + _ZThn4_N17CPhoneStateInCall25HandlePhoneEngineMessageLEii @ 402 NONAME + _ZThn4_N17CPhoneStateInCallD0Ev @ 403 NONAME + _ZThn4_N17CPhoneStateInCallD1Ev @ 404 NONAME + _ZThn4_N18CPhoneStateMachine11ChangeStateEi @ 405 NONAME + _ZThn4_N18CPhoneStateMachine11PhoneEngineEv @ 406 NONAME + _ZThn4_N18CPhoneStateMachine12SecurityModeEv @ 407 NONAME + _ZThn4_N18CPhoneStateMachine14SetPhoneEngineEP13MPEPhoneModel @ 408 NONAME + _ZThn4_N18CPhoneStateMachine15PhoneEngineInfoEv @ 409 NONAME + _ZThn4_N18CPhoneStateMachine18CreatePhoneEngineLER14MEngineMonitor @ 410 NONAME + _ZThn4_N18CPhoneStateMachine22HandlePropertyChangedLERK4TUidji @ 411 NONAME + _ZThn4_N18CPhoneStateMachine22SendPhoneEngineMessageEi @ 412 NONAME + _ZThn4_N18CPhoneStateMachine23SetSecurityModeObserverEP26MPhoneSecurityModeObserver @ 413 NONAME + _ZThn4_N18CPhoneStateMachine25HandlePhoneEngineMessageLEii @ 414 NONAME + _ZThn4_N18CPhoneStateMachine25SetSecurityMessageHandlerEP28MPhoneSecurityMessageHandler @ 415 NONAME _ZThn4_N18CPhoneStateMachine5StateEv @ 416 NONAME _ZThn4_N18CPhoneStateMachine9SetCallIdEi @ 417 NONAME _ZThn4_N18CPhoneStateMachineD0Ev @ 418 NONAME @@ -466,6 +466,4 @@ _ZThn8_N20CPhoneStateCallSetupD0Ev @ 465 NONAME _ZThn8_N20CPhoneStateCallSetupD1Ev @ 466 NONAME _ZThn8_NK11CPhoneState17IsMenuBarVisibleLEv @ 467 NONAME - _ZN11CPhoneState17SetToolbarDimmingEi @ 468 NONAME - _ZN11CPhoneState34SetToolbarButtonLoudspeakerEnabledEv @ 469 NONAME diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/group/phoneuicontrol.mmp --- a/phoneapp/phoneuicontrol/group/phoneuicontrol.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/group/phoneuicontrol.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -52,7 +52,8 @@ SOURCE tphonecallheaderparam.cpp SOURCE cphonecallheadermanager.cpp SOURCE cphonenumberentrymanager.cpp -SOURCE cphonecbamanager.cpp +SOURCE cphonecbamanager.cpp +SOURCE cphonesecuritymodeobserver.cpp /* Languages */ LANG SC diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphoneaccessorybthandler.h --- a/phoneapp/phoneuicontrol/inc/cphoneaccessorybthandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphoneaccessorybthandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -22,9 +22,9 @@ // INCLUDES #include #include -#include -#include -#include +#include "mphoneneclearedhandler.h" +#include "mphonestatemachine.h" +#include "mphoneviewcommandhandle.h" // CLASS DECLARATION diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonecbamanager.h --- a/phoneapp/phoneuicontrol/inc/cphonecbamanager.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonecbamanager.h Fri Apr 23 14:59:43 2010 +0100 @@ -61,6 +61,9 @@ /** * Set CBA + * If the given CBA resource ID equals EPhoneEasyDialingCba, then get the actual resource + * ID from the Dialer Extension View by executing command EPhoneViewGetEasyDialingCbaId + * via the Phone View Command Handle. */ IMPORT_C void SetCbaL( TInt aResource ); @@ -101,6 +104,12 @@ */ TInt GetIncomingCallSilenceCBA( const TBool aSoftRejectActivated ); + /** + * Get cba resource when number entry is visible + * @return Resource id of CBA + */ + TInt GetNumberEntryCbaIdL(); + private: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonekeyeventforwarder.h --- a/phoneapp/phoneuicontrol/inc/cphonekeyeventforwarder.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonekeyeventforwarder.h Fri Apr 23 14:59:43 2010 +0100 @@ -28,6 +28,8 @@ class MPhoneKeyEventHandler; class MPhoneViewCommandHandle; class CPhoneTimer; +class CPhoneQwertyHandler; +class MPhoneQwertyModeObserver; // CLASS DECLARATION @@ -194,6 +196,14 @@ * @ return ETrue if alpha mode, EFalse otherwise. */ TBool IsKeyBlocked( const TKeyEvent& aKeyEvent ) const; + + /** + * Handles dialer key event. This includes handling multitapping of *-key. + * If multitap happens, function creates back space event + * to delete previous character, and replaces it with + * the next one in the cyclig character list *+pw. + */ + void HandleTouchDialerKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); private: // Data @@ -228,6 +238,27 @@ * Zeroed in HandleEventKeyUpL. */ TInt iScanCode; + + /* + * Has information of used qwerty keyboard. + * Own. + */ + CPhoneQwertyHandler* iQwertyHandler; + + /* + * Time of the previous key press. Used for multitap behaviour. + */ + TTime iPreviousKeyPressTime; + + /* + * Keycode of the previous keypress. Used for multitap behaviour. + */ + TInt iPreviousScanCode; + + /* + * Points to next character in multitap character list. + */ + TInt iMultitapIndex; }; #endif // CPHONEKEYEVENTFORWARDER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonesecuritymodeobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuicontrol/inc/cphonesecuritymodeobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,207 @@ +/* +* Copyright (c) 2005-2010 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: +* A dynamic state class for security mode. +* +*/ + +#ifndef CPHONESECURITYMODEOBSERVER_H +#define CPHONESECURITYMODEOBSERVER_H + +#include "mphonesecuritymodeobserver.h" +#include "mphonesecuritymessagehandler.h" +#include "mphonesecuritymodechangeobserver.h" +#include +#include +#include +#include +#include + +// Forward Declarations +class MPEEngineInfo; + +/** + * Dynamic state class for security mode. + * + */ +NONSHARABLE_CLASS( CPhoneSecurityModeObserver ) : public CBase, + public MPhoneSecurityModeObserver, + public MPhoneSecurityMessageHandler + { +public: + + /** + * Default static two-phased constructor. + * + * @return Pointer to new instance. + */ + static CPhoneSecurityModeObserver* NewL(); + + /** + * Default static two-phased constructor. + * + * @return Pointer to new instance. + */ + static CPhoneSecurityModeObserver* NewLC(); + + /** + * Destructor. + */ + ~CPhoneSecurityModeObserver(); + + /** + * Sets pointer to phone engine info interface. + * + * @param aEngineInfo Pointer to engine info interface. + */ + void SetPhoneEngineInfo( MPEEngineInfo* aEngineInfo ); + + // From MPhoneSecurityModeState + + /** + * Register state observer. + * + * @param aObserver Reference to state observer instance. + */ + IMPORT_C void RegisterStateObserver( MPhoneSecurityModeChangeObserver& aObserver ); + + /** + * Remove state observer + * + * @param aObserver Reference to state observer instance. + */ + IMPORT_C void RemoveStateObserver( MPhoneSecurityModeChangeObserver& aObserver ); + + /** + * Checks if autolock is enabled. + * + * @return ETrue if enabled. EFalse otherwise. + */ + IMPORT_C TBool IsAutolockEnabled(); + + /** + * Checks if security mode is enabled. + * + * @return ETrue if enabled. EFalse otherwise. + */ + IMPORT_C TBool IsSecurityMode(); + + /** + * Initializes state instance. This should be called when dynamic security + * mode observers are ready. + */ + IMPORT_C void Initialize(); + + /** + * Handles phone engine message. Dynamic state object listens phone engine + * message to determinate sim states. + * + * @param aMessage Message enumeration. + * @param aCallId Call identifier. + */ + void HandlePhoneEngineMessageL( const TInt aMessage, TInt aCallId ); + + /** + * Handle property change. Dynamic state object listens P&S key changes + * to determinate autolock and sim security states. + * + * @param aCategory Unique identifer category reference. + * @param aKey Key as unsigned integer. + * @param aValue Key value as integer. + */ + void HandlePropertyChangedL(const TUid& aCategory, + const TUint aKey, + const TInt aValue ); + +private: + + /** + * Default C++ constructor. + */ + CPhoneSecurityModeObserver(); + + /** + * Defines iSecurityMode with corresponding logic implementation. + */ + void DefineSecurityModeState(); + + /** + * Handles security mode state change. Basicly calls observer functions. + */ + void HandleStateChange(); + + /** + * Checks if sim security status is enabled. + * + * @return ETrue if enabled. + */ + TBool IsSimSecurityStatus(); + + /** + * Checks if sim security status is accepted, not in security mode. + * + * @return ETrue if not in security mode. + */ + TBool IsEngineSimStateAccepted(); + + /** + * Checks if simless features are supported. + * + * @return ETrue if features are supported. + */ + TBool AreSimlessFeaturesSupported(); + +private: + + // Phone sim security state. Used to define dialer security mode and + // usability restrictions dynamically. + TPSSimSecurityStatus iSimState; + + // Telephony engine sim state. Used to define dialer security mode and + // usability restrictions dynamically. + TPESimState iEngineCurrentSimState; + + // Some special cases requires that we know previous sim state to + // calculate security mode. + TPESimState iEnginePreviousSimState; + + // Phone device lock state. Used to define dialer security mode and + // usability restrictions dynamically. + TPSAutolockStatus iDeviceLockState; + + // Security mode status flag. This is calculated from iSimState and + // iDeviceLockState + TBool iSecurityMode; + + /** + * Pointer array for observers. This dynamic security mode state object + * doesn't own the observer instances. + */ + RPointerArray< MPhoneSecurityModeChangeObserver > iObserverArray; + + /** + * Pointer to Phone Engine info instance. This object doens't own the + * engine info instance. + */ + MPEEngineInfo* iEngineInfo; + + /** + * Flag to determinate if this security mode state object has been fully + * initialized. + */ + TBool iInitialized; + + }; + +#endif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonestate.h --- a/phoneapp/phoneuicontrol/inc/cphonestate.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonestate.h Fri Apr 23 14:59:43 2010 +0100 @@ -170,11 +170,6 @@ IMPORT_C virtual void HandleIdleForegroundEventL(); /** - * Indicates when the keylock events - */ - IMPORT_C virtual void HandleKeyLockEnabled( TBool aKeylockEnabled ); - - /** * Handle environment changes. * @param aChanges environment changes which may be reported by * a change notifier through the RChangeNotifier interface. @@ -288,42 +283,6 @@ IMPORT_C void SendGlobalErrorNoteL( TInt aResourceId ); /** - * Get blocked key list - * @returns RArray& lsit of blocked keys - */ - IMPORT_C const RArray& GetBlockedKeyList() const; - - /** - * Disable HW Keys if needed - */ - IMPORT_C void DisableHWKeysL(); - - /** - * Disable Call UI - */ - IMPORT_C void DisableCallUIL(); - - /** - * Enable Call UI - */ - IMPORT_C void EnableCallUIL(); - - /** - * Disable HW Keys and Call UI if needed - */ - IMPORT_C void CheckDisableHWKeysAndCallUIL(); - - /** - * Handle hold switch key event when there is an incoming or waiting call - */ - IMPORT_C void HandleHoldSwitchL(); - - /** - * Enable HW Keys and Call UI if needed - */ - IMPORT_C void CheckEnableHWKeysAndCallUIL(); - - /** * Fetches autolock information - is it set on or not * @return is autolock set on (ETrue) or off (EFalse) */ @@ -367,8 +326,12 @@ */ TBool IsNoteDismissableL(); - IMPORT_C void RetainPreviousKeylockStateL(); - + /** + * Check if possible dialer extension is in focus + * @return boolean value indicating if dialer extension is in focus + */ + IMPORT_C TBool IsDialingExtensionInFocusL() const; + public: // NumberEntry functions. /** @@ -424,7 +387,7 @@ /** * Disconnect call */ - IMPORT_C TBool DisconnectCallL(); + IMPORT_C virtual void DisconnectCallL(); /** * Display idle screen @@ -546,7 +509,7 @@ * @return boolean value indicating that application needs to be * sent to the background */ - IMPORT_C TBool NeedToSendToBackgroundL() const; + IMPORT_C TBool NeedToReturnToForegroundAppL() const; /** * Check if the top application is currently displayed in the foreground @@ -1102,6 +1065,12 @@ * Opens virtual keyboard. */ void OpenVkbL(); + + /** + * Handles commands sent by easydialing plugin. + * @param aCommandId - command id to be handled + */ + void HandleEasyDialingCommandsL( TInt aCommandId ); private: // NumberEntry functions. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonestateidle.h --- a/phoneapp/phoneuicontrol/inc/cphonestateidle.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonestateidle.h Fri Apr 23 14:59:43 2010 +0100 @@ -281,6 +281,13 @@ TPhoneCmdParamSpeedDial& aSpeedDialParam ) const; void HandleVoiceCallCommandL( TBool aSendKey ); + + /** + * Returns options menu id when number entry is visible. + * If easydialing is in focus, id is asked from it. + * @return Menu resource id. + */ + TInt GetNumberAcqMenuIdL(); private: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonestateincall.h --- a/phoneapp/phoneuicontrol/inc/cphonestateincall.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonestateincall.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 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" @@ -283,6 +283,18 @@ */ void HandleVoiceKeyPressL( TPhoneKeyEventMessages aMessage ); + // From CPhoneState + /** + * This function is called when there is property value change. + * @param aCategory Category of the property + * @param aKey Property key that is changed + * @param aValue New property value + */ + IMPORT_C virtual void HandlePropertyChangedL( + const TUid& aCategory, + const TUint aKey, + const TInt aValue ); + private: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonestateincoming.h --- a/phoneapp/phoneuicontrol/inc/cphonestateincoming.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonestateincoming.h Fri Apr 23 14:59:43 2010 +0100 @@ -78,11 +78,6 @@ */ IMPORT_C void HandleNumberEntryClearedL(); - /** - * Handle keylock state change events - */ - IMPORT_C void HandleKeyLockEnabled( TBool aKeylockEnabled ); - protected: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonestatemachine.h --- a/phoneapp/phoneuicontrol/inc/cphonestatemachine.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonestatemachine.h Fri Apr 23 14:59:43 2010 +0100 @@ -30,7 +30,8 @@ // FORWARD DECLARATIONS class MPhoneState; -class MPhoneStorage; +class MPhoneSecurityModeObserver; +class MPhoneSecurityMessageHandler; // CLASS DECLARATION @@ -101,12 +102,46 @@ */ IMPORT_C void SetCallId( const TInt aCallId ); - + /** - * Instantiates phone storage. - * @return storage instance - */ - IMPORT_C MPhoneStorage* PhoneStorage(); + * Getter for security mode observer interface. + * + * @return Pointer to security mode interface. + */ + IMPORT_C MPhoneSecurityModeObserver* SecurityMode(); + + /** + * Setter for security mode observer interface. + * + * @param aObserver Pointer to observer interface. + */ + IMPORT_C void SetSecurityModeObserver( MPhoneSecurityModeObserver* aObserver ); + + /** + * Set security message handler for security message observations. + * + * @param aHandler Pointer to handler instance. + */ + IMPORT_C void SetSecurityMessageHandler( MPhoneSecurityMessageHandler* aHandler ); + + /** + * Handle phone engine message. + * + * @param aMessage Message + * @param aCallId Call id + */ + IMPORT_C void HandlePhoneEngineMessageL(const TInt aMessage, + TInt aCallId ); + + /** + * This function is called when there is property value change. + * @param aCategory Category of the property + * @param aKey Property key that is changed + * @param aValue New property value + */ + IMPORT_C void HandlePropertyChangedL(const TUid& aCategory, + const TUint aKey, + const TInt aValue ); protected: @@ -145,9 +180,19 @@ // Idle state which is hold in memory all the time MPhoneState* iIdleState; - - // Phone's storage - MPhoneStorage* iPhoneStorage; + + /** + * Security mode state + * Not own. + */ + MPhoneSecurityModeObserver* iSecurityModeObserver; + + /** + * Security message handling interface. + * Not own. + */ + MPhoneSecurityMessageHandler* iSecurityMessageHandler; + }; #endif // CPHONESTATEMACHINE_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonestatestartup.h --- a/phoneapp/phoneuicontrol/inc/cphonestatestartup.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonestatestartup.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -54,7 +54,7 @@ * @param aMessage Message from Phone Engine * @param aCallId Call id the message concerns */ - IMPORT_C void HandlePhoneEngineMessageL( + IMPORT_C virtual void HandlePhoneEngineMessageL( const TInt aMessage, TInt aCallId ); @@ -72,6 +72,11 @@ IMPORT_C virtual void HandlePhoneStartupL(); /** + * A message handling function for message EPEMessagePEConstructionReady. + * @param aCallId: the call id of the call + */ + IMPORT_C void HandlePEConstructionReadyL( TInt aCallId ); + /** * Indicates when the Idle app is in the foreground. */ IMPORT_C virtual void HandleIdleForegroundEventL(); @@ -106,11 +111,6 @@ IMPORT_C void HandleDtmfKeyToneL( const TKeyEvent& aKeyEvent, TEventCode aEventCode ); - /** - * A message handling function for message EPEMessagePEConstructionReady. - * @param aCallId: the call id of the call - */ - void HandlePEConstructionReadyL( TInt aCallId ); /** * Starts to shows note. @@ -122,6 +122,11 @@ * if necessary. */ void CreateAndShowNoteAfterIdle(); + + /** + * Finishes phone application initialization + */ + void InitializationReadyL(); protected: // Data @@ -129,10 +134,10 @@ // Provides phone engine startup status TBool iPEReady; - private: // Data // Provides phone application startup status TBool iPhoneReady; + private: // Data // Ownded: idle object to create note. CIdle* iCreateNote; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphonesystemeventhandler.h --- a/phoneapp/phoneuicontrol/inc/cphonesystemeventhandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphonesystemeventhandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -75,8 +75,6 @@ void HandlePhoneFocusLostEventL(); - void HandleKeyLockEnabled( TBool aKeylockEnabled ); - public: // From MPhonePubSubObserver /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/cphoneuicontroller.h --- a/phoneapp/phoneuicontrol/inc/cphoneuicontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/cphoneuicontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -39,6 +39,8 @@ class CPEPhoneModel; class CPhoneRemoteControlHandler; class CPhoneKeyEventForwarder; +class CPhoneSecurityModeObserver; +class CPhoneViewController; class CPhoneUIController : public CBase, @@ -52,8 +54,7 @@ /** * Two-phased constructor. */ - IMPORT_C static CPhoneUIController* NewL( - MPhoneViewCommandHandle* aViewCommandHandle ); + IMPORT_C static CPhoneUIController* NewL( CPhoneViewController& aViewCommandHandle ); /** * Destructor. @@ -158,13 +159,6 @@ */ IMPORT_C TBool ProcessCommandL( TInt aCommand ); - /** - * Handles keylock events - * @param aCommand It is the code of the command to be handled. - */ - IMPORT_C void HandleKeyLockEnabled( TBool aKeylockEnabled ); - - private: /** @@ -175,12 +169,12 @@ /** * By default EPOC constructor is private. */ - void ConstructL( MPhoneViewCommandHandle* aViewCommandHandle ); + void ConstructL( CPhoneViewController& aController ); /** * Creates correct protocol DLL depending of the variation. */ - void CreateProtocolDllL( MPhoneViewCommandHandle* aViewCommandHandle ); + void CreateProtocolDllL( CPhoneViewController& aController ); /** * CallBack for Phone Number Editor */ @@ -237,7 +231,13 @@ * iKeyEventForwarder */ CPhoneKeyEventForwarder* iKeyEventForwarder; - + + /** + * Security mode observer. + * Own. + */ + CPhoneSecurityModeObserver* iSecurityModeObserver; + }; #endif // CPHONEUICONTROLLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonesecuritymessagehandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuicontrol/inc/mphonesecuritymessagehandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,49 @@ +/* +* Copyright (c) 2010-2010 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: +* A dynamic state class for security mode. +* +*/ + +#ifndef MPHONESECURITYMESSAGEHANDLER_H +#define MPHONESECURITYMESSAGEHANDLER_H + +class TUid; + +class MPhoneSecurityMessageHandler + { + public: + /** + * Handles phone engine message. Dynamic state object listens phone engine + * message to determinate sim states. + * + * @param aMessage Message enumeration. + * @param aCallId Call identifier. + */ + virtual void HandlePhoneEngineMessageL( const TInt aMessage, TInt aCallId ) = 0; + + /** + * Handle property change. Dynamic state object listens P&S key changes + * to determinate autolock and sim security states. + * + * @param aCategory Unique identifer category reference. + * @param aKey Key as unsigned integer. + * @param aValue Key value as integer. + */ + virtual void HandlePropertyChangedL(const TUid& aCategory, + const TUint aKey, + const TInt aValue ) = 0; + }; + +#endif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonesecuritymodechangeobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuicontrol/inc/mphonesecuritymodechangeobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2005-2010 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: +* A dynamic security mode state class observer interface. +* +*/ + +#ifndef MPHONESECURITYMODECHANGEOBSERVER_H +#define MPHONESECURITYMODECHANGEOBSERVER_H + +#include + +/** + * Observer interface to observe dynamic security mode state changes. + */ +class MPhoneSecurityModeChangeObserver + { +public: + /** + * Handles security mode state change. This is called only when state + * actually changes. + * + * @param aIsEnabled Defines if security mode is enabled. + */ + virtual void HandleSecurityModeChanged( TBool aIsEnabled ) = 0; + }; + +#endif + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonesecuritymodeobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuicontrol/inc/mphonesecuritymodeobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,70 @@ +/* +* Copyright (c) 2005-2010 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: +* An interface for dynamic security mode state class. +* +*/ + +#ifndef MPHONESECURITYMODEOBSERVER_H +#define MPHONESECURITYMODEOBSERVER_H + +#include + +// Forward declarations +class MPhoneSecurityModeChangeObserver; + +/** + * Interface for dynamic security mode state class. + */ +class MPhoneSecurityModeObserver + { +public : + + /** + * Checks if autolock is enabled. + * + * @return ETrue if autolock is enabled. EFalse otherwise. + */ + virtual TBool IsAutolockEnabled() = 0; + + /** + * Checks if security mode is enabled. + * + * @return ETrue if enabled, otherwise EFalse. + */ + virtual TBool IsSecurityMode() = 0; + + /** + * Registers security mode state observer to observer state changes. + * + * @param aObserver Reference to state observer instance.. + */ + virtual void RegisterStateObserver( MPhoneSecurityModeChangeObserver& aObserver ) = 0; + + /** + * Removes registered state observer. + * + * @param aObserver Reference to observer instance. + */ + virtual void RemoveStateObserver( MPhoneSecurityModeChangeObserver& aObserver ) = 0; + + /** + * Initializes dynamic security mode state observer. + */ + virtual void Initialize() = 0; + }; + +#endif + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonestate.h --- a/phoneapp/phoneuicontrol/inc/mphonestate.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/mphonestate.h Fri Apr 23 14:59:43 2010 +0100 @@ -30,7 +30,6 @@ #include "mphoneneclearedhandler.h" #include "mphonenumberentryevents.h" #include "mphonelockinfo.h" -#include "mphoneblockedkeys.h" // FORWARD DECLARATIONS @@ -47,7 +46,6 @@ public MPhoneMenuAndCbaEvents, public MPhoneRemoteControlEvents, public MPhoneDivertIF, - public MPhoneBlockedKeys, public MPhoneNEClearedHandler, public MPhoneNumberEntryEvents, public MPhoneLockInfo diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonestatemachine.h --- a/phoneapp/phoneuicontrol/inc/mphonestatemachine.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/mphonestatemachine.h Fri Apr 23 14:59:43 2010 +0100 @@ -30,7 +30,8 @@ class MPEPhoneModel; class MPEEngineInfo; class CSpdiaControl; -class MPhoneStorage; +class MPhoneSecurityMessageHandler; +class MPhoneSecurityModeObserver; /** * Describes the interface for setting and getting active state @@ -86,11 +87,46 @@ * @param aCallId */ virtual void SetCallId( TInt aCallId ) = 0; + + /** + * Getter for security mode observer interface. + * + * @return Pointer to security mode interface. + */ + virtual MPhoneSecurityModeObserver* SecurityMode() = 0; + + /** + * Sets security mode observer. Doesn't transfer ownership. + * + * @param aObserver Pointer to observer instance. + */ + virtual void SetSecurityModeObserver( MPhoneSecurityModeObserver* aObserver ) = 0; + + /** + * Set security message handler for security message observations. + * + * @param aHandler Pointer to handler instance. + */ + virtual void SetSecurityMessageHandler( MPhoneSecurityMessageHandler* aHandler ) = 0; + + /** + * Handle phone engine message. + * + * @param aMessage Message + * @param aCallId Call id + */ + virtual void HandlePhoneEngineMessageL(const TInt aMessage, + TInt aCallId ) = 0; /** - * Phone's Storage - */ - virtual MPhoneStorage* PhoneStorage() = 0; + * This function is called when there is property value change. + * @param aCategory Category of the property + * @param aKey Property key that is changed + * @param aValue New property value + */ + virtual void HandlePropertyChangedL(const TUid& aCategory, + const TUint aKey, + const TInt aValue ) = 0; }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonesystemeventhandler.h --- a/phoneapp/phoneuicontrol/inc/mphonesystemeventhandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/mphonesystemeventhandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -95,11 +95,6 @@ */ virtual void HandlePhoneStartupL() = 0; - /** - * Indicates when the keylock events - */ - virtual void HandleKeyLockEnabled( TBool aKeylockEnabled ) = 0; - }; #endif // __MPHONESYSTEMEVENTHANDLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/inc/mphonesystemevents.h --- a/phoneapp/phoneuicontrol/inc/mphonesystemevents.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/inc/mphonesystemevents.h Fri Apr 23 14:59:43 2010 +0100 @@ -85,11 +85,6 @@ virtual void HandleIdleForegroundEventL() = 0; /** - * Indicates when the keylock events - */ - virtual void HandleKeyLockEnabled( TBool aKeylockEnabled ) = 0; - - /** * Handle environment changes. * @param aChanges environment changes which may be reported by * a change notifier through the RChangeNotifier interface. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonebtaadisconnecthandler.cpp --- a/phoneapp/phoneuicontrol/src/cphonebtaadisconnecthandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonebtaadisconnecthandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -97,11 +97,12 @@ { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneBtaaDisconnectHandler::Cancel()"); TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveQuery ) ); - DeleteAll(); - if ( !iOldMuted && iStateMachine->PhoneEngineInfo()->AudioMute() ) + if ( !iOldMuted && iStateMachine->PhoneEngineInfo()->AudioMute() && + ELaunchQuery == iState ) { TRAP_IGNORE ( SetMuteL( EFalse ) ); } + DeleteAll(); iOldMuted = EFalse; } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonecbamanager.cpp --- a/phoneapp/phoneuicontrol/src/cphonecbamanager.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonecbamanager.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -38,6 +38,7 @@ #include "tphonecmdparamboolean.h" #include "tphonecmdparaminteger.h" #include "tphonecmdparamcallstatedata.h" +#include "mphonesecuritymodeobserver.h" // ======== MEMBER FUNCTIONS ======== @@ -115,6 +116,7 @@ EPEBTAudioAccessory ); // Call setup cases + if ( EPhoneCallHandlingCallSetupCBA == aResource ) { if ( !FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling) ) @@ -131,7 +133,7 @@ } // Is numberentry visible - else if ( iState->IsNumberEntryUsedL() ) + else if ( iState->IsNumberEntryUsedL() && iState->IsNumberEntryVisibleL() ) { if ( iState->IsAutoLockOn() || !(iState->IsSimOk()) ) { @@ -139,37 +141,7 @@ } else { - TBool dtmfEditorVisible = iViewCommandHandle.HandleCommandL( - EPhoneViewIsDTMFEditorVisible ) == - EPhoneViewResponseSuccess; - TPhoneCmdParamInteger activeCallCount; - iViewCommandHandle.ExecuteCommandL( - EPhoneViewGetCountOfActiveCalls, &activeCallCount ); - - TPhoneCmdParamCallStateData callStateData; - callStateData.SetCallState( EPEStateRinging ); - iViewCommandHandle.HandleCommandL( - EPhoneViewGetCallIdByState, &callStateData ); - - TInt incomingCall = callStateData.CallId(); - - if( dtmfEditorVisible ) - { - resourceId = EPhoneDtmfDialerCBA; - } - else if( activeCallCount.Integer() == ENoActiveCalls ) - { - resourceId = EPhoneNumberAcqCBA; - } - else if ( activeCallCount.Integer() > ENoActiveCalls && - incomingCall > KErrNotFound ) - { - resourceId = EPhoneCallHandlingCallWaitingCBA; - } - else - { - resourceId = EPhoneInCallNumberAcqCBA; - } + resourceId = GetNumberEntryCbaIdL(); } } @@ -279,10 +251,16 @@ &softRejectParam ); TInt incomingCbaResourceId; + + TBool securityMode = iStateMachine.SecurityMode()->IsSecurityMode(); if ( iState->IsSwivelClosed() ) { - if ( !callIsAlerting || iRingtoneSilenced ) + if ( securityMode ) + { + incomingCbaResourceId = EPhoneCallHandlingIncomingSilentSliderCBA; + } + else if ( !callIsAlerting || iRingtoneSilenced ) { incomingCbaResourceId = EPhoneCallHandlingIncomingSilentSwivelClosedCBA; } @@ -294,7 +272,12 @@ else if ( coverHideSendEndKey ) { - if ( callIsAlerting ) + if ( securityMode ) + { + // Set CBA to Options..Reject + incomingCbaResourceId = EPhoneCallHandlingIncomingSilentSliderCBA; + } + else if ( callIsAlerting ) { // Set CBA to Options..Silence incomingCbaResourceId = EPhoneCallHandlingIncomingSliderCBA; @@ -313,7 +296,11 @@ else { - if ( callIsAlerting ) + if ( securityMode ) + { + incomingCbaResourceId = EPhoneCallHandlingIncomingRejectCBA; + } + else if ( callIsAlerting ) { incomingCbaResourceId = GetIncomingCallSilenceCBA( softRejectActivated ); } @@ -343,9 +330,18 @@ "CPhoneCbaManager::SetCbaL : %d",aResource ); TPhoneCmdParamInteger integerParam; - integerParam.SetInteger( - CPhoneMainResourceResolver::Instance()->ResolveResourceID( - aResource ) ); + + if ( EPhoneEasyDialingCba == aResource ) + { + iViewCommandHandle.ExecuteCommandL( EPhoneViewGetEasyDialingCbaId, &integerParam ); + } + else + { + integerParam.SetInteger( + CPhoneMainResourceResolver::Instance()->ResolveResourceID( + aResource ) ); + } + iViewCommandHandle.ExecuteCommandL( EPhoneViewUpdateCba, &integerParam ); } @@ -464,7 +460,11 @@ touchpaneButtonsParam.SetInteger( CPhoneMainResourceResolver::Instance()-> ResolveResourceID( EPhoneIncomingCallButtons ) ); - if ( touchpaneButtonsParam.Integer() + if ( iStateMachine.SecurityMode()->IsSecurityMode() ) + { + ret = EPhoneCallHandlingIncomingRejectCBA; + } + else if ( touchpaneButtonsParam.Integer() == R_PHONEUI_INCOMING_CALL_SILENCE_BUTTONS ) { aSoftRejectActivated ? @@ -487,6 +487,56 @@ return ret; } +// ----------------------------------------------------------- +// CPhoneCbaManager::GetNumberEntryCbaIdL +// ----------------------------------------------------------- +// +TInt CPhoneCbaManager::GetNumberEntryCbaIdL() + { + TInt ret( EPhoneNumberAcqCBA ); + + if ( iState->IsDialingExtensionInFocusL() ) + { + ret = EPhoneEasyDialingCba; + } + else + { + TBool dtmfEditorVisible = iViewCommandHandle.HandleCommandL( + EPhoneViewIsDTMFEditorVisible ) == + EPhoneViewResponseSuccess; + TPhoneCmdParamInteger activeCallCount; + iViewCommandHandle.ExecuteCommandL( + EPhoneViewGetCountOfActiveCalls, &activeCallCount ); + + TPhoneCmdParamCallStateData callStateData; + callStateData.SetCallState( EPEStateRinging ); + iViewCommandHandle.HandleCommandL( + EPhoneViewGetCallIdByState, &callStateData ); + + TInt incomingCall = callStateData.CallId(); + + if( dtmfEditorVisible ) + { + ret = EPhoneDtmfDialerCBA; + } + else if( activeCallCount.Integer() == ENoActiveCalls ) + { + ret = EPhoneNumberAcqCBA; + } + else if ( activeCallCount.Integer() > ENoActiveCalls && + incomingCall > KErrNotFound ) + { + ret = EPhoneCallHandlingCallWaitingCBA; + } + else + { + ret = EPhoneInCallNumberAcqCBA; + } + } + + return ret; + } + // ======== LOCAL FUNCTIONS ======== diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphoneenginehandler.cpp --- a/phoneapp/phoneuicontrol/src/cphoneenginehandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphoneenginehandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -54,7 +54,7 @@ __PHONELOG2( EBasic, EPhoneControl, "CPhoneEngineHandler::DoHandleMessageL - Message received (aMessage=%d aCallId=%d)", aMessage, aCallId ); - iStateMachine->State()->HandlePhoneEngineMessageL( aMessage, aCallId ); + iStateMachine->HandlePhoneEngineMessageL( aMessage, aCallId ); } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonekeyeventforwarder.cpp --- a/phoneapp/phoneuicontrol/src/cphonekeyeventforwarder.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonekeyeventforwarder.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -31,6 +31,11 @@ #include "cphonetimer.h" #include "phonelogger.h" #include "phoneui.pan" +#include "mphoneviewcommandhandle.h" +#include "cphoneqwertyhandler.h" +#include "tphonecmdparampointer.h" +#include "mphoneqwertymodeobserver.h" +#include "cdialer.h" // CONSTANTS @@ -38,6 +43,13 @@ const TUid KCRUidAvkon = { 0x101F876E }; const TUint32 KAknKeyBoardLayout = 0x0000000B; +// Characters resulting from multitapping *-key. +_LIT( KAsteriskMultitapCharacters, "*+pw" ); + +// Multitap delay parameter in micro seconds. +const TInt KMultitapDelay = 1000000; + + // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- @@ -73,6 +85,8 @@ env->EikAppUi()->RemoveFromStack( this ); } delete iLongPressKeyEventTimer; + + delete iQwertyHandler; } // ----------------------------------------------------------------------------- @@ -199,6 +213,17 @@ // Create the long press key event timer iLongPressKeyEventTimer = CPhoneTimer::NewL(); + + // Create qwerty mode handler + iQwertyHandler = CPhoneQwertyHandler::NewL(); + + TPhoneCmdParamPointer ptrParam; + iViewCommandHandle->ExecuteCommand( EPhoneViewGetQwertyModeObserver, &ptrParam ); + CDialer* qwertyObserver = + static_cast( ptrParam.Pointer() ); + + iQwertyHandler->AddQwertyModeObserverL( *qwertyObserver ); + } // ----------------------------------------------------------------------------- @@ -260,6 +285,54 @@ } // ----------------------------------------------------------------------------- +// CPhoneKeyEventForwarder::HandleTouchDialerKeyEventL +// +// ----------------------------------------------------------------------------- +// +void CPhoneKeyEventForwarder::HandleTouchDialerKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) + { + TBool multitap = aKeyEvent.iScanCode == EStdKeyNkpAsterisk && + iPreviousScanCode == EStdKeyNkpAsterisk && + iKeyPressTime.MicroSecondsFrom( iPreviousKeyPressTime ) < KMultitapDelay; + + if ( multitap ) + { + if ( aType == EEventKeyDown ) + { + // Update multitap index + iMultitapIndex = ( iMultitapIndex + 1 ) % KAsteriskMultitapCharacters().Length(); + + // Delete the previously entered character by simulating a backspace character. + TKeyEvent backSpaceEvent; + backSpaceEvent.iModifiers = 0; + backSpaceEvent.iRepeats = 0; + backSpaceEvent.iCode = EKeyBackspace; + backSpaceEvent.iScanCode = EStdKeyBackspace; + iStateMachine->State()->HandleKeyEventL( backSpaceEvent, EEventKey ); + } + + TKeyEvent keyEvent( aKeyEvent ); + + // Modify the key event to contain the next character on multitap list. + keyEvent.iCode = ( TInt ) KAsteriskMultitapCharacters()[ iMultitapIndex ]; + + // Send character to number entry. + iStateMachine->State()->HandleKeyEventL( keyEvent, aType ); + } + + else + { + iMultitapIndex = 0; + iStateMachine->State()->HandleKeyEventL( aKeyEvent, aType ); + } + + if ( aType == EEventKeyUp ) + { + iPreviousScanCode = aKeyEvent.iScanCode; + } + } + +// ----------------------------------------------------------------------------- // CPhoneKeyEventForwarder::OfferKeyEventBeforeControlStackL // Let phone handle before other components in control stack // ----------------------------------------------------------------------------- @@ -272,31 +345,49 @@ "CPhoneKeyEventForwarder::OfferKeyEventBeforeControlStackL"); TKeyResponse response( EKeyWasNotConsumed ); - if( !IsKeyBlocked( aKeyEvent ) ) + + // Handle key events before FEP + // This is must becouse FEP consumes * key and when + // editor is in alphanumeric mode FEP consumes all alphanumeric + // keys + switch( aType ) { - // Handle key events before FEP - // This is must becouse FEP consumes * key and when - // editor is in alphanumeric mode FEP consumes all alphanumeric - // keys - switch( aType ) - { - // EEventKeyDown - case EEventKeyDown: - response = HandleEventKeyDownBeforeControlStackL( aKeyEvent ); - break; - // EEventKey - case EEventKey: - response = HandleEventKeyBeforeControlStackL( aKeyEvent ); - break; - // EEventKeyUp - case EEventKeyUp: - response = HandleEventKeyUpBeforeControlStackL( aKeyEvent ); - break; - default: - break; - } + // EEventKeyDown + case EEventKeyDown: + response = HandleEventKeyDownBeforeControlStackL( aKeyEvent ); + break; + // EEventKey + case EEventKey: + response = HandleEventKeyBeforeControlStackL( aKeyEvent ); + break; + // EEventKeyUp + case EEventKeyUp: + response = HandleEventKeyUpBeforeControlStackL( aKeyEvent ); + break; + default: + break; + } + + // Check if keyEvent is simulated by Dialer. + const TBool simulatedByDialer = + ( ( aKeyEvent.iModifiers & ( EModifierNumLock | EModifierKeypad ) ) + == ( EModifierNumLock | EModifierKeypad ) ); + + if( simulatedByDialer ) + { + HandleTouchDialerKeyEventL( aKeyEvent, aType ); + response = EKeyWasConsumed; + } + + else + { + // If not simulated by dialer, multitap related fields are reset. + // Any key event not originating from dialer interrupts multitap + // behaviour. + iMultitapIndex = 0; + iPreviousScanCode = 0; + } - } return response; } @@ -313,23 +404,20 @@ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneKeyEventForwarder::OfferKeyEventAfterControlStackL"); - if( !IsKeyBlocked( aKeyEvent ) ) + // Send key to editor + iStateMachine->State()->HandleKeyEventL( aKeyEvent, aType ); + + if( EEventKeyUp == aType + && EKeyNull != iKeyPressedDown ) { - // Send key to editor - iStateMachine->State()->HandleKeyEventL( aKeyEvent, aType ); - - if( EEventKeyUp == aType - && EKeyNull != iKeyPressedDown ) - { - // Handle short key press - iStateMachine->State()->HandleKeyMessageL( - MPhoneKeyEvents::EPhoneKeyShortPress, - TKeyCode( iKeyPressedDown ) ); + // Handle short key press + iStateMachine->State()->HandleKeyMessageL( + MPhoneKeyEvents::EPhoneKeyShortPress, + TKeyCode( iKeyPressedDown ) ); - // Reset key code - iScanCode = EStdKeyNull; - iKeyPressedDown = EKeyNull; - } + // Reset key code + iScanCode = EStdKeyNull; + iKeyPressedDown = EKeyNull; } return EKeyWasNotConsumed; @@ -349,6 +437,9 @@ ConvertKeyCode( iKeyPressedDown, aKeyEvent ); // Save key scan code iScanCode = aKeyEvent.iScanCode; + + // Store the previous keypress time. + iPreviousKeyPressTime = iKeyPressTime; // Start the key press timer iKeyPressTime.UniversalTime(); @@ -547,32 +638,5 @@ "CPhoneKeyEventHandler::ConvertKeyCode aCode (%d)", aCode ); } -// ----------------------------------------------------------------------------- -// CPhoneKeyEventForwarder::IsKeyBlocked -// ----------------------------------------------------------------------------- -// -TBool CPhoneKeyEventForwarder::IsKeyBlocked( const TKeyEvent& aKeyEvent ) const - { - TBool ret = EFalse; - - // Check blocked keys - const RArray& keyScanCodeList = iStateMachine->State()->GetBlockedKeyList(); - TInt count = keyScanCodeList.Count(); - if( count ) - { - for( TInt i = 0; i < count; i++ ) - { - if( keyScanCodeList[i] == aKeyEvent.iScanCode ) - { - ret = ETrue; - } - } - } - __PHONELOG1( EBasic, EPhoneControl, - "CPhoneKeyEventHandler::IsKeyBlocked return (%d)", ret ); - - return ret; - } - // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonenumberentrymanager.cpp --- a/phoneapp/phoneuicontrol/src/cphonenumberentrymanager.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonenumberentrymanager.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -40,6 +40,7 @@ #include "phoneviewcommanddefinitions.h" #include "phoneappcommands.hrh" #include "phonelogger.h" +#include "mphonesecuritymodeobserver.h" const TInt KPhoneKeyStart = 33; const TInt KPhoneKeyEnd = 127; @@ -224,12 +225,12 @@ { __LOGMETHODSTARTEND( EPhoneControl, "CPhoneNumberEntryManager::HandleCreateNumberEntryL() "); - const TBool autoLcokOn = iState->IsAutoLockOn(); + const TBool autoLockOn = iStateMachine.SecurityMode()->IsSecurityMode(); const TBool idleVal = CPhonePubSubProxy::Instance()->Value( KPSUidAiInformation, KActiveIdleState ); const TBool queryActive = iState->IsAnyQueryActiveL(); const TBool menuBarVisible = iState->IsMenuBarVisibleL(); - if( autoLcokOn || + if( autoLockOn || ( idleVal == EPSAiForeground ) || ( menuBarVisible || queryActive ) ) { @@ -237,7 +238,7 @@ "CPhoneNumberEntryManager::HandleCreateNumberEntryL() NE NOT CREATED" ); __PHONELOG2( EBasic, EPhoneControl, "CPhoneNumberEntryManager::HandleCreateNumberEntryL() autoLcokOn(%d) idleVal(%d)", - autoLcokOn, idleVal ); + autoLockOn, idleVal ); __PHONELOG2( EBasic, EPhoneControl, "CPhoneNumberEntryManager::HandleCreateNumberEntryL() queryActive(%d) menuBarVisible(%d)", queryActive, menuBarVisible ); @@ -257,9 +258,7 @@ iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveNote ); } - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle.ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - if( isSecurityMode.Boolean() ) + if( iStateMachine.SecurityMode()->IsSecurityMode() ) { iState->HandleCommandL( EPhoneNumberAcqSecurityDialer ); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonesecuritymodeobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuicontrol/src/cphonesecuritymodeobserver.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,342 @@ +/* +* Copyright (c) 2005-2010 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 CPhoneSecurityModeState class. +* +*/ + +#include "cphonesecuritymodeobserver.h" +#include "mphonesecuritymodechangeobserver.h" +#include "cphonelogger.h" +#include "cphonepubsubproxy.h" + +#include +#include +#include + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::NewL +// ----------------------------------------------------------- +CPhoneSecurityModeObserver* CPhoneSecurityModeObserver::NewL() + { + return new( ELeave )CPhoneSecurityModeObserver; + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::NewLC +// ----------------------------------------------------------- +CPhoneSecurityModeObserver* CPhoneSecurityModeObserver::NewLC() + { + CPhoneSecurityModeObserver* self = new( ELeave )CPhoneSecurityModeObserver; + CleanupStack::PushL( self ); + return self; + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::~CPhoneSecurityModeObserver +// ----------------------------------------------------------- +CPhoneSecurityModeObserver::~CPhoneSecurityModeObserver() + { + iObserverArray.Reset(); + iObserverArray.Close(); + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::SetPhoneEngineInfo +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::SetPhoneEngineInfo( MPEEngineInfo* aEngineInfo ) + { + iEngineInfo = aEngineInfo; + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::RegisterStateObserver +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::RegisterStateObserver( MPhoneSecurityModeChangeObserver& aObserver ) + { + iObserverArray.Append( &aObserver ); + if ( iInitialized ) + { + // Notify observer with registration call, if state instance is initialized. + aObserver.HandleSecurityModeChanged( iSecurityMode ); + } + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::RemoveStateObserver +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::RemoveStateObserver( MPhoneSecurityModeChangeObserver& aObserver ) + { + TInt index = iObserverArray.Find( &aObserver ); + if ( KErrNotFound != index ) + { + iObserverArray.Remove( index ); + } + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::IsAutolockEnabled +// ----------------------------------------------------------- +TBool CPhoneSecurityModeObserver::IsAutolockEnabled() + { + // Autolock is enabled in uninitialized state also. + return ( iDeviceLockState > EAutolockOff + || EAutolockStatusUninitialized == iDeviceLockState ); + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::IsSecurityMode +// ----------------------------------------------------------- +TBool CPhoneSecurityModeObserver::IsSecurityMode() + { + return iSecurityMode; + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::HandlePhoneEngineMessageL +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::HandlePhoneEngineMessageL( const TInt aMessage, + TInt /*aCallId*/ ) + { + TBool previousSecurityMode = iSecurityMode; + switch( aMessage ) + { + case MEngineMonitor::EPEMessageSIMStateChanged: + { + __PHONELOG( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::HandlePhoneEngineMessageL() " ); + + // Register new sim states. + iEnginePreviousSimState = iEngineCurrentSimState; + if ( iEngineInfo ) + { + iEngineCurrentSimState = iEngineInfo->SimState(); + DefineSecurityModeState(); + } + } + break; + } + + // Notify observers for state change. + if ( previousSecurityMode != iSecurityMode ) + { + HandleStateChange(); + } + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::HandlePropertyChangedL +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::HandlePropertyChangedL(const TUid& aCategory, + const TUint aKey, + const TInt aValue ) + { + __PHONELOG( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::HandlePropertyChangedL() " ); + + // Register sim security and autolock value changes. + TBool previousSecurityMode = iSecurityMode; + if ( KPSUidStartup == aCategory && KStartupSimSecurityStatus == aKey ) + { + iSimState = ( TPSSimSecurityStatus )aValue; + DefineSecurityModeState(); + } + else if ( KPSUidCoreApplicationUIs == aCategory + && KCoreAppUIsAutolockStatus == aKey ) + { + iDeviceLockState = ( TPSAutolockStatus )aValue; + DefineSecurityModeState(); + } + + // Notify observer for state change. + if ( previousSecurityMode != iSecurityMode ) + { + HandleStateChange(); + } + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::Initialize +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::Initialize() + { + __PHONELOG1( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::Initialize() %d ", iSecurityMode ); + if ( !iInitialized ) + { + if ( !iEngineInfo ) + { + // Do not initialize if engine info data interface hasn't been set. + return; + } + + // Get current values for sim states and autolock value. + iEngineCurrentSimState = iEngineInfo->SimState(); + iSimState = ( TPSSimSecurityStatus )CPhonePubSubProxy::Instance()->Value( + KPSUidStartup, + KStartupSimSecurityStatus ); + iDeviceLockState = ( TPSAutolockStatus )CPhonePubSubProxy::Instance()->Value( + KPSUidCoreApplicationUIs, + KCoreAppUIsAutolockStatus ); + iInitialized = ETrue; + DefineSecurityModeState(); + HandleStateChange(); + } + + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::CPhoneSecurityModeObserver +// ----------------------------------------------------------- +CPhoneSecurityModeObserver::CPhoneSecurityModeObserver() : + iSimState( ESimSecurityStatusUninitialized ), + iEngineCurrentSimState( EPESimStatusUninitialized ), + iEnginePreviousSimState(EPESimStatusUninitialized ), + iDeviceLockState( EAutolockStatusUninitialized ) + { + + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::DefineSecurityModeState +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::DefineSecurityModeState() + { + // Device lock + if ( IsAutolockEnabled() ) + { + iSecurityMode = ETrue; + } + + // Sim security status + else if ( IsSimSecurityStatus() ) + { + iSecurityMode = ETrue; + } + + // Phone engine sim state + else if ( !IsEngineSimStateAccepted() ) + { + iSecurityMode = ETrue; + } + + else + { + iSecurityMode = EFalse; + } + + + __PHONELOG1( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::DefineSecurityModeState(), iEngineCurrentSimState( %d )", + iEngineCurrentSimState ); + + __PHONELOG1( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::DefineSecurityModeState(), iEnginePreviousSimState( %d )", + iEnginePreviousSimState ); + + __PHONELOG1( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::DefineSecurityModeState(), iSimState( %d )", + iSimState ); + + __PHONELOG1( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::DefineSecurityModeState(), iDeviceLockState( %d )", + iDeviceLockState ); + + __PHONELOG1( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::DefineSecurityModeState(), iSecurityMode( %d )", + iSecurityMode ); + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::HandleStateChange +// ----------------------------------------------------------- +void CPhoneSecurityModeObserver::HandleStateChange() + { + __PHONELOG2( EBasic, + EPhoneControl, + "CPhoneSecurityModeObserver::HandleStateChange() %d, %d observers ", iSecurityMode, iObserverArray.Count() ); + if ( iInitialized ) + { + for( TInt i( 0 ); i < iObserverArray.Count(); i++ ) + { + MPhoneSecurityModeChangeObserver& observer = *( iObserverArray[ i ] ); + observer.HandleSecurityModeChanged( iSecurityMode ); + } + } + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::HandleStateChange +// ----------------------------------------------------------- +TBool CPhoneSecurityModeObserver::IsSimSecurityStatus() + { + TBool securityStatus( EFalse ); + if ( ESimRejected == iSimState ) + { + securityStatus = ETrue; + } + else if ( ESimUnaccepted == iSimState ) + { + securityStatus = ETrue; + } + else if ( ESimInvalid == iSimState ) + { + securityStatus = ETrue; + } + return securityStatus; + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::HandleStateChange +// ----------------------------------------------------------- +TBool CPhoneSecurityModeObserver::IsEngineSimStateAccepted() + { + TBool accepted( ETrue ); + if ( ( EPESimNotPresent == iEngineCurrentSimState ) + && ( ( EPESimUsable == iEnginePreviousSimState ) + || ( EPESimReadable == iEnginePreviousSimState ) + || ( EPESimNotReady == iEnginePreviousSimState ) ) ) + { + accepted = EFalse; + } + else if ( EPESimNotSupported == iEngineCurrentSimState ) + { + accepted = EFalse; + } + else if ( EPESimNotPresent == iEngineCurrentSimState && + !AreSimlessFeaturesSupported() ) + { + accepted = EFalse; + } + return accepted; + } + +// ----------------------------------------------------------- +// CPhoneSecurityModeObserver::HandleStateChange +// ----------------------------------------------------------- +TBool CPhoneSecurityModeObserver::AreSimlessFeaturesSupported() + { + return FeatureManager::FeatureSupported( KFeatureIdOfflineMode ) + &&FeatureManager::FeatureSupported( KFeatureIdFfSimlessOfflineSupport ); + } + + +// END OF FILE diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestate.cpp --- a/phoneapp/phoneuicontrol/src/cphonestate.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestate.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 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" @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include #include @@ -104,7 +104,9 @@ #include "cphonecontinueemergencycallcommand.h" #include "cphonecallheadermanager.h" #include "cphonenumberentrymanager.h" -#include "mphonestorage.h" +#include "mphonesecuritymodeobserver.h" +#include "easydialingcommands.hrh" + // ================= MEMBER FUNCTIONS ======================= @@ -459,7 +461,8 @@ CPhoneBtaaDisconnectHandler::InstanceL()->HandleConnectionLostL(); } else if ( audioOutput == EPEBTAudioAccessory && - previousOutput != EPEBTAudioAccessory && + previousOutput > EPENotActive && + previousOutput != EPEBTAudioAccessory && btAvailable ) { CPhoneAccessoryBTHandler* bt = CPhoneAccessoryBTHandler::NewLC( @@ -672,7 +675,13 @@ TBool numericMode = iViewCommandHandle->HandleCommandL( EPhoneViewIsNumberEntryNumericMode ) == EPhoneViewResponseSuccess; - if ( ( aKeyEvent.iModifiers & EModifierSpecial ) != 0 || !numericMode ) + // Key presses simulated by dialer are played even if in alphanumeric mode. + const TBool simulatedByDialer = + ( ( aKeyEvent.iModifiers & ( EModifierNumLock | EModifierKeypad ) ) + == ( EModifierNumLock | EModifierKeypad ) ); + + + if ( ( ( aKeyEvent.iModifiers & EModifierSpecial ) != 0 || !numericMode ) && !simulatedByDialer ) { return EFalse; } @@ -1059,7 +1068,9 @@ if ( numberEntryUsed && ( aKeyEvent.iRepeats == 0 || aKeyEvent.iScanCode == EStdKeyBackspace || - aKeyEvent.iScanCode ==EStdKeyLeftArrow || + aKeyEvent.iScanCode ==EStdKeyLeftArrow || + aKeyEvent.iScanCode == EStdKeyUpArrow || + aKeyEvent.iScanCode == EStdKeyDownArrow || aKeyEvent.iScanCode ==EStdKeyRightArrow )) { // Number entry exists but may be hidden @@ -1128,6 +1139,18 @@ } // ----------------------------------------------------------- +// CPhoneState::IsDialingExtensionInFocusL +// ----------------------------------------------------------- +// +EXPORT_C TBool CPhoneState::IsDialingExtensionInFocusL() const + { + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::IsDialingExtensionInFocusL( ) "); + return iViewCommandHandle->HandleCommandL( + EPhoneViewGetEasyDialingInFocusStatus ) == + EPhoneViewResponseSuccess; + } + +// ----------------------------------------------------------- // CPhoneState::SendKeyEventL // ----------------------------------------------------------- // @@ -1323,10 +1346,7 @@ else { - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - - if ( !isSecurityMode.Boolean() ) + if ( !iStateMachine->SecurityMode()->IsSecurityMode() ) { __PHONELOG( EBasic, EPhoneControl, "CPhoneState::HandlePhoneForegroundEventL - Force Idle to the foreground" ); @@ -1437,7 +1457,9 @@ else if ( aCategory == KPSUidStartup && aKey == KStartupSimSecurityStatus ) { // Show security note, SIM is not valid. - if ( aValue == ESimRejected || aValue == ESimUnaccepted ) + if ( aValue == ESimRejected + || aValue == ESimUnaccepted + || aValue == ESimInvalid ) { __PHONELOG( EBasic, EPhoneControl, "CPhoneStateStartup::HandlePropertyChangedL - SimSecurity status received" ); StartShowSecurityNoteL(); @@ -1461,13 +1483,13 @@ } // ----------------------------------------------------------- -// CPhoneState::NeedToSendToBackgroundL +// CPhoneState::NeedToReturnToForegroundAppL // ----------------------------------------------------------- // -EXPORT_C TBool CPhoneState::NeedToSendToBackgroundL() const +EXPORT_C TBool CPhoneState::NeedToReturnToForegroundAppL() const { return iViewCommandHandle->HandleCommandL( - EPhoneViewGetNeedToSendToBackgroundStatus ) == + EPhoneViewGetNeedToReturnToForegroundAppStatus ) == EPhoneViewResponseSuccess; } @@ -1504,12 +1526,6 @@ switch( aCommand ) { case EPhoneEmergencyCmdExit: - { - //cancel emergency mode. - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetRetrictedDialer,&booleanParam ); - } // this should be bypasses? case EPhoneDialerCallHandling: case EPhoneCmdBack: @@ -1628,30 +1644,6 @@ } break; - case EPhoneNumberAcqSecurityDialer: - { - if ( IsOnScreenDialerSupported() && !IsNumberEntryUsedL() ) - { - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote ); - TPhoneCmdParamBoolean visibleMode; - visibleMode.SetBoolean( ETrue ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetStatusPaneVisible, &visibleMode ); - - - // Set emergency CBA, empty - exit - iCbaManager->SetCbaL( EPhoneEmergencyModeNoteCBA ); - - // Set dialer to restricted mode. - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( ETrue ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetRetrictedDialer,&booleanParam ); - - NumberEntryManagerL()->CreateNumberEntryL(); - } - } - break; - case EPhoneDialerCmdContacts: { // Launch Phonebook application @@ -1698,7 +1690,7 @@ // Show the number entry if it exists SetNumberEntryVisibilityL(ETrue); } - else if ( NeedToSendToBackgroundL() ) + else if ( NeedToReturnToForegroundAppL() ) { // Continue displaying current app but set up the // idle screen in the background @@ -1734,16 +1726,28 @@ DisconnectCallL(); break; + case EPhoneCmdUpdateCba: + case EPhoneDialerValidNumber: + case EPhoneDialerInvalidNumber: + case EPhoneCmdBlockingDialogLaunched: + case EPhoneCmdBlockingDialogClosed: + { + // these command ids are sent by easydialing to communicate to phone app + HandleEasyDialingCommandsL( aCommand ); + } + break; + default: if ( IsOnScreenDialerSupported() ) { // Offer command to view. + // Easydialing commands are handled in view, too. TPhoneViewResponseId resId = iViewCommandHandle->HandleCommandL( aCommand ); if( resId == EPhoneViewResponseFailed ) { - commandStatus = EFalse; + commandStatus = EFalse; } } else @@ -1958,7 +1962,7 @@ // CPhoneState::DisconnectCallL // ----------------------------------------------------------- // -EXPORT_C TBool CPhoneState::DisconnectCallL() +EXPORT_C void CPhoneState::DisconnectCallL() { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisconnectCallL( ) "); // Fetch active call's id from view @@ -1999,7 +2003,6 @@ } } - TBool ret = EFalse; if( callStateData.CallId() > KErrNotFound ) { // Release the call @@ -2022,16 +2025,13 @@ iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageRelease ); } - ret = ETrue; } else { __PHONELOG( EOnlyFatal, EPhoneControl, "CPhoneState::DisconnectCallL has negative call id!" ); - } - - return ret; - } + } + } // ----------------------------------------------------------- // CPhoneState::DisplayIdleScreenL @@ -2122,33 +2122,41 @@ } } } - - // Get the number entry contents - HBufC* phoneNumber = PhoneNumberFromEntryLC(); - - // Call the number - iStateMachine->PhoneEngineInfo()->SetPhoneNumber( *phoneNumber ); - - if ( phoneNumber->Des().Length() < KPhoneValidPhoneNumberLength ) + + // If easydialing has focus, call should be initiated to focused contact. + if ( IsDialingExtensionInFocusL() ) { - // Closing effect is shown when dialer exist. - BeginTransEffectLC( ENumberEntryClose ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); - EndTransEffect(); - - HandleNumberEntryClearedL(); + iViewCommandHandle->HandleCommandL( EEasyDialingVoiceCall ); } - - CleanupStack::PopAndDestroy( phoneNumber ); - - if ( !iCustomization || - !iCustomization->HandleCallFromNumberEntryL() ) - { - // Customization didn't handle call. Dial voice call - // as normally - DialVoiceCallL(); + else + { + // Get the number entry contents + HBufC* phoneNumber = PhoneNumberFromEntryLC(); + + // Call the number + iStateMachine->PhoneEngineInfo()->SetPhoneNumber( *phoneNumber ); + + if ( phoneNumber->Des().Length() < KPhoneValidPhoneNumberLength ) + { + // Closing effect is shown when dialer exist. + BeginTransEffectLC( ENumberEntryClose ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); + EndTransEffect(); + + HandleNumberEntryClearedL(); + } + + CleanupStack::PopAndDestroy( phoneNumber ); + + if ( !iCustomization || + !iCustomization->HandleCallFromNumberEntryL() ) + { + // Customization didn't handle call. Dial voice call + // as normally + DialVoiceCallL(); + } } - + } // ----------------------------------------------------------- @@ -2240,22 +2248,16 @@ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetVideoCallFlag, &booleanParam ); } - // Go to background if necessary - if ( NeedToSendToBackgroundL() || IsAutoLockOn() ) + // Check if application and number entry was open before incoming call. If so give control to number entry + // to prevent flickering + if ( NeedToReturnToForegroundAppL() || IsAutoLockOn() ) { - iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); // If number entry is used set control and visibility. if ( IsNumberEntryUsedL() ) { iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); } } - // If there is no need to send back ground and number entry is used then - // we must show number entry. - else if ( !NeedToSendToBackgroundL() && IsNumberEntryUsedL() ) - { - SetNumberEntryVisibilityL(ETrue); - } } // ----------------------------------------------------------- @@ -2732,7 +2734,7 @@ KCTsyCallType ) ); TInt activeCallId = GetActiveCallIdL(); - if ( activeCallId > KErrNotFound ) + if ( activeCallId > KErrNone ) { if ( iStateMachine->PhoneEngineInfo()->CallALSLine( activeCallId ) == CCCECallParameters::ECCELineTypeAux ) @@ -2780,6 +2782,11 @@ } } } + // TODO: Refactor -> this looks really dubious. + else + { + incallIndicatorParam.SetLittleBubbleVisible( ETrue ); + } // Update the in-call indicator iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateIncallIndicator, @@ -3334,6 +3341,7 @@ { case ESimRejected: case ESimUnaccepted: + case ESimInvalid: retVal = EFalse; break; @@ -3352,9 +3360,7 @@ // EXPORT_C TBool CPhoneState::IsSimStateNotPresentWithSecurityModeEnabled() { - TPhoneCmdParamBoolean isSecurityMode; - TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ) ); - if ( SimState() == EPESimNotPresent && isSecurityMode.Boolean() ) + if ( SimState() == EPESimNotPresent && iStateMachine->SecurityMode()->IsSecurityMode() ) { return ETrue; } @@ -3409,11 +3415,6 @@ { __LOGMETHODSTARTEND( EPhoneControl, "CPhoneState::StartShowSecurityNoteL "); - // Set security mode on. - TPhoneCmdParamBoolean securityMode; - securityMode.SetBoolean( ETrue ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode ); - // Remove number entry from screen iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); @@ -3435,21 +3436,38 @@ TInt resourceId ( KErrNone ); - if ( SimSecurityStatus() == ESimRejected ) - { - resourceId = CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneSimRejected ); - } - else if ( SimState() == EPESimNotPresent ) + + switch( SimSecurityStatus() ) { - // insert sim card -note - resourceId = CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneSimRemoved ); - } - else if ( SimSecurityStatus() == ESimUnaccepted ) - { - resourceId = CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneSimUnaccepted ); + case ESimRejected: + { + resourceId = CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneSimRejected ); + break; + } + case ESimUnaccepted: + { + // insert sim card -note + resourceId = CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneSimUnaccepted ); + break; + } + case ESimInvalid: + { + resourceId = CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneSIMInvalidUICC ); + break; + } + default: + { + if ( SimState() == EPESimNotPresent ) + { + // insert sim card -note + resourceId = CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneSimRemoved ); + } + break; + } } if ( resourceId != KErrNone ) @@ -3821,33 +3839,11 @@ &numberEntryCountParam ); TInt neLength( numberEntryCountParam.Integer() ); - if( iCustomization && iCustomization->AllowAlphaNumericMode() ) + if( neLength == 1 ) { - if ( NumberEntryManagerL()->NumberEntryInNumericModeL() ) + if ( !iStateMachine->SecurityMode()->IsSecurityMode() ) { - if ( neLength == 0 ) - { - OnlyHashInNumberEntryL(); - } - - if ( neLength == 1 ) - { - NumberEntryClearL(); - } - } - NumberEntryManagerL()->NumberEntryToggleAlphaNumericModeL(); - } - else - { - if( neLength == 1 ) - { - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - - if ( !isSecurityMode.Boolean() ) - { - OnlyHashInNumberEntryL(); - } + OnlyHashInNumberEntryL(); } } } @@ -4053,9 +4049,7 @@ &globalNotifierParam ); // uncapture App and Camera keys if not security mode - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - if ( !isSecurityMode.Boolean() ) + if ( !iStateMachine->SecurityMode()->IsSecurityMode() ) { CaptureKeysDuringCallNotificationL( EFalse ); } @@ -4064,13 +4058,6 @@ KPSUidScreenSaver, KScreenSaverAllowScreenSaver, EPhoneScreensaverAllowed ); - - // Restore keylock if phone has been locked before call. - if ( iStateMachine->PhoneStorage()->NeedToEnableKeylock() ) - { - iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLock ); - iStateMachine->PhoneStorage()->SetNeedToEnableKeylock( EFalse ); - } } // ----------------------------------------------------------- @@ -4132,6 +4119,8 @@ ESimSecurityStatusUninitialized = KStartupEnumerationFirstValue, ESimRejected, // The PUK code has been entered incorrectly, so the card is rejected. ESimUnaccepted // The SIM lock is on, so the card is unaccepted. + ESimInvalid // The Sim inserted is not same as the one provided by the + // operator, so card is invalid. */ __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::SimSecurityStatus()" ); return CPhonePubSubProxy::Instance()->Value( @@ -4709,207 +4698,6 @@ } } } - -// ----------------------------------------------------------- -// CPhoneState::GetBlockedKeyList -// ----------------------------------------------------------- -// -EXPORT_C const RArray& CPhoneState::GetBlockedKeyList() const - { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::GetBlockedKeyList( ) "); - return iStateMachine->PhoneStorage()->GetBlockedKeyList(); - } - -// ----------------------------------------------------------- -// CPhoneState::DisableHWKeysL -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneState::DisableHWKeysL() - { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisableHWKeysL( ) "); - - if( iStateMachine->PhoneStorage()->IsBlockedKeysListEmpty() ) - { - __PHONELOG( EBasic, EPhoneControl, " CPhoneState::DisableHWKeysL HW Keys Disabled " ); - - iStateMachine->PhoneStorage()->AppendBlockedKeysListL( EStdKeyNo ); - iStateMachine->PhoneStorage()->AppendBlockedKeysListL( EStdKeyYes ); - } - } - -// ----------------------------------------------------------- -// CPhoneState::DisableCallUIL -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneState::DisableCallUIL() - { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::DisableCallUIL( ) "); - - // Set Call UI state to storage - if( !iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - __PHONELOG( EBasic, EPhoneControl, " CPhoneState::DisableCallUIL CallUI Disabled " ); - - // Show keys locked note - TPhoneCmdParamNote noteParam; - noteParam.SetType( EPhoneNoteUIDisabled ); - noteParam.SetResourceId( CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneInformationNote ) ); - - HBufC* noteText = StringLoader::LoadLC( - CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneIncomingCallKeysLocked ) ); - noteParam.SetText( *noteText ); - - iViewCommandHandle->ExecuteCommandL( EPhoneViewShowNote, ¬eParam ); - CleanupStack::PopAndDestroy( noteText ); - - // Start capturing the key guard key - TPhoneCmdParamKeyCapture appKeyCaptureParam; - appKeyCaptureParam.SetKey( EStdKeyDevice7 ); - appKeyCaptureParam.SetKeyCode( EKeyDeviceF ); - appKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewStartCapturingKey, &appKeyCaptureParam ); - - // Set Call UI state to storage - iStateMachine->PhoneStorage()->SetScreenLocked( ETrue ); - } - } - -// ----------------------------------------------------------- -// CPhoneState::EnableCallUIL -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneState::EnableCallUIL() - { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::EnableCallUIL( ) "); - - if( iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - __PHONELOG( EBasic, EPhoneControl, " CPhoneState::EnableCallUIL CallUI Enabled " ); - - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote ); - - // Stop capturing the key guard key - TPhoneCmdParamKeyCapture appKeyCaptureParam; - appKeyCaptureParam.SetKey( EStdKeyDevice7 ); - appKeyCaptureParam.SetKeyCode( EKeyDeviceF ); - appKeyCaptureParam.SetCaptureType( EPhoneKeyAllEvents ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewStopCapturingKey, &appKeyCaptureParam ); - - iStateMachine->PhoneStorage()->SetScreenLocked( EFalse ); - } - } - -// ----------------------------------------------------------- -// CPhoneState::CheckDisableHWKeysAndCallUIL -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneState::CheckDisableHWKeysAndCallUIL() - { - __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneState::CheckDisableHWKeysAndCallUIL( ) "); - - if( IsKeyLockOn() || IsAutoLockOn() ) - { - // Disable HW keys if needed - if( CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) ) - { - DisableHWKeysL(); - } - - // Disable Call UI if needed - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && !CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming ) ) - { - DisableCallUIL(); - iStateMachine->PhoneStorage()->SetNeedToEnableKeylock( ETrue ); - } - } - } - -// ----------------------------------------------------------- -// CPhoneState::HandleHoldSwitchL -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneState::HandleHoldSwitchL() - { - __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneState::HandleHoldSwitchL( ) "); - - if( CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) ) - { - if( iStateMachine->PhoneStorage()->IsBlockedKeysListEmpty() ) - { - // Disable HW Keys if needed - DisableHWKeysL(); - } - else - { - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - } - } - - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && !CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming ) ) - { - if( iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - // Enable Call - EnableCallUIL(); - } - else - { - // Set keylock enabled - iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLockWithoutNote ); - // Disable Call - DisableCallUIL(); - } - } - - // Stop ringingtone - iViewCommandHandle->ExecuteCommandL( EPhoneViewStopRingTone ); - } - -// ----------------------------------------------------------- -// CPhoneState::RetainPreviousKeylockStateL -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneState::RetainPreviousKeylockStateL() - { - // Lock keypad, if keylock was enabled before incoming call. - // Also reset PhoneStorage keylock status. - if ( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) && - iStateMachine->PhoneStorage()->NeedToEnableKeylock() ) - { - iStateMachine->PhoneStorage()->SetNeedToEnableKeylock( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewEnableKeyLockWithoutNote ); - } - } - -// --------------------------------------------------------- -// CPhoneState::HandleKeyLockEnabledL -// --------------------------------------------------------- -// -EXPORT_C void CPhoneState::HandleKeyLockEnabled( TBool aKeylockEnabled ) - { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneState::HandleKeyLockEnabledL( ) "); - if( !FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) ) - { - if( !aKeylockEnabled ) - { - // Keylock disabled - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - } - } - } // --------------------------------------------------------- // CPhoneState::SetToolbarDimming @@ -4917,12 +4705,16 @@ // EXPORT_C void CPhoneState::SetToolbarDimming( TBool aDimmed ) { - if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) + if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) { - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( aDimmed ); - TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetToolbarDimming, &booleanParam )); + // Check that we are not undimming toolbar in security mode + if ( !( !aDimmed && iStateMachine->SecurityMode()->IsSecurityMode() ) ) + { + TPhoneCmdParamBoolean booleanParam; + booleanParam.SetBoolean( aDimmed ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( + EPhoneViewSetToolbarDimming, &booleanParam )); + } } } @@ -4941,6 +4733,54 @@ } } +// --------------------------------------------------------- +// CPhoneState::HandleEasyDialingCommandsL +// --------------------------------------------------------- +// +void CPhoneState::HandleEasyDialingCommandsL( TInt aCommandId ) + { + switch ( aCommandId ) + { + case EPhoneCmdUpdateCba: + iCbaManager->UpdateInCallCbaL(); + break; + + case EPhoneDialerValidNumber: + { + TPhoneCmdParamBoolean command; + command.SetBoolean( EFalse ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetInvalidCsPhoneNumberFlag, &command ); + } + break; + + case EPhoneDialerInvalidNumber: + { + TPhoneCmdParamBoolean command; + command.SetBoolean( ETrue ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetInvalidCsPhoneNumberFlag, &command ); + } + break; + + case EPhoneCmdBlockingDialogLaunched: + { + TPhoneCmdParamBoolean param; + param.SetBoolean( ETrue ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetBlockingDialogStatus, ¶m ); + } + break; + + case EPhoneCmdBlockingDialogClosed: + { + TPhoneCmdParamBoolean param; + param.SetBoolean( EFalse ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetBlockingDialogStatus, ¶m ); + } + break; + + default: + break; + } + } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp --- a/phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestatecallsetup.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -566,13 +566,8 @@ // void CPhoneStateCallSetup::HandleConnectedL( TInt aCallId ) { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleConnectedL()"); - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateCallSetup::HandleConnectedL()"); + // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); @@ -631,7 +626,7 @@ // Show the number entry if it exists SetNumberEntryVisibilityL(ETrue); } - else if ( NeedToSendToBackgroundL() ) + else if ( NeedToReturnToForegroundAppL() ) { __PHONELOG( EBasic,EPhoneControl,"CPhoneStateCallSetup::elseif1"); // Continue displaying current app but set up the diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestateidle.cpp --- a/phoneapp/phoneuicontrol/src/cphonestateidle.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestateidle.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -58,6 +58,8 @@ #include "phoneui.pan" #include "phoneconstants.h" #include "mphonecustomization.h" +#include +#include "mphonesecuritymodeobserver.h" //CONSTANTS const TInt KMaxParamLength = 1024; @@ -126,19 +128,15 @@ TEventCode aEventCode ) { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateIdle::HandleKeyEventL( ) "); - // Security mode check - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - // Number entry is blocked, if active Query if ( !IsAnyQueryActiveL() ) { // Handle numeric keys when key events are received in idle state HandleNumericKeyEventL( aKeyEvent, aEventCode ); } - else if ( isSecurityMode.Boolean() && CPhoneKeys::IsNumericKey( - aKeyEvent, aEventCode ) ) + else if ( iStateMachine->SecurityMode()->IsSecurityMode() + && CPhoneKeys::IsNumericKey( aKeyEvent, aEventCode ) ) { iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote ); // Handle numeric keys when key events are received in single state @@ -212,10 +210,7 @@ { if ( IsNumberEntryUsedL() ) { - // Security mode check - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - + TPhoneCmdParamInteger numberEntryCountParam; iViewCommandHandle->ExecuteCommandL( EPhoneViewGetNumberEntryCount, &numberEntryCountParam ); @@ -232,7 +227,7 @@ return; } - else if ( neLength == 0 && !isSecurityMode.Boolean()) + else if ( neLength == 0 && !iStateMachine->SecurityMode()->IsSecurityMode() ) { // start logs iViewCommandHandle->HandleCommandL( @@ -244,17 +239,12 @@ // If dialer is not open but phone is in foreground and phone receives // send-key event we have to check if security mode is true and if it // is then open emergency dialer. - else if ( !IsNumberEntryUsedL() ) + else if ( !IsNumberEntryUsedL() ) { - // Security mode check - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - - if ( isSecurityMode.Boolean()) - { - // launch dialer. - HandleCommandL(EPhoneNumberAcqSecurityDialer); - } + if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + iViewCommandHandle->HandleCommandL( EPhoneViewOpenNumberEntry ); + } } } else // iOnScreenDialer false, non-touch. @@ -265,16 +255,12 @@ case EKeyApplication0: { - // Security mode - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - // If dialer is not open but phone is in foreground and phone receives // applicaion-key event we have to open emergency dialer. // Securitymode check because Applicationkey only open dialer in securitymode. - if ( isSecurityMode.Boolean() && !IsNumberEntryUsedL() ) + if ( iStateMachine->SecurityMode()->IsSecurityMode() && !IsNumberEntryUsedL() ) { - HandleCommandL(EPhoneNumberAcqSecurityDialer); + iViewCommandHandle->HandleCommandL( EPhoneViewOpenNumberEntry ); } } break; @@ -307,7 +293,14 @@ case EKeyEnter: if ( IsNumberEntryVisibleL() ) { - HandleCommandL( EPhoneCmdOptions ); + if ( IsDialingExtensionInFocusL() ) + { + HandleCommandL( EEasyDialingEnterKeyAction ); + } + else + { + HandleCommandL( EPhoneCmdOptions ); + } } break; #endif @@ -350,7 +343,7 @@ // Show the number entry if it exists SetNumberEntryVisibilityL(ETrue); } - else if ( NeedToSendToBackgroundL() ) + else if ( NeedToReturnToForegroundAppL() ) { // Continue displaying current app but set up the // idle screen in the background @@ -422,9 +415,6 @@ // Display incoming call DisplayIncomingCallL( aCallId ); - // Disable HW keys and Call UI if needed - CheckDisableHWKeysAndCallUIL(); - EndUiUpdate(); EndTransEffect(); @@ -541,9 +531,8 @@ // Open number entry menubar TPhoneCmdParamInteger integerParam; - integerParam.SetInteger( - CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneNumberAcqMenubar ) ); + TInt menuId( GetNumberAcqMenuIdL() ); + integerParam.SetInteger( menuId ); iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, &integerParam ); @@ -562,8 +551,10 @@ break; case EPhoneCmdBack: + BeginTransEffectLC( ENumberEntryClose ); HandleBackCommandL(); - break; + EndTransEffect(); + break; default: commandStatus = CPhoneState::HandleCommandL( aCommand ); @@ -593,7 +584,7 @@ ResolveResourceID( EPhoneNumberAcqOkMenubar ) ); iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarOpen, &integerParam ); - commandStatus = ETrue; + commandStatus = ETrue; } break; @@ -649,6 +640,7 @@ void CPhoneStateIdle::HandleBackCommandL() { TBool previousApp(EFalse); + // If previous app activation is true then open // previous application. if ( iOnScreenDialer && @@ -658,6 +650,7 @@ iViewCommandHandle->ExecuteCommandL( EPhoneViewGetActivatePreviousApp, &booleanParam ); + if ( booleanParam.Boolean() ) { // Open previous app. @@ -670,7 +663,7 @@ iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateFSW ); previousApp = ETrue; - } + } } if ( !previousApp ) @@ -678,9 +671,11 @@ // Remove number entry from screen iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); + // Do state-specific operation when number entry is cleared HandleNumberEntryClearedL(); - } + } + } // ----------------------------------------------------------- @@ -738,12 +733,12 @@ // Capture keys when there is an incoming call CaptureKeysDuringCallNotificationL( ETrue ); - // Indicate that the Phone needs to be sent to the background if - // an application other than the top application is in the foreground + // Indicate that the Foreground application needs to be sent to the foreground + // after call is ended. TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( !TopAppIsDisplayedL() ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, &booleanParam ); // Bring Phone app in the foreground @@ -781,15 +776,6 @@ // Capture keys when the phone is dialling CaptureKeysDuringCallNotificationL( ETrue ); - - // Indicate that the Phone needs to be sent to the background if - // an application other than the top application is in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( !TopAppIsDisplayedL() ); - - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, - &booleanParam ); // Bring Phone app in the foreground TPhoneCmdParamInteger uidParam; @@ -841,9 +827,6 @@ { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateIdle::HandlePhoneForegroundEventL( ) "); - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - TBool activatePhone = CPhonePubSubProxy::Instance()->Value( KPSUidAiInformation, KActiveIdleState ) == EPSAiNumberEntry; @@ -871,7 +854,7 @@ // If dialer is open add icon to FSW list. iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateFSW ); } - else if ( !IsNumberEntryUsedL() && !isSecurityMode.Boolean() ) + else if ( !IsNumberEntryUsedL() && !iStateMachine->SecurityMode()->IsSecurityMode() ) { // Bring Idle app to the foreground iViewCommandHandle->ExecuteCommandL( EPhoneViewBringIdleToForeground ); @@ -1148,21 +1131,22 @@ else if ( !TopAppIsDisplayedL() ) { // Phone might not be the topmost app since it has - // some dialog/query open therefore we need to check this - // and remove dialog/phone. - if ( IsAnyQueryActiveL() ) + // some dialog/query open therefore we need to remove dialog/phone. + + if ( !IsSimStateNotPresentWithSecurityModeEnabled() ) { - if ( !IsSimStateNotPresentWithSecurityModeEnabled() ) - { - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); - } + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); + } + // Remove number entry from screen + iViewCommandHandle->ExecuteCommandL( + EPhoneViewRemoveNumberEntry ); - // Remove number entry from screen - iViewCommandHandle->ExecuteCommandL( - EPhoneViewRemoveNumberEntry ); - } - // Bring Idle app to the foreground + // Bring Idle app to the foreground iViewCommandHandle->ExecuteCommandL( EPhoneViewBringIdleToForeground ); + + // Updates Task list + iViewCommandHandle->ExecuteCommandL( EPhoneViewUpdateFSW ); + } } else if ( IsNumberEntryUsedL() ) @@ -1307,32 +1291,31 @@ // ----------------------------------------------------------------------------- // TBool CPhoneStateIdle::CheckAppLaunchingL( const TKeyCode aCode ) - { - TBool valuesFetched( EFalse ); - - if( !IsSimOk() ) - { - return valuesFetched; - } - - TPhoneCmdParamAppInfo appInfo; - HBufC8* appParam = HBufC8::NewL( KMaxParamLength ); - CleanupStack::PushL( appParam ); + { + TBool valuesFetched( EFalse ); + + if( !IsSimOk() ) + { + return valuesFetched; + } + + TPhoneCmdParamAppInfo appInfo; + HBufC8* appParam = HBufC8::NewL( KMaxParamLength ); + CleanupStack::PushL( appParam ); - TPhoneCmdParamInteger numberEntryCount; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetNumberEntryCount, - &numberEntryCount ); + TBool isValidAppLaunchingKeyEvent = ETrue; - TBool isValidAppLaunchingKeyEvent = EFalse; - if ( iCustomization && iCustomization->AllowAlphaNumericMode() && - TKeyCode( KPhoneDtmfHashCharacter ) == aCode ) + // By-pass checking of number entry length in case of #-character. + // #-character is handled differently from other keys, and number + // entry length has been checked earlier. Checking number entry length + // for #-character is difficult here, because we cannot know if FEP + // has removed the long-# from number entry or not. + if ( TKeyCode( KPhoneDtmfHashCharacter ) != aCode ) { - // If alphanumeric mode is supported FEP changes text input mode with - // long hash and removes hash from number entry. - isValidAppLaunchingKeyEvent = ( numberEntryCount.Integer() == 0 ); - } - else - { + TPhoneCmdParamInteger numberEntryCount; + iViewCommandHandle->ExecuteCommandL( EPhoneViewGetNumberEntryCount, + &numberEntryCount ); + isValidAppLaunchingKeyEvent = ( numberEntryCount.Integer() == 1 ); } @@ -1340,21 +1323,21 @@ { TRAPD( err, CPhoneCenRepProxy::Instance()->FetchValuesFromCenRepL( - appInfo, aCode, appParam, valuesFetched ) ); + appInfo, aCode, appParam, valuesFetched ) ); if ( KErrNone == err && valuesFetched ) { // Remove the number entry window iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNumberEntry ); - // Stop playing DTMF tone - iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF ); + // Stop playing DTMF tone + iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF ); TPhoneCommandParam* phoneCommandParam = static_cast( &appInfo ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewActivateAppViewConventional, - phoneCommandParam ); + iViewCommandHandle->ExecuteCommandL( + EPhoneViewActivateAppViewConventional, + phoneCommandParam ); // Continue displaying current app but set up the // idle screen in the background @@ -1363,7 +1346,7 @@ } CleanupStack::PopAndDestroy( appParam ); return valuesFetched; - } + } // ----------------------------------------------------------- // CPhoneStateIdle::NumberForSpeedDialLocationL @@ -1422,7 +1405,12 @@ else #endif // _DEBUG { - if ( IsSpeedDialNumber( *phoneNumber ) ) + if ( IsDialingExtensionInFocusL() ) + { + CPhoneState::HandleCommandL( EEasyDialingVoiceCall ); + } + + else if ( IsSpeedDialNumber( *phoneNumber ) ) { // Handle speed dial SpeedDialL( (*phoneNumber)[0], aSendKey ? EDialMethodSendCommand : EDialMethodMenuSelection ); @@ -1439,4 +1427,29 @@ } } +// ----------------------------------------------------------- +// CPhoneStateIdle::HandleVoiceCallCommandL() +// ----------------------------------------------------------- +// +TInt CPhoneStateIdle::GetNumberAcqMenuIdL() + { + TInt menuId = CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneNumberAcqMenubar ); + + // Use easy dialing menu id, if easydialing is in focus. + // Otherwise use number acquisition menu id. + if ( IsDialingExtensionInFocusL() ) + { + // Fetch easydialing menu id, check its validity and assign to menuId + TPhoneCmdParamInteger integerParam; + iViewCommandHandle->ExecuteCommandL( + EPhoneViewGetEasyDialingMenuId, &integerParam ); + if ( integerParam.Integer() ) + { + menuId = integerParam.Integer(); + } + } + return menuId; + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestateincall.cpp --- a/phoneapp/phoneuicontrol/src/cphonestateincall.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestateincall.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 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" @@ -26,6 +26,7 @@ #include #include #include +#include #include "cphonestateincall.h" #include "tphonecmdparamboolean.h" @@ -37,6 +38,7 @@ #include "tphonecmdparamcallstatedata.h" #include "tphonecmdparamsfidata.h" #include "mphonestatemachine.h" +#include "mphonesecuritymodeobserver.h" #include "phonestatedefinitions.h" #include "phoneviewcommanddefinitions.h" #include "phoneui.hrh" @@ -51,6 +53,8 @@ #include "cphonemediatorsender.h" #include "cphoneterminateallconnectionscommand.h" #include "mphonecustomization.h" +#include "easydialingcommands.hrh" + // ================= MEMBER FUNCTIONS ======================= @@ -74,10 +78,7 @@ // EXPORT_C CPhoneStateInCall::~CPhoneStateInCall() { - if( iDtmfWaitCharTimer ) - { - delete iDtmfWaitCharTimer; - } + delete iDtmfWaitCharTimer; } // ----------------------------------------------------------- @@ -146,7 +147,15 @@ } else if ( IsNumberEntryVisibleL() ) { - HandleCommandL( EPhoneCmdOptions ); + if ( IsDialingExtensionInFocusL() ) + { + iViewCommandHandle->HandleCommandL( + EEasyDialingEnterKeyAction ); + } + else + { + HandleCommandL( EPhoneCmdOptions ); + } } break; #endif @@ -296,30 +305,43 @@ SetDefaultFlagsL(); if ( IsNumberEntryUsedL() ) { - // Show the number entry if it exists and update cba's. - SetNumberEntryVisibilityL( ETrue ); - - // Close dtmf dialer when call is disconnected. - if ( IsDTMFEditorVisibleL() ) - { - CloseDTMFEditorL(); + if ( NeedToReturnToForegroundAppL() ) + { + // Return phone to the background if menu application is needed to foreground. + iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); + + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); + + // Set Number Entry CBA + iCbaManager->SetCbaL( EPhoneNumberAcqCBA ); + } + else + { + // Show the number entry if it exists and update cba's. + SetNumberEntryVisibilityL( ETrue ); - // Display idle screen and update CBA's - DisplayIdleScreenL(); + // Close dtmf dialer when call is disconnected. + if ( IsDTMFEditorVisibleL() ) + { + CloseDTMFEditorL(); + + // Display idle screen and update CBA's + DisplayIdleScreenL(); + } + else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() ) + { + CloseCustomizedDialerL(); + // Display idle screen and update CBA's + DisplayIdleScreenL(); + } } - else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() ) - { - CloseCustomizedDialerL(); - // Display idle screen and update CBA's - DisplayIdleScreenL(); - } } else { // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - if ( !TopAppIsDisplayedL() || IsAutoLockOn() ) + if ( !TopAppIsDisplayedL() || IsAutoLockOn() || NeedToReturnToForegroundAppL() ) { // Continue displaying current app but set up the // idle screen in the background @@ -359,11 +381,11 @@ EXPORT_C void CPhoneStateInCall::UpdateCbaL( TInt aResource ) { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateInCall::UpdateCbaL() "); - if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) + if ( iOnScreenDialer && IsNumberEntryVisibleL() && IsDTMFEditorVisibleL() ) { iCbaManager->SetCbaL( EPhoneDtmfDialerCBA ); } - else if ( iOnScreenDialer && IsCustomizedDialerVisibleL() ) + else if ( iOnScreenDialer && IsNumberEntryVisibleL() && IsCustomizedDialerVisibleL() ) { iCbaManager->SetCbaL( CustomizedDialerCbaResourceIdL() ); } @@ -590,9 +612,13 @@ // Activate DTMF list query when cancel is pressed. // Forwards command to the framework - HandleCommandL( EPhoneInCallCmdDtmfListQuery ); + if ( !iStateMachine->SecurityMode()->IsSecurityMode() ) + { + HandleCommandL( EPhoneInCallCmdDtmfListQuery ); + } } break; + case EPhoneDtmfDialerExit: { CloseDTMFEditorL(); @@ -618,7 +644,14 @@ break; //DTMF list query - dialog case EPhoneInCallCmdDtmfListQuery: - LaunchDtmfListQueryL(); + if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + HandleCommandL( EPhoneInCallCmdDtmfManualQuery ); + } + else + { + LaunchDtmfListQueryL(); + } break; //DTMF list query - Search @@ -762,7 +795,7 @@ case EPhoneCmdEnd: CloseDtmfQueryL(); - CPhoneState::DisconnectCallL(); + DisconnectCallL(); break; // 'End all calls' from menu @@ -807,6 +840,10 @@ commandStatus = CPhoneState::HandleCommandL( aCommand ); break; + case EPhoneInCallCmdShareLiveVideo: + iViewCommandHandle->ExecuteCommandL( EPhoneViewLaunchMultimediaSharing ); + break; + default: commandStatus = CPhoneState::HandleCommandL( aCommand ); break; @@ -1281,7 +1318,7 @@ } // ----------------------------------------------------------------------------- -// CPhoneStateInCall::LockKeysL +// CPhoneStateInCall::LockKeypadL // ----------------------------------------------------------------------------- // void CPhoneStateInCall::LockKeypadL() @@ -1590,4 +1627,30 @@ &queryDialogParam ); } +// ----------------------------------------------------------------------------- +// CPhoneStateInCall::HandlePropertyChangedL +// from CPhoneState +// ----------------------------------------------------------------------------- +// +EXPORT_C void CPhoneStateInCall::HandlePropertyChangedL( + const TUid& aCategory, const TUint aKey, const TInt aValue) + { + if ( aCategory == KPSUidCoreApplicationUIs && + aKey == KCoreAppUIsVideoSharingIndicator ) + { + if ( aValue == ECoreAppUIsVideoSharingIndicatorOn ) + { + SetTouchPaneButtons( EPhoneIncallVideoShareButtons ); + } + else + { + SetTouchPaneButtons( EPhoneIncallButtons ); + } + } + else + { + CPhoneState::HandlePropertyChangedL( aCategory, aKey, aValue ); + } + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestateincoming.cpp --- a/phoneapp/phoneuicontrol/src/cphonestateincoming.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestateincoming.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -54,7 +54,7 @@ #include "cphonemediatorsender.h" #include "cphonereleasecommand.h" #include "mphonecustomization.h" -#include "mphonestorage.h" +#include "mphonesecuritymodeobserver.h" // ================= MEMBER FUNCTIONS ======================= @@ -228,14 +228,6 @@ } break; - case EKeyDeviceF: - { - __PHONELOG( EBasic, EPhoneUIStates, - "CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL-deviceF" ); - HandleHoldSwitchL(); - } - break; - default: break; } @@ -380,26 +372,9 @@ // Stop tone playing, if necessary iViewCommandHandle->ExecuteCommandL( EPhoneViewStopRingTone ); - if( IsVideoCall( aCallId ) && !IsAutoLockOn() ) - { - // For keeping video call on top - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - } BeginTransEffectLC( ENumberEntryOpen ); - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - BeginUiUpdateLC(); // Update single call @@ -439,6 +414,11 @@ { resourceId = EPhoneNumberAcqCBA; } + else if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + // Use 'answer & reject' softkeys if security mode is enabled. + resourceId = EPhoneCallHandlingIncomingRejectCBA; + } else if ( softRejectParam.Boolean() ) { resourceId = EPhoneCallHandlingIncomingSoftRejectCBA; @@ -458,16 +438,6 @@ BeginTransEffectLC( ENumberEntryOpen ); BeginUiUpdateLC(); - // Enable call UI - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - // Remove call iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId ); // Close menu bar, if it is displayed @@ -485,7 +455,7 @@ if ( IsNumberEntryUsedL() ) { - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); @@ -501,7 +471,7 @@ SetNumberEntryVisibilityL(ETrue); } } - else if ( NeedToSendToBackgroundL() || + else if ( NeedToReturnToForegroundAppL() || SoftRejectMessageEditorIsDisplayedL() ) { // Continue displaying current app but set up the @@ -873,33 +843,4 @@ &callHeaderParam ); } -// --------------------------------------------------------- -// CPhoneStateIncoming::HandleKeyLockEnabledL -// --------------------------------------------------------- -// -EXPORT_C void CPhoneStateIncoming::HandleKeyLockEnabled( TBool aKeylockEnabled ) - { - __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateIncoming::HandleKeyLockEnabledL( ) "); - if( !FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) ) - { - if( aKeylockEnabled ) - { - // Keylock enabled - if( iStateMachine->PhoneStorage()->IsBlockedKeysListEmpty() ) - { - // Disable HW Keys if needed - DisableHWKeysL(); - } - } - else - { - // Keylock disabled - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - } - } - } - // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestatemachine.cpp --- a/phoneapp/phoneuicontrol/src/cphonestatemachine.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestatemachine.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -29,8 +29,8 @@ #include "cphonestateincall.h" #include "phonestatedefinitions.h" #include "phonelogger.h" -#include "cphonestorage.h" -#include "mphonestorage.h" +#include "mphonesecuritymodeobserver.h" +#include "mphonesecuritymessagehandler.h" // ================= MEMBER FUNCTIONS ======================= @@ -57,34 +57,14 @@ { if( iState == iIdleState ) { - delete iState; - iState = NULL; + // Avoid deleting idle state instance twice. + // If state is idle, iState points to idle state instance. iIdleState = NULL; } - else - { - if( iState ) - { - delete iState; - iState = NULL; - } - if( iIdleState ) - { - delete iIdleState; - iIdleState = NULL; - } - } - if( iPhoneEngine ) - { - delete iPhoneEngine; - iPhoneEngine = NULL; - } - if( iPhoneStorage ) - { - delete iPhoneStorage; - iPhoneStorage = NULL; - } - } + delete iState; + delete iIdleState; + delete iPhoneEngine; + } // --------------------------------------------------------- // CPhoneStateMachine::SetPhoneEngine @@ -183,19 +163,66 @@ PhoneEngineInfo()->SetCallId( aCallId ); } + // ----------------------------------------------------------- -// CPhoneStateMachine::PhoneStorage +// CPhoneStateMachine::SecurityMode +// ----------------------------------------------------------- +// +EXPORT_C MPhoneSecurityModeObserver* CPhoneStateMachine::SecurityMode() + { + return iSecurityModeObserver; + } + +// ----------------------------------------------------------- +// CPhoneStateMachine::SetSecurityModeObserver +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneStateMachine::SetSecurityModeObserver( MPhoneSecurityModeObserver* aObserver ) + { + iSecurityModeObserver = aObserver; + } + +// ----------------------------------------------------------- +// CPhoneStateMachine::SetSecurityMessageHandler +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneStateMachine::SetSecurityMessageHandler( MPhoneSecurityMessageHandler* aHandler ) + { + iSecurityMessageHandler = aHandler; + } + +// ----------------------------------------------------------- +// CPhoneStateMachine::HandlePhoneEngineMessageL // ----------------------------------------------------------- // -EXPORT_C MPhoneStorage* CPhoneStateMachine::PhoneStorage() - { - if ( iPhoneStorage == NULL ) - { - TInt err( KErrNone ); - TRAP( err, iPhoneStorage = CPhoneStorage::NewL()); - __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); - } - return iPhoneStorage; - } +EXPORT_C void CPhoneStateMachine::HandlePhoneEngineMessageL(const TInt aMessage, + TInt aCallId ) + { + // Forward engine messages to security mode state and current phone state + // instance. + if ( iSecurityMessageHandler ) + { + iSecurityMessageHandler->HandlePhoneEngineMessageL( aMessage, aCallId ); + } + + State()->HandlePhoneEngineMessageL( aMessage, aCallId ); + } +// ----------------------------------------------------------- +// CPhoneStateMachine::HandlePropertyChangedL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneStateMachine::HandlePropertyChangedL(const TUid& aCategory, + const TUint aKey, + const TInt aValue ) + { + // Forward P&S key changes to security mode state and current phone state + // instance. + if ( iSecurityMessageHandler ) + { + iSecurityMessageHandler->HandlePropertyChangedL( aCategory, aKey, aValue ); + } + State()->HandlePropertyChangedL( aCategory, aKey, aValue ); + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonestatestartup.cpp --- a/phoneapp/phoneuicontrol/src/cphonestatestartup.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonestatestartup.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 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" @@ -24,6 +24,7 @@ #include "tphonecmdparamboolean.h" #include "phonelogger.h" #include "phonerssbase.h" +#include "mphonesecuritymodeobserver.h" // ================= MEMBER FUNCTIONS ======================= @@ -134,7 +135,7 @@ // CPhoneStateStartup::HandlePEConstructionReadyL // ----------------------------------------------------------- // -void CPhoneStateStartup::HandlePEConstructionReadyL( TInt /*aCallId*/ ) +EXPORT_C void CPhoneStateStartup::HandlePEConstructionReadyL( TInt /*aCallId*/ ) { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandlePEConstructionReadyL() "); // Indicate that phone engine construction is ready @@ -143,25 +144,7 @@ // Only go to the idle state if phone is also ready if ( iPhoneReady ) { - // Security mode check. - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - if ( !isSecurityMode.Boolean() && !IsSimOk() ) - { - TPhoneCmdParamBoolean securityMode; - securityMode.SetBoolean( ETrue ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode ); - iCreateNote = CIdle::NewL( CActive::EPriorityHigh ); - - CreateAndShowNoteAfterIdle(); - } - // Go to idle state - SetDefaultFlagsL(); - iCbaManager->UpdateCbaL( EPhoneEmptyCBA ); - - iViewCommandHandle->ExecuteCommand( EPhoneViewPrepareIcons ); - - iStateMachine->ChangeState( EPhoneStateIdle ); + InitializationReadyL(); } } @@ -232,26 +215,7 @@ // Only go to idle state when Phone engine is also ready if ( iPEReady ) { - // Security mode check. - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - if ( !isSecurityMode.Boolean() && !IsSimOk() ) - { - TPhoneCmdParamBoolean securityMode; - securityMode.SetBoolean( ETrue ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode ); - iCreateNote = CIdle::NewL( CActive::EPriorityHigh ); - - CreateAndShowNoteAfterIdle(); - } - // Go to idle state - SetDefaultFlagsL(); - iCbaManager->UpdateCbaL( EPhoneEmptyCBA ); - - iViewCommandHandle->ExecuteCommand( EPhoneViewPrepareIcons ); - iViewCommandHandle->ExecuteCommand( EPhoneViewLoadPlugins ); - - iStateMachine->ChangeState( EPhoneStateIdle ); + InitializationReadyL(); } } @@ -265,15 +229,9 @@ { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::HandleIdleForegroundEventL( ) "); // Security mode check. - TPhoneCmdParamBoolean isSecurityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &isSecurityMode ); - if ( !isSecurityMode.Boolean() && !IsSimOk() ) + if ( !iStateMachine->SecurityMode()->IsSecurityMode() && !IsSimOk() ) { - TPhoneCmdParamBoolean securityMode; - securityMode.SetBoolean( ETrue ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetSecurityMode, &securityMode ); iCreateNote = CIdle::NewL( CActive::EPriorityHigh ); - CreateAndShowNoteAfterIdle(); } } @@ -310,4 +268,27 @@ return KErrNone; } +// ----------------------------------------------------------------------------- +// CPhoneStateStartup::InitializationReadyL +// +// ----------------------------------------------------------------------------- +// +void CPhoneStateStartup::InitializationReadyL() + { + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStateStartup::InitializationReady() "); + iStateMachine->SecurityMode()->Initialize(); + if ( !IsSimOk() ) + { + iCreateNote = CIdle::NewL( CActive::EPriorityHigh ); + CreateAndShowNoteAfterIdle(); + } + // Go to idle state + SetDefaultFlagsL(); + iCbaManager->UpdateCbaL( EPhoneEmptyCBA ); + iViewCommandHandle->ExecuteCommand( EPhoneViewPrepareIcons ); + iViewCommandHandle->ExecuteCommand( EPhoneViewLoadPlugins ); + iStateMachine->ChangeState( EPhoneStateIdle ); + } + + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphonesystemeventhandler.cpp --- a/phoneapp/phoneuicontrol/src/cphonesystemeventhandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphonesystemeventhandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 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" @@ -22,6 +22,9 @@ #include #include #include +#include +#include +#include #include "cphonesystemeventhandler.h" #include "mphonestate.h" @@ -87,6 +90,13 @@ KPSUidStartup, KStartupSimSecurityStatus, this ); + + // Set up notifications for autolock state changes. + CPhonePubSubProxy::Instance()->NotifyChangeL( + KPSUidCoreApplicationUIs, + KCoreAppUIsAutolockStatus, + this ); + if ( CPhoneCenRepProxy::Instance()->IsTelephonyFeatureSupported( KTelephonyLVFlagSwivelInDevice )) @@ -97,6 +107,24 @@ KHWRMGripStatus, this ); } + + if ( FeatureManager::FeatureSupported( KFeatureIdFfSimlockUi ) ) + { + //Set up notifications for Sim Lock Dialogs values. + CPhonePubSubProxy::Instance()->NotifyChangeL( + KSimLockProperty, + ESimLockActiveStatus, + this ); + } + + if ( FeatureManager::FeatureSupported( KFeatureIdFfEntryPointForVideoShare ) ) + { + // Set up notifications for Video Share (un)availability + CPhonePubSubProxy::Instance()->NotifyChangeL( + KPSUidCoreApplicationUIs, + KCoreAppUIsVideoSharingIndicator, + this ); + } } // --------------------------------------------------------- @@ -175,15 +203,6 @@ iStateMachine->State()->HandleIdleForegroundEventL(); } -// --------------------------------------------------------- -// CPhoneSystemEventHandler::HandleKeyLockEnabled -// --------------------------------------------------------- -// -void CPhoneSystemEventHandler::HandleKeyLockEnabled( TBool aKeylockEnabled ) - { - iStateMachine->State()->HandleKeyLockEnabled( aKeylockEnabled ); - } - // ----------------------------------------------------------- // CPhoneSystemEventHandler::HandleEnvironmentChangeL // ----------------------------------------------------------- @@ -211,7 +230,7 @@ const TUint aKey, const TInt aValue ) { - iStateMachine->State()->HandlePropertyChangedL( aCategory, aKey, aValue ); + iStateMachine->HandlePropertyChangedL( aCategory, aKey, aValue ); } // ----------------------------------------------------------- diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp --- a/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -19,6 +19,7 @@ // INCLUDE FILES #include // for FeatureManager #include +#include #include "cphoneuicontroller.h" #include "pevirtualengine.h" @@ -26,7 +27,6 @@ #include "cphoneenginehandler.h" #include "cphonesystemeventhandler.h" #include "cphoneremotecontrolhandler.h" -#include "mphoneviewcommandhandle.h" #include "phonestatedefinitions.h" #include "phonelogger.h" #include "phoneconstants.h" @@ -35,6 +35,8 @@ #include "cphonecenrepproxy.h" #include "cphonemediatorfactory.h" #include "tphonecmdparamnumberentryobserver.h" +#include "cphonesecuritymodeobserver.h" +#include "cphoneviewcontroller.h" // ================= MEMBER FUNCTIONS ======================= @@ -53,12 +55,11 @@ // (other items were commented in a header). // ----------------------------------------------------------- // -void CPhoneUIController::ConstructL( - MPhoneViewCommandHandle* aViewCommandHandle ) +void CPhoneUIController::ConstructL( CPhoneViewController& aViewController ) { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneUIController::ConstructL()"); // Creates correct protocol DLL - CreateProtocolDllL( aViewCommandHandle ); + CreateProtocolDllL( aViewController ); // Reference the phone state machine iStateMachine = CPhoneStateHandle::Instance()->StateMachine(); @@ -71,7 +72,7 @@ iRemoteControlHandler = CPhoneRemoteControlHandler::NewL( iStateMachine ); // Create the key event forwarder iKeyEventForwarder = CPhoneKeyEventForwarder::NewL( - CEikonEnv::Static()->EikAppUi()->ClientRect(), iStateMachine, aViewCommandHandle ); + CEikonEnv::Static()->EikAppUi()->ClientRect(), iStateMachine, &aViewController ); TInt leaveCode( 0 ); TInt retry( 0 ); @@ -111,13 +112,22 @@ // Store the phone engine information in the state machine iStateMachine->SetPhoneEngine( iPhoneEngine ); - + + // Set up security mode observer. + iSecurityModeObserver = CPhoneSecurityModeObserver::NewL(); + iSecurityModeObserver->SetPhoneEngineInfo( iPhoneEngine->EngineInfo() ); + iStateMachine->SetSecurityModeObserver( iSecurityModeObserver ); + iStateMachine->SetSecurityMessageHandler( iSecurityModeObserver ); + // Set Number Entry observer TPhoneCmdParamNumberEntryObserver cmdParamNumberEntryObserver; cmdParamNumberEntryObserver.SetObserver( TCallBack( HandlePhoneNumberEditorCallBack, this ) ); - aViewCommandHandle->ExecuteCommand( EPhoneViewSetNumberEntryObserver, + aViewController.ExecuteCommand( EPhoneViewSetNumberEntryObserver, &cmdParamNumberEntryObserver); + // Set up controller to observe security mode state changes. + iStateMachine->SecurityMode()->RegisterStateObserver( aViewController ); + // Go to the startup state iStateMachine->ChangeState( EPhoneStateStartup ); @@ -131,12 +141,10 @@ // ----------------------------------------------------------------------------- // EXPORT_C CPhoneUIController* CPhoneUIController::NewL( - MPhoneViewCommandHandle* aViewCommandHandle ) + CPhoneViewController& aViewCommandHandle ) { - __ASSERT_DEBUG( aViewCommandHandle, - Panic( EPhoneCtrlParameterNotInitialized ) ); - - CPhoneUIController* self = new( ELeave ) CPhoneUIController; + + CPhoneUIController* self = new( ELeave ) CPhoneUIController(); CleanupStack::PushL( self ); self->ConstructL( aViewCommandHandle ); @@ -153,6 +161,7 @@ EXPORT_C CPhoneUIController::~CPhoneUIController() { __LOGMETHODSTARTEND(EPhoneControl, "CPhoneUIController::~CPhoneUIController()"); + delete iSecurityModeObserver; delete iRemoteControlHandler; delete iSystemEventHandler; delete iEngineHandler; @@ -325,7 +334,14 @@ // Send key up message to engine so that we wouldn't accidentally play // any DTMF tone. - iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF ); + + // DTMF tone is not ended if command is EPhoneDialerValidNumber or + // EPhoneDialerInvalidNumber. These commands result from + // user pressing numbers, and they must not interfere with tones. + if ( ! ( aCommand == EPhoneDialerValidNumber || aCommand == EPhoneDialerInvalidNumber ) ) + { + iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF ); + } return iStateMachine->State()->HandleCommandL( aCommand ); } @@ -340,22 +356,11 @@ return iStateMachine->State()->ProcessCommandL( aCommand ); } - -// --------------------------------------------------------- -// CPhoneUIController::HandleKeyLockEnabled -// --------------------------------------------------------- -// -EXPORT_C void CPhoneUIController::HandleKeyLockEnabled( TBool aKeylockEnabled ) - { - iSystemEventHandler->HandleKeyLockEnabled( aKeylockEnabled ); - } - // --------------------------------------------------------- // CPhoneUIController::CreateProtocolDllL // --------------------------------------------------------- // -void CPhoneUIController::CreateProtocolDllL( - MPhoneViewCommandHandle* aViewCommandHandle ) +void CPhoneUIController::CreateProtocolDllL( CPhoneViewController& aViewController ) { TBool voipSupported( EFalse ); @@ -374,14 +379,14 @@ if( voipSupported ) { iStateHandle = CPhoneStateHandle::CreateL( - aViewCommandHandle, + &aViewController, KVoIPExtension, KUidAppVoIPExtensionStates ); } else { iStateHandle = CPhoneStateHandle::CreateL( - aViewCommandHandle, + &aViewController, KGSMProtocol, KUidAppGSMStates ); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/bwins/phoneuistatesu.def --- a/phoneapp/phoneuistates/bwins/phoneuistatesu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/bwins/phoneuistatesu.def Fri Apr 23 14:59:43 2010 +0100 @@ -1,65 +1,73 @@ EXPORTS - ??1CPhoneResourceResolverGSM@@UAE@XZ @ 1 NONAME ; CPhoneResourceResolverGSM::~CPhoneResourceResolverGSM(void) - ?HandleKeyMessageL@CPhoneSingleCall@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 2 NONAME ; void CPhoneSingleCall::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?ConstructL@CPhoneTwoSingles@@MAEXXZ @ 3 NONAME ; void CPhoneTwoSingles::ConstructL(void) - ??0CPhoneCallSetup@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 4 NONAME ; CPhoneCallSetup::CPhoneCallSetup(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?NewPhoneUIStateMachineFactoryL@@YAPAVCPhoneUIStateMachineFactoryBase@@XZ @ 5 NONAME ; class CPhoneUIStateMachineFactoryBase * NewPhoneUIStateMachineFactoryL(void) - ?SendGlobalErrorNoteL@CPhoneErrorMessagesHandler@@IAEXH@Z @ 6 NONAME ; void CPhoneErrorMessagesHandler::SendGlobalErrorNoteL(int) - ?HandlePhoneEngineMessageL@CPhoneCallSetup@@UAEXHH@Z @ 7 NONAME ; void CPhoneCallSetup::HandlePhoneEngineMessageL(int, int) - ?HandleKeyMessageL@CPhoneAlerting@@MAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 8 NONAME ; void CPhoneAlerting::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ?HandleCommandL@CPhoneAlerting@@MAEHH@Z @ 9 NONAME ; int CPhoneAlerting::HandleCommandL(int) - ?HandleKeyMessageL@CPhoneTwoSingles@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 10 NONAME ; void CPhoneTwoSingles::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) - ??1CPhoneSingleCall@@UAE@XZ @ 11 NONAME ; CPhoneSingleCall::~CPhoneSingleCall(void) - ??1CPhoneAlerting@@UAE@XZ @ 12 NONAME ; CPhoneAlerting::~CPhoneAlerting(void) - ??0CPhoneIncoming@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 13 NONAME ; CPhoneIncoming::CPhoneIncoming(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?HandleConnectedL@CPhoneAlerting@@IAEXH@Z @ 14 NONAME ; void CPhoneAlerting::HandleConnectedL(int) - ?ConstructL@CPhoneAlerting@@MAEXXZ @ 15 NONAME ; void CPhoneAlerting::ConstructL(void) - ??0CPhoneSingleCall@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 16 NONAME ; CPhoneSingleCall::CPhoneSingleCall(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ??1CPhoneIncoming@@UAE@XZ @ 17 NONAME ; CPhoneIncoming::~CPhoneIncoming(void) - ?HandleCommandL@CPhoneSingleCall@@UAEHH@Z @ 18 NONAME ; int CPhoneSingleCall::HandleCommandL(int) - ?ConstructL@CPhoneIncoming@@MAEXXZ @ 19 NONAME ; void CPhoneIncoming::ConstructL(void) - ?HandlePhoneEngineMessageL@CPhoneSingleCall@@UAEXHH@Z @ 20 NONAME ; void CPhoneSingleCall::HandlePhoneEngineMessageL(int, int) - ??1CPhoneErrorMessagesHandler@@UAE@XZ @ 21 NONAME ; CPhoneErrorMessagesHandler::~CPhoneErrorMessagesHandler(void) - ?ConstructL@CPhoneCallSetup@@MAEXXZ @ 22 NONAME ; void CPhoneCallSetup::ConstructL(void) - ??0CPhoneErrorMessagesHandler@@IAE@PAVMPhoneViewCommandHandle@@PAVMPhoneStateMachine@@@Z @ 23 NONAME ; CPhoneErrorMessagesHandler::CPhoneErrorMessagesHandler(class MPhoneViewCommandHandle *, class MPhoneStateMachine *) - ?HandleErrorL@CPhoneTwoSinglesAndWaiting@@UAEXABUTPEErrorInfo@@@Z @ 24 NONAME ; void CPhoneTwoSinglesAndWaiting::HandleErrorL(struct TPEErrorInfo const &) - ??1CPhoneTwoSingles@@UAE@XZ @ 25 NONAME ; CPhoneTwoSingles::~CPhoneTwoSingles(void) - ?HandleDisconnectingL@CPhoneAlerting@@IAEXH@Z @ 26 NONAME ; void CPhoneAlerting::HandleDisconnectingL(int) - ?HandleCommandL@CPhoneGsmInCall@@MAEHH@Z @ 27 NONAME ; int CPhoneGsmInCall::HandleCommandL(int) - ?CreatePhoneEngineL@CPhoneStateMachineGSM@@UAEPAVMPEPhoneModel@@AAVMEngineMonitor@@@Z @ 28 NONAME ; class MPEPhoneModel * CPhoneStateMachineGSM::CreatePhoneEngineL(class MEngineMonitor &) - ?ResolveResourceID@CPhoneResourceResolverGSM@@UBEHABH@Z @ 29 NONAME ; int CPhoneResourceResolverGSM::ResolveResourceID(int const &) const - ?HandleErrorL@CPhoneIncoming@@UAEXABUTPEErrorInfo@@@Z @ 30 NONAME ; void CPhoneIncoming::HandleErrorL(struct TPEErrorInfo const &) - ??0CPhoneIdle@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 31 NONAME ; CPhoneIdle::CPhoneIdle(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?ShowErrorSpecificNoteL@CPhoneErrorMessagesHandler@@UAEXABUTPEErrorInfo@@@Z @ 32 NONAME ; void CPhoneErrorMessagesHandler::ShowErrorSpecificNoteL(struct TPEErrorInfo const &) - ??1CPhoneStateMachineGSM@@UAE@XZ @ 33 NONAME ; CPhoneStateMachineGSM::~CPhoneStateMachineGSM(void) - ?OpenMenuBarL@CPhoneSingleCall@@MAEXXZ @ 34 NONAME ; void CPhoneSingleCall::OpenMenuBarL(void) - ??0CPhoneStateMachineGSM@@IAE@PAVMPhoneViewCommandHandle@@@Z @ 35 NONAME ; CPhoneStateMachineGSM::CPhoneStateMachineGSM(class MPhoneViewCommandHandle *) - ?SetDivertIndication@CPhoneGsmInCall@@MAEXH@Z @ 36 NONAME ; void CPhoneGsmInCall::SetDivertIndication(int) - ?HandlePhoneEngineMessageL@CPhoneTwoSingles@@UAEXHH@Z @ 37 NONAME ; void CPhoneTwoSingles::HandlePhoneEngineMessageL(int, int) - ?HandlePhoneEngineMessageL@CPhoneAlerting@@UAEXHH@Z @ 38 NONAME ; void CPhoneAlerting::HandlePhoneEngineMessageL(int, int) - ?HandleRemConCommandL@CPhoneEmergency@@MAEHW4TRemConCoreApiOperationId@@W4TRemConCoreApiButtonAction@@@Z @ 39 NONAME ; int CPhoneEmergency::HandleRemConCommandL(enum TRemConCoreApiOperationId, enum TRemConCoreApiButtonAction) - ?ConstructL@CPhoneSingleCall@@MAEXXZ @ 40 NONAME ; void CPhoneSingleCall::ConstructL(void) - ?HandlePhoneEngineMessageL@CPhoneIncoming@@UAEXHH@Z @ 41 NONAME ; void CPhoneIncoming::HandlePhoneEngineMessageL(int, int) - ?State@CPhoneStateMachineGSM@@UAEPAVMPhoneState@@XZ @ 42 NONAME ; class MPhoneState * CPhoneStateMachineGSM::State(void) - ?HandleErrorL@CPhoneIdle@@MAEXABUTPEErrorInfo@@@Z @ 43 NONAME ; void CPhoneIdle::HandleErrorL(struct TPEErrorInfo const &) - ?HandleConnectingL@CPhoneCallSetup@@MAEXH@Z @ 44 NONAME ; void CPhoneCallSetup::HandleConnectingL(int) - ?UpdateInCallCbaL@CPhoneTwoSingles@@MAEXXZ @ 45 NONAME ; void CPhoneTwoSingles::UpdateInCallCbaL(void) - ?HandleErrorL@CPhoneSingleAndWaiting@@MAEXABUTPEErrorInfo@@@Z @ 46 NONAME ; void CPhoneSingleAndWaiting::HandleErrorL(struct TPEErrorInfo const &) - ??0CPhoneResourceResolverGSM@@IAE@XZ @ 47 NONAME ; CPhoneResourceResolverGSM::CPhoneResourceResolverGSM(void) - ?ConstructL@CPhoneResourceResolverGSM@@IAEXXZ @ 48 NONAME ; void CPhoneResourceResolverGSM::ConstructL(void) - ?HandlePhoneForegroundEventL@CPhoneGsmInCall@@MAEXXZ @ 49 NONAME ; void CPhoneGsmInCall::HandlePhoneForegroundEventL(void) - ?HandlePhoneEngineMessageL@CPhoneIdle@@UAEXHH@Z @ 50 NONAME ; void CPhoneIdle::HandlePhoneEngineMessageL(int, int) - ??1CPhoneIdle@@UAE@XZ @ 51 NONAME ; CPhoneIdle::~CPhoneIdle(void) - ??1CPhoneCallSetup@@UAE@XZ @ 52 NONAME ; CPhoneCallSetup::~CPhoneCallSetup(void) - ?ConstructL@CPhoneIdle@@MAEXXZ @ 53 NONAME ; void CPhoneIdle::ConstructL(void) - ??0CPhoneAlerting@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 54 NONAME ; CPhoneAlerting::CPhoneAlerting(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?OpenMenuBarL@CPhoneAlerting@@MAEXXZ @ 55 NONAME ; void CPhoneAlerting::OpenMenuBarL(void) - ?SendGlobalWarningNoteL@CPhoneErrorMessagesHandler@@IAEXH@Z @ 56 NONAME ; void CPhoneErrorMessagesHandler::SendGlobalWarningNoteL(int) - ?SendGlobalInfoNoteL@CPhoneErrorMessagesHandler@@IAEXH@Z @ 57 NONAME ; void CPhoneErrorMessagesHandler::SendGlobalInfoNoteL(int) - ?HandleNumberEntryClearedL@CPhoneTwoSingles@@MAEXXZ @ 58 NONAME ; void CPhoneTwoSingles::HandleNumberEntryClearedL(void) - ?CheckIfShowCallTerminationNote@CPhoneAlerting@@MAEHXZ @ 59 NONAME ; int CPhoneAlerting::CheckIfShowCallTerminationNote(void) - ?OpenMenuBarL@CPhoneTwoSingles@@MAEXXZ @ 60 NONAME ; void CPhoneTwoSingles::OpenMenuBarL(void) - ??0CPhoneTwoSingles@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 61 NONAME ; CPhoneTwoSingles::CPhoneTwoSingles(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) - ?CallId@CPhoneSingleCall@@IBEHXZ @ 62 NONAME ; int CPhoneSingleCall::CallId(void) const - ?HandleConnectedConferenceL@CPhoneTwoSingles@@MAEXH@Z @ 63 NONAME ; void CPhoneTwoSingles::HandleConnectedConferenceL(int) + ?NewPhoneUIStateMachineFactoryL@@YAPAVCPhoneUIStateMachineFactoryBase@@XZ @ 1 NONAME ; class CPhoneUIStateMachineFactoryBase * NewPhoneUIStateMachineFactoryL(void) + ?ConstructL@CPhoneTwoSingles@@MAEXXZ @ 2 NONAME ; void CPhoneTwoSingles::ConstructL(void) + ?SendGlobalErrorNoteL@CPhoneErrorMessagesHandler@@IAEXH@Z @ 3 NONAME ; void CPhoneErrorMessagesHandler::SendGlobalErrorNoteL(int) + ?HandleKeyMessageL@CPhoneAlerting@@MAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 4 NONAME ; void CPhoneAlerting::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ?HandleKeyMessageL@CPhoneTwoSingles@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 5 NONAME ; void CPhoneTwoSingles::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ??0CPhoneIncoming@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 6 NONAME ; CPhoneIncoming::CPhoneIncoming(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ??0CPhoneSingleCall@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 7 NONAME ; CPhoneSingleCall::CPhoneSingleCall(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?HandleCommandL@CPhoneSingleCall@@UAEHH@Z @ 8 NONAME ; int CPhoneSingleCall::HandleCommandL(int) + ?ConstructL@CPhoneCallSetup@@MAEXXZ @ 9 NONAME ; void CPhoneCallSetup::ConstructL(void) + ??0CPhoneErrorMessagesHandler@@IAE@PAVMPhoneViewCommandHandle@@PAVMPhoneStateMachine@@@Z @ 10 NONAME ; CPhoneErrorMessagesHandler::CPhoneErrorMessagesHandler(class MPhoneViewCommandHandle *, class MPhoneStateMachine *) + ?HandlePhoneEngineMessageL@CPhoneStartupSimlockUi@@UAEXHH@Z @ 11 NONAME ; void CPhoneStartupSimlockUi::HandlePhoneEngineMessageL(int, int) + ??1CPhoneTwoSingles@@UAE@XZ @ 12 NONAME ; CPhoneTwoSingles::~CPhoneTwoSingles(void) + ?HandleDisconnectingL@CPhoneAlerting@@IAEXH@Z @ 13 NONAME ; void CPhoneAlerting::HandleDisconnectingL(int) + ??0CPhoneIdle@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 14 NONAME ; CPhoneIdle::CPhoneIdle(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?ShowErrorSpecificNoteL@CPhoneErrorMessagesHandler@@UAEXABUTPEErrorInfo@@@Z @ 15 NONAME ; void CPhoneErrorMessagesHandler::ShowErrorSpecificNoteL(struct TPEErrorInfo const &) + ?HandleErrorL@CPhoneConferenceAndSingleAndWaiting@@UAEXABUTPEErrorInfo@@@Z @ 16 NONAME ; void CPhoneConferenceAndSingleAndWaiting::HandleErrorL(struct TPEErrorInfo const &) + ??0CPhoneStateMachineGSM@@IAE@PAVMPhoneViewCommandHandle@@@Z @ 17 NONAME ; CPhoneStateMachineGSM::CPhoneStateMachineGSM(class MPhoneViewCommandHandle *) + ?SetDivertIndication@CPhoneGsmInCall@@MAEXH@Z @ 18 NONAME ; void CPhoneGsmInCall::SetDivertIndication(int) + ?HandlePhoneEngineMessageL@CPhoneAlerting@@UAEXHH@Z @ 19 NONAME ; void CPhoneAlerting::HandlePhoneEngineMessageL(int, int) + ?ConstructL@CPhoneSingleCall@@MAEXXZ @ 20 NONAME ; void CPhoneSingleCall::ConstructL(void) + ?HandlePhoneEngineMessageL@CPhoneIncoming@@UAEXHH@Z @ 21 NONAME ; void CPhoneIncoming::HandlePhoneEngineMessageL(int, int) + ?State@CPhoneStateMachineGSM@@UAEPAVMPhoneState@@XZ @ 22 NONAME ; class MPhoneState * CPhoneStateMachineGSM::State(void) + ?HandleErrorL@CPhoneIdle@@MAEXABUTPEErrorInfo@@@Z @ 23 NONAME ; void CPhoneIdle::HandleErrorL(struct TPEErrorInfo const &) + ?HandleConnectingL@CPhoneCallSetup@@MAEXH@Z @ 24 NONAME ; void CPhoneCallSetup::HandleConnectingL(int) + ?HandleErrorL@CPhoneSingleAndWaiting@@MAEXABUTPEErrorInfo@@@Z @ 25 NONAME ; void CPhoneSingleAndWaiting::HandleErrorL(struct TPEErrorInfo const &) + ??0CPhoneResourceResolverGSM@@IAE@XZ @ 26 NONAME ; CPhoneResourceResolverGSM::CPhoneResourceResolverGSM(void) + ?ConstructL@CPhoneResourceResolverGSM@@IAEXXZ @ 27 NONAME ; void CPhoneResourceResolverGSM::ConstructL(void) + ?HandlePhoneEngineMessageL@CPhoneIdle@@UAEXHH@Z @ 28 NONAME ; void CPhoneIdle::HandlePhoneEngineMessageL(int, int) + ??1CPhoneIdle@@UAE@XZ @ 29 NONAME ; CPhoneIdle::~CPhoneIdle(void) + ??1CPhoneCallSetup@@UAE@XZ @ 30 NONAME ; CPhoneCallSetup::~CPhoneCallSetup(void) + ??0CPhoneAlerting@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 31 NONAME ; CPhoneAlerting::CPhoneAlerting(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?SendGlobalInfoNoteL@CPhoneErrorMessagesHandler@@IAEXH@Z @ 32 NONAME ; void CPhoneErrorMessagesHandler::SendGlobalInfoNoteL(int) + ?HandleNumberEntryClearedL@CPhoneTwoSingles@@MAEXXZ @ 33 NONAME ; void CPhoneTwoSingles::HandleNumberEntryClearedL(void) + ?CheckIfShowCallTerminationNote@CPhoneAlerting@@MAEHXZ @ 34 NONAME ; int CPhoneAlerting::CheckIfShowCallTerminationNote(void) + ?OpenMenuBarL@CPhoneTwoSingles@@MAEXXZ @ 35 NONAME ; void CPhoneTwoSingles::OpenMenuBarL(void) + ?CallId@CPhoneSingleCall@@IBEHXZ @ 36 NONAME ; int CPhoneSingleCall::CallId(void) const + ??1CPhoneResourceResolverGSM@@UAE@XZ @ 37 NONAME ; CPhoneResourceResolverGSM::~CPhoneResourceResolverGSM(void) + ?HandleKeyMessageL@CPhoneSingleCall@@UAEXW4TPhoneKeyEventMessages@MPhoneKeyEvents@@W4TKeyCode@@@Z @ 38 NONAME ; void CPhoneSingleCall::HandleKeyMessageL(enum MPhoneKeyEvents::TPhoneKeyEventMessages, enum TKeyCode) + ??0CPhoneCallSetup@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 39 NONAME ; CPhoneCallSetup::CPhoneCallSetup(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?HandlePhoneEngineMessageL@CPhoneCallSetup@@UAEXHH@Z @ 40 NONAME ; void CPhoneCallSetup::HandlePhoneEngineMessageL(int, int) + ?HandleCommandL@CPhoneAlerting@@MAEHH@Z @ 41 NONAME ; int CPhoneAlerting::HandleCommandL(int) + ?HandleErrorL@CPhoneSingleAndCallSetupAndWaiting@@UAEXABUTPEErrorInfo@@@Z @ 42 NONAME ; void CPhoneSingleAndCallSetupAndWaiting::HandleErrorL(struct TPEErrorInfo const &) + ??1CPhoneSingleCall@@UAE@XZ @ 43 NONAME ; CPhoneSingleCall::~CPhoneSingleCall(void) + ??1CPhoneAlerting@@UAE@XZ @ 44 NONAME ; CPhoneAlerting::~CPhoneAlerting(void) + ?HandleConnectedL@CPhoneAlerting@@IAEXH@Z @ 45 NONAME ; void CPhoneAlerting::HandleConnectedL(int) + ?ConstructL@CPhoneAlerting@@MAEXXZ @ 46 NONAME ; void CPhoneAlerting::ConstructL(void) + ?HandleErrorL@CPhoneCallSetupAndWaiting@@UAEXABUTPEErrorInfo@@@Z @ 47 NONAME ; void CPhoneCallSetupAndWaiting::HandleErrorL(struct TPEErrorInfo const &) + ??1CPhoneIncoming@@UAE@XZ @ 48 NONAME ; CPhoneIncoming::~CPhoneIncoming(void) + ?HandlePhoneStartupL@CPhoneStartupSimlockUi@@EAEXXZ @ 49 NONAME ; void CPhoneStartupSimlockUi::HandlePhoneStartupL(void) + ?ConstructL@CPhoneIncoming@@MAEXXZ @ 50 NONAME ; void CPhoneIncoming::ConstructL(void) + ?HandleErrorL@CPhoneConferenceAndWaitingAndCallSetup@@UAEXABUTPEErrorInfo@@@Z @ 51 NONAME ; void CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL(struct TPEErrorInfo const &) + ?HandlePhoneEngineMessageL@CPhoneSingleCall@@UAEXHH@Z @ 52 NONAME ; void CPhoneSingleCall::HandlePhoneEngineMessageL(int, int) + ??1CPhoneErrorMessagesHandler@@UAE@XZ @ 53 NONAME ; CPhoneErrorMessagesHandler::~CPhoneErrorMessagesHandler(void) + ?HandleErrorL@CPhoneTwoSinglesAndWaiting@@UAEXABUTPEErrorInfo@@@Z @ 54 NONAME ; void CPhoneTwoSinglesAndWaiting::HandleErrorL(struct TPEErrorInfo const &) + ?CreatePhoneEngineL@CPhoneStateMachineGSM@@UAEPAVMPEPhoneModel@@AAVMEngineMonitor@@@Z @ 55 NONAME ; class MPEPhoneModel * CPhoneStateMachineGSM::CreatePhoneEngineL(class MEngineMonitor &) + ?HandleCommandL@CPhoneGsmInCall@@MAEHH@Z @ 56 NONAME ; int CPhoneGsmInCall::HandleCommandL(int) + ?ResolveResourceID@CPhoneResourceResolverGSM@@UBEHABH@Z @ 57 NONAME ; int CPhoneResourceResolverGSM::ResolveResourceID(int const &) const + ?HandleErrorL@CPhoneIncoming@@UAEXABUTPEErrorInfo@@@Z @ 58 NONAME ; void CPhoneIncoming::HandleErrorL(struct TPEErrorInfo const &) + ??1CPhoneStateMachineGSM@@UAE@XZ @ 59 NONAME ; CPhoneStateMachineGSM::~CPhoneStateMachineGSM(void) + ?OpenMenuBarL@CPhoneSingleCall@@MAEXXZ @ 60 NONAME ; void CPhoneSingleCall::OpenMenuBarL(void) + ?HandleErrorL@CPhoneConferenceAndWaiting@@UAEXABUTPEErrorInfo@@@Z @ 61 NONAME ; void CPhoneConferenceAndWaiting::HandleErrorL(struct TPEErrorInfo const &) + ?HandlePhoneEngineMessageL@CPhoneTwoSingles@@UAEXHH@Z @ 62 NONAME ; void CPhoneTwoSingles::HandlePhoneEngineMessageL(int, int) + ?HandleRemConCommandL@CPhoneEmergency@@MAEHW4TRemConCoreApiOperationId@@W4TRemConCoreApiButtonAction@@@Z @ 63 NONAME ; int CPhoneEmergency::HandleRemConCommandL(enum TRemConCoreApiOperationId, enum TRemConCoreApiButtonAction) + ?UpdateInCallCbaL@CPhoneTwoSingles@@MAEXXZ @ 64 NONAME ; void CPhoneTwoSingles::UpdateInCallCbaL(void) + ?ConstructL@CPhoneIdle@@MAEXXZ @ 65 NONAME ; void CPhoneIdle::ConstructL(void) + ?HandlePhoneForegroundEventL@CPhoneGsmInCall@@MAEXXZ @ 66 NONAME ; void CPhoneGsmInCall::HandlePhoneForegroundEventL(void) + ?OpenMenuBarL@CPhoneAlerting@@MAEXXZ @ 67 NONAME ; void CPhoneAlerting::OpenMenuBarL(void) + ?SendGlobalWarningNoteL@CPhoneErrorMessagesHandler@@IAEXH@Z @ 68 NONAME ; void CPhoneErrorMessagesHandler::SendGlobalWarningNoteL(int) + ?HandleConnectedConferenceL@CPhoneTwoSingles@@MAEXH@Z @ 69 NONAME ; void CPhoneTwoSingles::HandleConnectedConferenceL(int) + ??0CPhoneTwoSingles@@IAE@PAVMPhoneStateMachine@@PAVMPhoneViewCommandHandle@@PAVMPhoneCustomization@@@Z @ 70 NONAME ; CPhoneTwoSingles::CPhoneTwoSingles(class MPhoneStateMachine *, class MPhoneViewCommandHandle *, class MPhoneCustomization *) + ?HandlePropertyChangedL@CPhoneStartupSimlockUi@@UAEXABVTUid@@IH@Z @ 71 NONAME ; void CPhoneStartupSimlockUi::HandlePropertyChangedL(class TUid const &, unsigned int, int) diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/eabi/phoneuistatesu.def --- a/phoneapp/phoneuistates/eabi/phoneuistatesu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/eabi/phoneuistatesu.def Fri Apr 23 14:59:43 2010 +0100 @@ -71,188 +71,206 @@ _ZN21CPhoneStateMachineGSMD1Ev @ 70 NONAME _ZN21CPhoneStateMachineGSMD2Ev @ 71 NONAME _ZN22CPhoneSingleAndWaiting12HandleErrorLERK12TPEErrorInfo @ 72 NONAME - _ZN25CPhoneResourceResolverGSM10ConstructLEv @ 73 NONAME - _ZN25CPhoneResourceResolverGSMC1Ev @ 74 NONAME - _ZN25CPhoneResourceResolverGSMC2Ev @ 75 NONAME - _ZN25CPhoneResourceResolverGSMD0Ev @ 76 NONAME - _ZN25CPhoneResourceResolverGSMD1Ev @ 77 NONAME - _ZN25CPhoneResourceResolverGSMD2Ev @ 78 NONAME - _ZN26CPhoneErrorMessagesHandler19SendGlobalInfoNoteLEi @ 79 NONAME - _ZN26CPhoneErrorMessagesHandler20SendGlobalErrorNoteLEi @ 80 NONAME - _ZN26CPhoneErrorMessagesHandler22SendGlobalWarningNoteLEi @ 81 NONAME - _ZN26CPhoneErrorMessagesHandler22ShowErrorSpecificNoteLERK12TPEErrorInfo @ 82 NONAME - _ZN26CPhoneErrorMessagesHandlerC1EP23MPhoneViewCommandHandleP18MPhoneStateMachine @ 83 NONAME - _ZN26CPhoneErrorMessagesHandlerC2EP23MPhoneViewCommandHandleP18MPhoneStateMachine @ 84 NONAME - _ZN26CPhoneErrorMessagesHandlerD0Ev @ 85 NONAME - _ZN26CPhoneErrorMessagesHandlerD1Ev @ 86 NONAME - _ZN26CPhoneErrorMessagesHandlerD2Ev @ 87 NONAME - _ZN26CPhoneTwoSinglesAndWaiting12HandleErrorLERK12TPEErrorInfo @ 88 NONAME - _ZNK16CPhoneSingleCall6CallIdEv @ 89 NONAME - _ZNK25CPhoneResourceResolverGSM17ResolveResourceIDERKi @ 90 NONAME - _ZTI10CPhoneIdle @ 91 NONAME - _ZTI13CPhoneStartup @ 92 NONAME - _ZTI14CPhoneAlerting @ 93 NONAME - _ZTI14CPhoneIncoming @ 94 NONAME - _ZTI15CPhoneCallSetup @ 95 NONAME - _ZTI15CPhoneEmergency @ 96 NONAME - _ZTI15CPhoneGsmInCall @ 97 NONAME - _ZTI16CPhoneConference @ 98 NONAME - _ZTI16CPhoneSingleCall @ 99 NONAME - _ZTI16CPhoneTwoSingles @ 100 NONAME - _ZTI21CPhoneStateMachineGSM @ 101 NONAME - _ZTI22CPhoneSingleAndWaiting @ 102 NONAME - _ZTI23CPhoneSingleAndAlerting @ 103 NONAME - _ZTI24CPhoneSingleAndCallSetup @ 104 NONAME - _ZTI25CPhoneCallSetupAndWaiting @ 105 NONAME - _ZTI25CPhoneConferenceAndSingle @ 106 NONAME - _ZTI25CPhoneResourceResolverGSM @ 107 NONAME - _ZTI26CPhoneConferenceAndWaiting @ 108 NONAME - _ZTI26CPhoneErrorMessagesHandler @ 109 NONAME - _ZTI26CPhoneTwoSinglesAndWaiting @ 110 NONAME - _ZTI28CPhoneConferenceAndCallSetup @ 111 NONAME - _ZTI30CPhoneUIStateMachineFactoryGSM @ 112 NONAME - _ZTI31CPhoneGeneralGsmMessagesHandler @ 113 NONAME - _ZTI34CPhoneSingleAndCallSetupAndWaiting @ 114 NONAME - _ZTI35CPhoneConferenceAndSingleAndWaiting @ 115 NONAME - _ZTI38CPhoneConferenceAndWaitingAndCallSetup @ 116 NONAME - _ZTV10CPhoneIdle @ 117 NONAME - _ZTV13CPhoneStartup @ 118 NONAME - _ZTV14CPhoneAlerting @ 119 NONAME - _ZTV14CPhoneIncoming @ 120 NONAME - _ZTV15CPhoneCallSetup @ 121 NONAME - _ZTV15CPhoneEmergency @ 122 NONAME - _ZTV15CPhoneGsmInCall @ 123 NONAME - _ZTV16CPhoneConference @ 124 NONAME - _ZTV16CPhoneSingleCall @ 125 NONAME - _ZTV16CPhoneTwoSingles @ 126 NONAME - _ZTV21CPhoneStateMachineGSM @ 127 NONAME - _ZTV22CPhoneSingleAndWaiting @ 128 NONAME - _ZTV23CPhoneSingleAndAlerting @ 129 NONAME - _ZTV24CPhoneSingleAndCallSetup @ 130 NONAME - _ZTV25CPhoneCallSetupAndWaiting @ 131 NONAME - _ZTV25CPhoneConferenceAndSingle @ 132 NONAME - _ZTV25CPhoneResourceResolverGSM @ 133 NONAME - _ZTV26CPhoneConferenceAndWaiting @ 134 NONAME - _ZTV26CPhoneErrorMessagesHandler @ 135 NONAME - _ZTV26CPhoneTwoSinglesAndWaiting @ 136 NONAME - _ZTV28CPhoneConferenceAndCallSetup @ 137 NONAME - _ZTV30CPhoneUIStateMachineFactoryGSM @ 138 NONAME - _ZTV31CPhoneGeneralGsmMessagesHandler @ 139 NONAME - _ZTV34CPhoneSingleAndCallSetupAndWaiting @ 140 NONAME - _ZTV35CPhoneConferenceAndSingleAndWaiting @ 141 NONAME - _ZTV38CPhoneConferenceAndWaitingAndCallSetup @ 142 NONAME - _ZThn12_N10CPhoneIdleD0Ev @ 143 NONAME - _ZThn12_N10CPhoneIdleD1Ev @ 144 NONAME - _ZThn12_N14CPhoneAlertingD0Ev @ 145 NONAME - _ZThn12_N14CPhoneAlertingD1Ev @ 146 NONAME - _ZThn12_N14CPhoneIncomingD0Ev @ 147 NONAME - _ZThn12_N14CPhoneIncomingD1Ev @ 148 NONAME - _ZThn12_N15CPhoneCallSetupD0Ev @ 149 NONAME - _ZThn12_N15CPhoneCallSetupD1Ev @ 150 NONAME - _ZThn12_N15CPhoneGsmInCall27HandlePhoneForegroundEventLEv @ 151 NONAME - _ZThn12_N16CPhoneSingleCallD0Ev @ 152 NONAME - _ZThn12_N16CPhoneSingleCallD1Ev @ 153 NONAME - _ZThn12_N16CPhoneTwoSinglesD0Ev @ 154 NONAME - _ZThn12_N16CPhoneTwoSinglesD1Ev @ 155 NONAME - _ZThn16_N10CPhoneIdleD0Ev @ 156 NONAME - _ZThn16_N10CPhoneIdleD1Ev @ 157 NONAME - _ZThn16_N14CPhoneAlerting14HandleCommandLEi @ 158 NONAME - _ZThn16_N14CPhoneAlertingD0Ev @ 159 NONAME - _ZThn16_N14CPhoneAlertingD1Ev @ 160 NONAME - _ZThn16_N14CPhoneIncomingD0Ev @ 161 NONAME - _ZThn16_N14CPhoneIncomingD1Ev @ 162 NONAME - _ZThn16_N15CPhoneCallSetupD0Ev @ 163 NONAME - _ZThn16_N15CPhoneCallSetupD1Ev @ 164 NONAME - _ZThn16_N15CPhoneGsmInCall14HandleCommandLEi @ 165 NONAME - _ZThn16_N16CPhoneSingleCall14HandleCommandLEi @ 166 NONAME - _ZThn16_N16CPhoneSingleCallD0Ev @ 167 NONAME - _ZThn16_N16CPhoneSingleCallD1Ev @ 168 NONAME - _ZThn16_N16CPhoneTwoSinglesD0Ev @ 169 NONAME - _ZThn16_N16CPhoneTwoSinglesD1Ev @ 170 NONAME - _ZThn20_N10CPhoneIdleD0Ev @ 171 NONAME - _ZThn20_N10CPhoneIdleD1Ev @ 172 NONAME - _ZThn20_N14CPhoneAlertingD0Ev @ 173 NONAME - _ZThn20_N14CPhoneAlertingD1Ev @ 174 NONAME - _ZThn20_N14CPhoneIncomingD0Ev @ 175 NONAME - _ZThn20_N14CPhoneIncomingD1Ev @ 176 NONAME - _ZThn20_N15CPhoneCallSetupD0Ev @ 177 NONAME - _ZThn20_N15CPhoneCallSetupD1Ev @ 178 NONAME - _ZThn20_N15CPhoneEmergency20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 179 NONAME - _ZThn20_N16CPhoneSingleCallD0Ev @ 180 NONAME - _ZThn20_N16CPhoneSingleCallD1Ev @ 181 NONAME - _ZThn20_N16CPhoneTwoSinglesD0Ev @ 182 NONAME - _ZThn20_N16CPhoneTwoSinglesD1Ev @ 183 NONAME - _ZThn24_N10CPhoneIdleD0Ev @ 184 NONAME - _ZThn24_N10CPhoneIdleD1Ev @ 185 NONAME - _ZThn24_N14CPhoneAlertingD0Ev @ 186 NONAME - _ZThn24_N14CPhoneAlertingD1Ev @ 187 NONAME - _ZThn24_N14CPhoneIncomingD0Ev @ 188 NONAME - _ZThn24_N14CPhoneIncomingD1Ev @ 189 NONAME - _ZThn24_N15CPhoneCallSetupD0Ev @ 190 NONAME - _ZThn24_N15CPhoneCallSetupD1Ev @ 191 NONAME - _ZThn24_N15CPhoneGsmInCall19SetDivertIndicationEi @ 192 NONAME - _ZThn24_N16CPhoneSingleCallD0Ev @ 193 NONAME - _ZThn24_N16CPhoneSingleCallD1Ev @ 194 NONAME - _ZThn24_N16CPhoneTwoSinglesD0Ev @ 195 NONAME - _ZThn24_N16CPhoneTwoSinglesD1Ev @ 196 NONAME - _ZThn32_N16CPhoneTwoSingles25HandleNumberEntryClearedLEv @ 197 NONAME - _ZThn36_N10CPhoneIdleD0Ev @ 198 NONAME - _ZThn36_N10CPhoneIdleD1Ev @ 199 NONAME - _ZThn36_N14CPhoneAlertingD0Ev @ 200 NONAME - _ZThn36_N14CPhoneAlertingD1Ev @ 201 NONAME - _ZThn36_N14CPhoneIncomingD0Ev @ 202 NONAME - _ZThn36_N14CPhoneIncomingD1Ev @ 203 NONAME - _ZThn36_N15CPhoneCallSetupD0Ev @ 204 NONAME - _ZThn36_N15CPhoneCallSetupD1Ev @ 205 NONAME - _ZThn36_N16CPhoneSingleCallD0Ev @ 206 NONAME - _ZThn36_N16CPhoneSingleCallD1Ev @ 207 NONAME - _ZThn36_N16CPhoneTwoSinglesD0Ev @ 208 NONAME - _ZThn36_N16CPhoneTwoSinglesD1Ev @ 209 NONAME - _ZThn4_N10CPhoneIdle12HandleErrorLERK12TPEErrorInfo @ 210 NONAME - _ZThn4_N10CPhoneIdle25HandlePhoneEngineMessageLEii @ 211 NONAME - _ZThn4_N10CPhoneIdleD0Ev @ 212 NONAME - _ZThn4_N10CPhoneIdleD1Ev @ 213 NONAME - _ZThn4_N14CPhoneAlerting25HandlePhoneEngineMessageLEii @ 214 NONAME - _ZThn4_N14CPhoneAlertingD0Ev @ 215 NONAME - _ZThn4_N14CPhoneAlertingD1Ev @ 216 NONAME - _ZThn4_N14CPhoneIncoming12HandleErrorLERK12TPEErrorInfo @ 217 NONAME - _ZThn4_N14CPhoneIncoming25HandlePhoneEngineMessageLEii @ 218 NONAME - _ZThn4_N14CPhoneIncomingD0Ev @ 219 NONAME - _ZThn4_N14CPhoneIncomingD1Ev @ 220 NONAME - _ZThn4_N15CPhoneCallSetup25HandlePhoneEngineMessageLEii @ 221 NONAME - _ZThn4_N15CPhoneCallSetupD0Ev @ 222 NONAME - _ZThn4_N15CPhoneCallSetupD1Ev @ 223 NONAME - _ZThn4_N16CPhoneSingleCall25HandlePhoneEngineMessageLEii @ 224 NONAME - _ZThn4_N16CPhoneSingleCallD0Ev @ 225 NONAME - _ZThn4_N16CPhoneSingleCallD1Ev @ 226 NONAME - _ZThn4_N16CPhoneTwoSingles25HandlePhoneEngineMessageLEii @ 227 NONAME - _ZThn4_N16CPhoneTwoSinglesD0Ev @ 228 NONAME - _ZThn4_N16CPhoneTwoSinglesD1Ev @ 229 NONAME - _ZThn4_N21CPhoneStateMachineGSM18CreatePhoneEngineLER14MEngineMonitor @ 230 NONAME - _ZThn4_N21CPhoneStateMachineGSM5StateEv @ 231 NONAME - _ZThn4_N21CPhoneStateMachineGSMD0Ev @ 232 NONAME - _ZThn4_N21CPhoneStateMachineGSMD1Ev @ 233 NONAME - _ZThn4_N22CPhoneSingleAndWaiting12HandleErrorLERK12TPEErrorInfo @ 234 NONAME - _ZThn4_N25CPhoneResourceResolverGSMD0Ev @ 235 NONAME - _ZThn4_N25CPhoneResourceResolverGSMD1Ev @ 236 NONAME - _ZThn4_N26CPhoneErrorMessagesHandler22ShowErrorSpecificNoteLERK12TPEErrorInfo @ 237 NONAME - _ZThn4_N26CPhoneErrorMessagesHandlerD0Ev @ 238 NONAME - _ZThn4_N26CPhoneErrorMessagesHandlerD1Ev @ 239 NONAME - _ZThn4_N26CPhoneTwoSinglesAndWaiting12HandleErrorLERK12TPEErrorInfo @ 240 NONAME - _ZThn4_NK25CPhoneResourceResolverGSM17ResolveResourceIDERKi @ 241 NONAME - _ZThn8_N10CPhoneIdleD0Ev @ 242 NONAME - _ZThn8_N10CPhoneIdleD1Ev @ 243 NONAME - _ZThn8_N14CPhoneAlerting17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 244 NONAME - _ZThn8_N14CPhoneAlertingD0Ev @ 245 NONAME - _ZThn8_N14CPhoneAlertingD1Ev @ 246 NONAME - _ZThn8_N14CPhoneIncomingD0Ev @ 247 NONAME - _ZThn8_N14CPhoneIncomingD1Ev @ 248 NONAME - _ZThn8_N15CPhoneCallSetupD0Ev @ 249 NONAME - _ZThn8_N15CPhoneCallSetupD1Ev @ 250 NONAME - _ZThn8_N16CPhoneSingleCall17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 251 NONAME - _ZThn8_N16CPhoneSingleCallD0Ev @ 252 NONAME - _ZThn8_N16CPhoneSingleCallD1Ev @ 253 NONAME - _ZThn8_N16CPhoneTwoSingles17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 254 NONAME - _ZThn8_N16CPhoneTwoSinglesD0Ev @ 255 NONAME - _ZThn8_N16CPhoneTwoSinglesD1Ev @ 256 NONAME + _ZN22CPhoneStartupSimlockUi19HandlePhoneStartupLEv @ 73 NONAME + _ZN22CPhoneStartupSimlockUi22HandlePropertyChangedLERK4TUidji @ 74 NONAME + _ZN22CPhoneStartupSimlockUi25HandlePhoneEngineMessageLEii @ 75 NONAME + _ZN25CPhoneCallSetupAndWaiting12HandleErrorLERK12TPEErrorInfo @ 76 NONAME + _ZN25CPhoneResourceResolverGSM10ConstructLEv @ 77 NONAME + _ZN25CPhoneResourceResolverGSMC1Ev @ 78 NONAME + _ZN25CPhoneResourceResolverGSMC2Ev @ 79 NONAME + _ZN25CPhoneResourceResolverGSMD0Ev @ 80 NONAME + _ZN25CPhoneResourceResolverGSMD1Ev @ 81 NONAME + _ZN25CPhoneResourceResolverGSMD2Ev @ 82 NONAME + _ZN26CPhoneConferenceAndWaiting12HandleErrorLERK12TPEErrorInfo @ 83 NONAME + _ZN26CPhoneErrorMessagesHandler19SendGlobalInfoNoteLEi @ 84 NONAME + _ZN26CPhoneErrorMessagesHandler20SendGlobalErrorNoteLEi @ 85 NONAME + _ZN26CPhoneErrorMessagesHandler22SendGlobalWarningNoteLEi @ 86 NONAME + _ZN26CPhoneErrorMessagesHandler22ShowErrorSpecificNoteLERK12TPEErrorInfo @ 87 NONAME + _ZN26CPhoneErrorMessagesHandlerC1EP23MPhoneViewCommandHandleP18MPhoneStateMachine @ 88 NONAME + _ZN26CPhoneErrorMessagesHandlerC2EP23MPhoneViewCommandHandleP18MPhoneStateMachine @ 89 NONAME + _ZN26CPhoneErrorMessagesHandlerD0Ev @ 90 NONAME + _ZN26CPhoneErrorMessagesHandlerD1Ev @ 91 NONAME + _ZN26CPhoneErrorMessagesHandlerD2Ev @ 92 NONAME + _ZN26CPhoneTwoSinglesAndWaiting12HandleErrorLERK12TPEErrorInfo @ 93 NONAME + _ZN34CPhoneSingleAndCallSetupAndWaiting12HandleErrorLERK12TPEErrorInfo @ 94 NONAME + _ZN35CPhoneConferenceAndSingleAndWaiting12HandleErrorLERK12TPEErrorInfo @ 95 NONAME + _ZN38CPhoneConferenceAndWaitingAndCallSetup12HandleErrorLERK12TPEErrorInfo @ 96 NONAME + _ZNK16CPhoneSingleCall6CallIdEv @ 97 NONAME + _ZNK25CPhoneResourceResolverGSM17ResolveResourceIDERKi @ 98 NONAME + _ZTI10CPhoneIdle @ 99 NONAME + _ZTI13CPhoneStartup @ 100 NONAME + _ZTI14CPhoneAlerting @ 101 NONAME + _ZTI14CPhoneIncoming @ 102 NONAME + _ZTI15CPhoneCallSetup @ 103 NONAME + _ZTI15CPhoneEmergency @ 104 NONAME + _ZTI15CPhoneGsmInCall @ 105 NONAME + _ZTI16CPhoneConference @ 106 NONAME + _ZTI16CPhoneSingleCall @ 107 NONAME + _ZTI16CPhoneTwoSingles @ 108 NONAME + _ZTI21CPhoneStateMachineGSM @ 109 NONAME + _ZTI22CPhoneSingleAndWaiting @ 110 NONAME + _ZTI22CPhoneStartupSimlockUi @ 111 NONAME + _ZTI23CPhoneSingleAndAlerting @ 112 NONAME + _ZTI24CPhoneSingleAndCallSetup @ 113 NONAME + _ZTI25CPhoneCallSetupAndWaiting @ 114 NONAME + _ZTI25CPhoneConferenceAndSingle @ 115 NONAME + _ZTI25CPhoneResourceResolverGSM @ 116 NONAME + _ZTI26CPhoneConferenceAndWaiting @ 117 NONAME + _ZTI26CPhoneErrorMessagesHandler @ 118 NONAME + _ZTI26CPhoneTwoSinglesAndWaiting @ 119 NONAME + _ZTI28CPhoneConferenceAndCallSetup @ 120 NONAME + _ZTI30CPhoneUIStateMachineFactoryGSM @ 121 NONAME + _ZTI31CPhoneGeneralGsmMessagesHandler @ 122 NONAME + _ZTI34CPhoneSingleAndCallSetupAndWaiting @ 123 NONAME + _ZTI35CPhoneConferenceAndSingleAndWaiting @ 124 NONAME + _ZTI38CPhoneConferenceAndWaitingAndCallSetup @ 125 NONAME + _ZTV10CPhoneIdle @ 126 NONAME + _ZTV13CPhoneStartup @ 127 NONAME + _ZTV14CPhoneAlerting @ 128 NONAME + _ZTV14CPhoneIncoming @ 129 NONAME + _ZTV15CPhoneCallSetup @ 130 NONAME + _ZTV15CPhoneEmergency @ 131 NONAME + _ZTV15CPhoneGsmInCall @ 132 NONAME + _ZTV16CPhoneConference @ 133 NONAME + _ZTV16CPhoneSingleCall @ 134 NONAME + _ZTV16CPhoneTwoSingles @ 135 NONAME + _ZTV21CPhoneStateMachineGSM @ 136 NONAME + _ZTV22CPhoneSingleAndWaiting @ 137 NONAME + _ZTV22CPhoneStartupSimlockUi @ 138 NONAME + _ZTV23CPhoneSingleAndAlerting @ 139 NONAME + _ZTV24CPhoneSingleAndCallSetup @ 140 NONAME + _ZTV25CPhoneCallSetupAndWaiting @ 141 NONAME + _ZTV25CPhoneConferenceAndSingle @ 142 NONAME + _ZTV25CPhoneResourceResolverGSM @ 143 NONAME + _ZTV26CPhoneConferenceAndWaiting @ 144 NONAME + _ZTV26CPhoneErrorMessagesHandler @ 145 NONAME + _ZTV26CPhoneTwoSinglesAndWaiting @ 146 NONAME + _ZTV28CPhoneConferenceAndCallSetup @ 147 NONAME + _ZTV30CPhoneUIStateMachineFactoryGSM @ 148 NONAME + _ZTV31CPhoneGeneralGsmMessagesHandler @ 149 NONAME + _ZTV34CPhoneSingleAndCallSetupAndWaiting @ 150 NONAME + _ZTV35CPhoneConferenceAndSingleAndWaiting @ 151 NONAME + _ZTV38CPhoneConferenceAndWaitingAndCallSetup @ 152 NONAME + _ZThn12_N10CPhoneIdleD0Ev @ 153 NONAME + _ZThn12_N10CPhoneIdleD1Ev @ 154 NONAME + _ZThn12_N14CPhoneAlertingD0Ev @ 155 NONAME + _ZThn12_N14CPhoneAlertingD1Ev @ 156 NONAME + _ZThn12_N14CPhoneIncomingD0Ev @ 157 NONAME + _ZThn12_N14CPhoneIncomingD1Ev @ 158 NONAME + _ZThn12_N15CPhoneCallSetupD0Ev @ 159 NONAME + _ZThn12_N15CPhoneCallSetupD1Ev @ 160 NONAME + _ZThn12_N15CPhoneGsmInCall27HandlePhoneForegroundEventLEv @ 161 NONAME + _ZThn12_N16CPhoneSingleCallD0Ev @ 162 NONAME + _ZThn12_N16CPhoneSingleCallD1Ev @ 163 NONAME + _ZThn12_N16CPhoneTwoSinglesD0Ev @ 164 NONAME + _ZThn12_N16CPhoneTwoSinglesD1Ev @ 165 NONAME + _ZThn12_N22CPhoneStartupSimlockUi19HandlePhoneStartupLEv @ 166 NONAME + _ZThn12_N22CPhoneStartupSimlockUi22HandlePropertyChangedLERK4TUidji @ 167 NONAME + _ZThn16_N10CPhoneIdleD0Ev @ 168 NONAME + _ZThn16_N10CPhoneIdleD1Ev @ 169 NONAME + _ZThn16_N14CPhoneAlerting14HandleCommandLEi @ 170 NONAME + _ZThn16_N14CPhoneAlertingD0Ev @ 171 NONAME + _ZThn16_N14CPhoneAlertingD1Ev @ 172 NONAME + _ZThn16_N14CPhoneIncomingD0Ev @ 173 NONAME + _ZThn16_N14CPhoneIncomingD1Ev @ 174 NONAME + _ZThn16_N15CPhoneCallSetupD0Ev @ 175 NONAME + _ZThn16_N15CPhoneCallSetupD1Ev @ 176 NONAME + _ZThn16_N15CPhoneGsmInCall14HandleCommandLEi @ 177 NONAME + _ZThn16_N16CPhoneSingleCall14HandleCommandLEi @ 178 NONAME + _ZThn16_N16CPhoneSingleCallD0Ev @ 179 NONAME + _ZThn16_N16CPhoneSingleCallD1Ev @ 180 NONAME + _ZThn16_N16CPhoneTwoSinglesD0Ev @ 181 NONAME + _ZThn16_N16CPhoneTwoSinglesD1Ev @ 182 NONAME + _ZThn20_N10CPhoneIdleD0Ev @ 183 NONAME + _ZThn20_N10CPhoneIdleD1Ev @ 184 NONAME + _ZThn20_N14CPhoneAlertingD0Ev @ 185 NONAME + _ZThn20_N14CPhoneAlertingD1Ev @ 186 NONAME + _ZThn20_N14CPhoneIncomingD0Ev @ 187 NONAME + _ZThn20_N14CPhoneIncomingD1Ev @ 188 NONAME + _ZThn20_N15CPhoneCallSetupD0Ev @ 189 NONAME + _ZThn20_N15CPhoneCallSetupD1Ev @ 190 NONAME + _ZThn20_N15CPhoneEmergency20HandleRemConCommandLE25TRemConCoreApiOperationId26TRemConCoreApiButtonAction @ 191 NONAME + _ZThn20_N16CPhoneSingleCallD0Ev @ 192 NONAME + _ZThn20_N16CPhoneSingleCallD1Ev @ 193 NONAME + _ZThn20_N16CPhoneTwoSinglesD0Ev @ 194 NONAME + _ZThn20_N16CPhoneTwoSinglesD1Ev @ 195 NONAME + _ZThn24_N10CPhoneIdleD0Ev @ 196 NONAME + _ZThn24_N10CPhoneIdleD1Ev @ 197 NONAME + _ZThn24_N14CPhoneAlertingD0Ev @ 198 NONAME + _ZThn24_N14CPhoneAlertingD1Ev @ 199 NONAME + _ZThn24_N14CPhoneIncomingD0Ev @ 200 NONAME + _ZThn24_N14CPhoneIncomingD1Ev @ 201 NONAME + _ZThn24_N15CPhoneCallSetupD0Ev @ 202 NONAME + _ZThn24_N15CPhoneCallSetupD1Ev @ 203 NONAME + _ZThn24_N15CPhoneGsmInCall19SetDivertIndicationEi @ 204 NONAME + _ZThn24_N16CPhoneSingleCallD0Ev @ 205 NONAME + _ZThn24_N16CPhoneSingleCallD1Ev @ 206 NONAME + _ZThn24_N16CPhoneTwoSinglesD0Ev @ 207 NONAME + _ZThn24_N16CPhoneTwoSinglesD1Ev @ 208 NONAME + _ZThn28_N16CPhoneTwoSingles25HandleNumberEntryClearedLEv @ 209 NONAME + _ZThn32_N10CPhoneIdleD0Ev @ 210 NONAME + _ZThn32_N10CPhoneIdleD1Ev @ 211 NONAME + _ZThn32_N14CPhoneAlertingD0Ev @ 212 NONAME + _ZThn32_N14CPhoneAlertingD1Ev @ 213 NONAME + _ZThn32_N14CPhoneIncomingD0Ev @ 214 NONAME + _ZThn32_N14CPhoneIncomingD1Ev @ 215 NONAME + _ZThn32_N15CPhoneCallSetupD0Ev @ 216 NONAME + _ZThn32_N15CPhoneCallSetupD1Ev @ 217 NONAME + _ZThn32_N16CPhoneSingleCallD0Ev @ 218 NONAME + _ZThn32_N16CPhoneSingleCallD1Ev @ 219 NONAME + _ZThn32_N16CPhoneTwoSinglesD0Ev @ 220 NONAME + _ZThn32_N16CPhoneTwoSinglesD1Ev @ 221 NONAME + _ZThn4_N10CPhoneIdle12HandleErrorLERK12TPEErrorInfo @ 222 NONAME + _ZThn4_N10CPhoneIdle25HandlePhoneEngineMessageLEii @ 223 NONAME + _ZThn4_N10CPhoneIdleD0Ev @ 224 NONAME + _ZThn4_N10CPhoneIdleD1Ev @ 225 NONAME + _ZThn4_N14CPhoneAlerting25HandlePhoneEngineMessageLEii @ 226 NONAME + _ZThn4_N14CPhoneAlertingD0Ev @ 227 NONAME + _ZThn4_N14CPhoneAlertingD1Ev @ 228 NONAME + _ZThn4_N14CPhoneIncoming12HandleErrorLERK12TPEErrorInfo @ 229 NONAME + _ZThn4_N14CPhoneIncoming25HandlePhoneEngineMessageLEii @ 230 NONAME + _ZThn4_N14CPhoneIncomingD0Ev @ 231 NONAME + _ZThn4_N14CPhoneIncomingD1Ev @ 232 NONAME + _ZThn4_N15CPhoneCallSetup25HandlePhoneEngineMessageLEii @ 233 NONAME + _ZThn4_N15CPhoneCallSetupD0Ev @ 234 NONAME + _ZThn4_N15CPhoneCallSetupD1Ev @ 235 NONAME + _ZThn4_N16CPhoneSingleCall25HandlePhoneEngineMessageLEii @ 236 NONAME + _ZThn4_N16CPhoneSingleCallD0Ev @ 237 NONAME + _ZThn4_N16CPhoneSingleCallD1Ev @ 238 NONAME + _ZThn4_N16CPhoneTwoSingles25HandlePhoneEngineMessageLEii @ 239 NONAME + _ZThn4_N16CPhoneTwoSinglesD0Ev @ 240 NONAME + _ZThn4_N16CPhoneTwoSinglesD1Ev @ 241 NONAME + _ZThn4_N21CPhoneStateMachineGSM18CreatePhoneEngineLER14MEngineMonitor @ 242 NONAME + _ZThn4_N21CPhoneStateMachineGSM5StateEv @ 243 NONAME + _ZThn4_N21CPhoneStateMachineGSMD0Ev @ 244 NONAME + _ZThn4_N21CPhoneStateMachineGSMD1Ev @ 245 NONAME + _ZThn4_N22CPhoneSingleAndWaiting12HandleErrorLERK12TPEErrorInfo @ 246 NONAME + _ZThn4_N22CPhoneStartupSimlockUi25HandlePhoneEngineMessageLEii @ 247 NONAME + _ZThn4_N25CPhoneCallSetupAndWaiting12HandleErrorLERK12TPEErrorInfo @ 248 NONAME + _ZThn4_N25CPhoneResourceResolverGSMD0Ev @ 249 NONAME + _ZThn4_N25CPhoneResourceResolverGSMD1Ev @ 250 NONAME + _ZThn4_N26CPhoneConferenceAndWaiting12HandleErrorLERK12TPEErrorInfo @ 251 NONAME + _ZThn4_N26CPhoneErrorMessagesHandler22ShowErrorSpecificNoteLERK12TPEErrorInfo @ 252 NONAME + _ZThn4_N26CPhoneErrorMessagesHandlerD0Ev @ 253 NONAME + _ZThn4_N26CPhoneErrorMessagesHandlerD1Ev @ 254 NONAME + _ZThn4_N26CPhoneTwoSinglesAndWaiting12HandleErrorLERK12TPEErrorInfo @ 255 NONAME + _ZThn4_N34CPhoneSingleAndCallSetupAndWaiting12HandleErrorLERK12TPEErrorInfo @ 256 NONAME + _ZThn4_N35CPhoneConferenceAndSingleAndWaiting12HandleErrorLERK12TPEErrorInfo @ 257 NONAME + _ZThn4_N38CPhoneConferenceAndWaitingAndCallSetup12HandleErrorLERK12TPEErrorInfo @ 258 NONAME + _ZThn4_NK25CPhoneResourceResolverGSM17ResolveResourceIDERKi @ 259 NONAME + _ZThn8_N10CPhoneIdleD0Ev @ 260 NONAME + _ZThn8_N10CPhoneIdleD1Ev @ 261 NONAME + _ZThn8_N14CPhoneAlerting17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 262 NONAME + _ZThn8_N14CPhoneAlertingD0Ev @ 263 NONAME + _ZThn8_N14CPhoneAlertingD1Ev @ 264 NONAME + _ZThn8_N14CPhoneIncomingD0Ev @ 265 NONAME + _ZThn8_N14CPhoneIncomingD1Ev @ 266 NONAME + _ZThn8_N15CPhoneCallSetupD0Ev @ 267 NONAME + _ZThn8_N15CPhoneCallSetupD1Ev @ 268 NONAME + _ZThn8_N16CPhoneSingleCall17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 269 NONAME + _ZThn8_N16CPhoneSingleCallD0Ev @ 270 NONAME + _ZThn8_N16CPhoneSingleCallD1Ev @ 271 NONAME + _ZThn8_N16CPhoneTwoSingles17HandleKeyMessageLEN15MPhoneKeyEvents22TPhoneKeyEventMessagesE8TKeyCode @ 272 NONAME + _ZThn8_N16CPhoneTwoSinglesD0Ev @ 273 NONAME + _ZThn8_N16CPhoneTwoSinglesD1Ev @ 274 NONAME diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/group/phoneuistates.mmp --- a/phoneapp/phoneuistates/group/phoneuistates.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/group/phoneuistates.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -62,7 +62,7 @@ SOURCE cphonetwosingles.cpp SOURCE cphonetwosinglesandwaiting.cpp SOURCE cphoneuistatemachinefactorygsm.cpp - +SOURCE cphonestartupsimlockui.cpp /* Languages */ LANG SC diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphonecallsetupandwaiting.h --- a/phoneapp/phoneuistates/inc/cphonecallsetupandwaiting.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphonecallsetupandwaiting.h Fri Apr 23 14:59:43 2010 +0100 @@ -60,6 +60,14 @@ const TInt aMessage, TInt aCallId ); + /** + * HandleError + * Implements error handling framework + * @param aErrorInfo: the error info + */ + IMPORT_C virtual void HandleErrorL( + const TPEErrorInfo& aErrorInfo ); + protected: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphoneconference.h --- a/phoneapp/phoneuistates/inc/cphoneconference.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphoneconference.h Fri Apr 23 14:59:43 2010 +0100 @@ -121,6 +121,7 @@ void UpdateConferenceSecurityStatusL( TInt aCallId ); + virtual void DisconnectCallL(); private: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphoneconferenceandsingle.h --- a/phoneapp/phoneuistates/inc/cphoneconferenceandsingle.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphoneconferenceandsingle.h Fri Apr 23 14:59:43 2010 +0100 @@ -90,6 +90,7 @@ virtual void HandleConferenceIdleL(); + virtual void DisconnectCallL(); private: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphoneconferenceandsingleandwaiting.h --- a/phoneapp/phoneuistates/inc/cphoneconferenceandsingleandwaiting.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphoneconferenceandsingleandwaiting.h Fri Apr 23 14:59:43 2010 +0100 @@ -62,9 +62,13 @@ TPhoneKeyEventMessages aMessage, TKeyCode aCode ); - virtual void HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ); + /** + * HandleError + * Implements error handling framework + * @param aErrorInfo: the error info + */ + IMPORT_C virtual void HandleErrorL( + const TPEErrorInfo& aErrorInfo ); protected: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphoneconferenceandwaiting.h --- a/phoneapp/phoneuistates/inc/cphoneconferenceandwaiting.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphoneconferenceandwaiting.h Fri Apr 23 14:59:43 2010 +0100 @@ -62,9 +62,13 @@ TPhoneKeyEventMessages aMessage, TKeyCode aCode ); - virtual void HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ); + /** + * HandleError + * Implements error handling framework + * @param aErrorInfo: the error info + */ + IMPORT_C virtual void HandleErrorL( + const TPEErrorInfo& aErrorInfo ); protected: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphoneconferenceandwaitingandcallsetup.h --- a/phoneapp/phoneuistates/inc/cphoneconferenceandwaitingandcallsetup.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphoneconferenceandwaitingandcallsetup.h Fri Apr 23 14:59:43 2010 +0100 @@ -64,6 +64,13 @@ TPhoneKeyEventMessages aMessage, TKeyCode aCode ); + /** + * HandleError + * Implements error handling framework + * @param aErrorInfo: the error info + */ + IMPORT_C virtual void HandleErrorL( + const TPEErrorInfo& aErrorInfo ); protected: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphoneemergency.h --- a/phoneapp/phoneuistates/inc/cphoneemergency.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphoneemergency.h Fri Apr 23 14:59:43 2010 +0100 @@ -195,11 +195,7 @@ void HandlePhoneStartupL(); private: - /** - * Is device lock on/off - */ - TBool iDeviceLockOn; - + /** * If true update emergency call wait note */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphonesingleandcallsetupandwaiting.h --- a/phoneapp/phoneuistates/inc/cphonesingleandcallsetupandwaiting.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphonesingleandcallsetupandwaiting.h Fri Apr 23 14:59:43 2010 +0100 @@ -64,7 +64,14 @@ TPhoneKeyEventMessages aMessage, TKeyCode aCode ); - + /** + * HandleError + * Implements error handling framework + * @param aErrorInfo: the error info + */ + IMPORT_C virtual void HandleErrorL( + const TPEErrorInfo& aErrorInfo ); + protected: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphonesingleandwaiting.h --- a/phoneapp/phoneuistates/inc/cphonesingleandwaiting.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphonesingleandwaiting.h Fri Apr 23 14:59:43 2010 +0100 @@ -96,10 +96,6 @@ TPhoneKeyEventMessages aMessage, TKeyCode aCode ); - virtual void HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ); - /** * Opens menu bar. */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphonestartupsimlockui.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuistates/inc/cphonestartupsimlockui.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,111 @@ +/* +* Copyright (c) 2010 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: +* GSM-specific single call state implementation. +* +*/ +#ifndef CPHONESTARTUPSIMLOCKUI_H +#define CPHONESTARTUPSIMLOCKUI_H + +// INCLUDES +#include "cphonestatestartup.h" + +// FORWARD DECLARATIONS + +// CLASS DECLARATION +/** + * GSM-specific start up state implementation. + */ +class CPhoneStartupSimlockUi : public CPhoneStateStartup + { +public: + + /** + * Destructor. + */ + virtual ~CPhoneStartupSimlockUi(); + + /** + * Creates the Start up state class + * @param aStateMachine: a state machine + * @param aViewCommandHandle: handle to the PhoneUIView + * @param aPEReady: true if Phone Engine already started + * @return an instance of class CPhoneEmergency + */ + static CPhoneStartupSimlockUi* NewL( MPhoneStateMachine* aStateMachine, + MPhoneViewCommandHandle* aViewCommandHandle, TBool aPEReady ); + + /** + * A message handling function for Phone Engine messages + * @param aMessage Message from Phone Engine + * @param aCallId Call id the message concerns + */ + IMPORT_C void HandlePhoneEngineMessageL( + const TInt aMessage, + TInt aCallId ); + + + // From MPhonePubSubObserver + /** + * This function is called when there is property value change. + * @param aCategory Category of the property + * @param aKey Property key that is changed + * @param aValue New property value + */ + IMPORT_C virtual void HandlePropertyChangedL( const TUid& aCategory, + const TUint aKey, const TInt aValue ); + +private: + + /** + * By default EPOC constructor is private. + */ + CPhoneStartupSimlockUi( MPhoneStateMachine* aStateMachine, + MPhoneViewCommandHandle* aViewCommandHandle, TBool aPEReady ); + + /** + * ConstructL() + */ + void ConstructL(); + + /** + * SimLock Observer. + * Determines if the SimLock mode should be entered + */ + void EnterSimLockModeL(); + + /** + * SimLock Observer. + * Takes care of the SimLock Exit Scenario + */ + void ExitSimLockModeL(); + + /** + * Handles startup of the phone application + */ + IMPORT_C virtual void HandlePhoneStartupL(); + + +private: + + //To check if Simlock is active + TBool iSimLockActive; + + // Ownded: idle object to create note. + CIdle* iCreateNote; + + }; + +#endif // CPHONESTARTUPSIMLOCK_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphonestatemachinegsm.h --- a/phoneapp/phoneuistates/inc/cphonestatemachinegsm.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphonestatemachinegsm.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -76,6 +76,10 @@ // Phone customization MPhoneCustomization* iCustomization; + private: + + TBool IsSimlockStartupStateCreated()const; + private: // Data // Is emergency object instantiated - needed to prevent multiple instantiation diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/inc/cphonetwosinglesandwaiting.h --- a/phoneapp/phoneuistates/inc/cphonetwosinglesandwaiting.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/inc/cphonetwosinglesandwaiting.h Fri Apr 23 14:59:43 2010 +0100 @@ -53,10 +53,6 @@ TPhoneKeyEventMessages aMessage, TKeyCode aCode ); - virtual void HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ); - /** * A message handling function for Phone Engine messages * @param aMessage Message from Phone Engine diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonealerting.cpp --- a/phoneapp/phoneuistates/src/cphonealerting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonealerting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -226,12 +226,7 @@ } } break; - case MEngineMonitor::EPEMessageColpNumberAvailable: - { - HandleColpNoteL( aCallId ); - return; - } - break; + default: break; @@ -248,11 +243,6 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneAlerting::HandleConnectedL()"); - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonecallsetup.cpp --- a/phoneapp/phoneuistates/src/cphonecallsetup.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonecallsetup.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -31,6 +31,7 @@ #include "cphonegeneralgsmmessageshandler.h" #include "cphonemediatorfactory.h" #include "cphonemediatorsender.h" +#include "mphonesecuritymodeobserver.h" // ================= MEMBER FUNCTIONS ======================= @@ -102,11 +103,20 @@ case MEngineMonitor::EPEMessageConnecting: HandleConnectingL( aCallId ); break; + + case MEngineMonitor::EPEMessageShowVersion: + { + if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + // Do nothing if security mode is enabled. + return; + } + } + // Fall through // fall through. case MEngineMonitor::EPEMessageIssuingSSRequest: case MEngineMonitor::EPEMessageCallBarred: - case MEngineMonitor::EPEMessageShowVersion: case MEngineMonitor::EPEMessageIssuedSSRequest: case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: case MEngineMonitor::EPEMessageIncCallIsForw: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonecallsetupandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphonecallsetupandwaiting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonecallsetupandwaiting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -121,6 +121,28 @@ } // ----------------------------------------------------------- +// CPhoneCallSetupAndWaiting::HandleErrorL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneCallSetupAndWaiting::HandleErrorL( + const TPEErrorInfo& aErrorInfo ) + { + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneCallSetupAndWaiting::HandleErrorL()"); + + if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) + { + // Should not shown "No Answer" note + __PHONELOG1( EBasic, EPhoneUIStates, + "PhoneUIStates: CPhoneCallSetupAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ", + aErrorInfo.iErrorCode); + } + else + { + CPhoneState::HandleErrorL( aErrorInfo ); + } + } + +// ----------------------------------------------------------- // CPhoneCallSetupAndWaiting::OpenMenuBarL // ----------------------------------------------------------- // diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneconference.cpp --- a/phoneapp/phoneuistates/src/cphoneconference.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconference.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -704,18 +704,31 @@ if ( IsNumberEntryUsedL() ) { - // Show the number entry if it exists - SetNumberEntryVisibilityL(ETrue); + if ( NeedToReturnToForegroundAppL() ) + { + // Return phone to the background if menu application is needed to foreground. + iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); + + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); + + // Set Number Entry CBA + iCbaManager->SetCbaL( EPhoneNumberAcqCBA ); + } + else + { + // Show the number entry if it exists + SetNumberEntryVisibilityL(ETrue); - // Close dtmf dialer when call is disconnected. - if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) - { - CloseDTMFEditorL(); - // Display idle screen and update CBAs - DisplayIdleScreenL(); - } - } - else if ( !TopAppIsDisplayedL() ) + // Close dtmf dialer when call is disconnected. + if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) + { + CloseDTMFEditorL(); + // Display idle screen and update CBAs + DisplayIdleScreenL(); + } + } + } + else if ( !TopAppIsDisplayedL() || NeedToReturnToForegroundAppL() ) { // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); @@ -752,11 +765,7 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - if ( IsNumberEntryUsedL() ) - { - // Show the number entry if it exists - SetNumberEntryVisibilityL(ETrue); - } + SetTouchPaneButtons( EPhoneIncallButtons ); // Go to single state @@ -775,11 +784,6 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - if ( IsNumberEntryUsedL() ) - { - // Show the number entry if it exists - SetNumberEntryVisibilityL(ETrue); - } SetTouchPaneButtons( EPhoneTwoSinglesButtons ); @@ -924,6 +928,20 @@ "CPhoneConference::HandleIncomingL()"); BeginUiUpdateLC(); + + // Hide the number entry if it exists + if ( IsNumberEntryUsedL() ) + { + SetNumberEntryVisibilityL( EFalse ); + } + + // Indicate that the menu application on foreground needs to be sent back to the foreground + // after call is ended. + TPhoneCmdParamBoolean booleanParam; + booleanParam.SetBoolean( !TopAppIsDisplayedL() ); + iViewCommandHandle->ExecuteCommandL( + EPhoneViewSetNeedToReturnToForegroundAppStatus, + &booleanParam ); TPhoneCmdParamBoolean dialerParam; dialerParam.SetBoolean( ETrue ); @@ -936,9 +954,6 @@ // Close fast swap window if it's displayed CEikonEnv::Static()->DismissTaskList(); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); // Display incoming call @@ -964,25 +979,15 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - // Cannot delete active note, e.g. New call query, - // but show waiting note with or without caller name - if ( IsAnyQueryActiveL() || - ( !aCommandParam.Boolean() && iOnScreenDialer ) ) - { - CallWaitingNoteL( aCallId ); - } - else - { - // Remove any phone dialogs if they are displayed - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); - } + // Remove any phone dialogs if they are displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); // Indicate that the Phone needs to be sent to the background if // an application other than the top application is in the foreground TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( !TopAppIsDisplayedL() ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, &booleanParam ); // Bring Phone app in the foreground @@ -1126,4 +1131,35 @@ } } +// ----------------------------------------------------------- +// CPhoneConference::DisconnectCallL +// ----------------------------------------------------------- +// +void CPhoneConference::DisconnectCallL() + { + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConference::DisconnectCallL( ) "); + // Fetch active call's id from view + TPhoneCmdParamCallStateData callStateData; + callStateData.SetCallState( EPEStateConnected ); + iViewCommandHandle->HandleCommandL( + EPhoneViewGetCallIdByState, &callStateData ); + + if( callStateData.CallId() == KErrNotFound ) + { + // No connected call, find the hold call + callStateData.SetCallState( EPEStateHeld ); + iViewCommandHandle->HandleCommandL( + EPhoneViewGetCallIdByState, &callStateData ); + } + + if( callStateData.CallId() > KErrNotFound ) + { + iStateMachine->SendPhoneEngineMessage( + CPEPhoneModelIF::EPEMessageHangUpConference ); + } + else + { + CPhoneState::DisconnectCallL(); + } + } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneconferenceandcallsetup.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandcallsetup.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandcallsetup.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -52,13 +52,15 @@ // CPhoneConferenceAndCallSetup::~CPhoneConferenceAndCallSetup() { - // Reset flag + // Need to check iViewCommandHandle validity here to not + // trigger a high/can panic error in a Codescanner run. + // coverity[var_compare_op] if ( iViewCommandHandle ) { TPhoneCmdParamBoolean dtmfSendFlag; dtmfSendFlag.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, - &dtmfSendFlag ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ) ); } } @@ -131,12 +133,6 @@ } break; - case MEngineMonitor::EPEMessageColpNumberAvailable: - { - HandleColpNoteL( aCallId ); - } - break; - default: { CPhoneConference::HandlePhoneEngineMessageL( aMessage, @@ -299,13 +295,7 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - + BeginUiUpdateLC(); // Show bubble diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneconferenceandsingle.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandsingle.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandsingle.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -57,13 +57,15 @@ // CPhoneConferenceAndSingle::~CPhoneConferenceAndSingle() { - // Reset flag + // Need to check iViewCommandHandle validity here to not + // trigger a high/can panic error in a Codescanner run. + // coverity[var_compare_op] if ( iViewCommandHandle ) { TPhoneCmdParamBoolean dtmfSendFlag; dtmfSendFlag.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, - &dtmfSendFlag ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ) ); } } @@ -461,6 +463,12 @@ BeginUiUpdateLC(); + // Hide the number entry if it exists + if ( IsNumberEntryUsedL() ) + { + SetNumberEntryVisibilityL( EFalse ); + } + TPhoneCmdParamBoolean dialerParam; dialerParam.SetBoolean( ETrue ); @@ -478,9 +486,6 @@ // Set touch controls SetTouchPaneButtonDisabled( EPhoneCallComingCmdAnswer ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); // Display incoming call @@ -653,4 +658,28 @@ CleanupStack::PopAndDestroy( phoneNumber ); } +// ----------------------------------------------------------- +// CPhoneConferenceAndSingle::DisconnectCallL +// ----------------------------------------------------------- +// +void CPhoneConferenceAndSingle::DisconnectCallL() + { + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneConferenceAndSingle::DisconnectCallL( ) "); + // Fetch active call's id from view + TPhoneCmdParamCallStateData callStateData; + callStateData.SetCallState( EPEStateConnected ); + iViewCommandHandle->HandleCommandL( + EPhoneViewGetCallIdByState, &callStateData ); + + if( callStateData.CallId() > KErrNotFound && callStateData.CallId() == KConferenceCallId ) + { + iStateMachine->SendPhoneEngineMessage( + CPEPhoneModelIF::EPEMessageHangUpConference ); + } + else + { + CPhoneState::DisconnectCallL(); + } + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneconferenceandsingleandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandsingleandwaiting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandsingleandwaiting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -32,9 +32,6 @@ #include "phonerssbase.h" #include "tphonecmdparamglobalnote.h" #include "phoneui.hrh" -#include "mphonestorage.h" -#include "cphonecenrepproxy.h" -#include // ================= MEMBER FUNCTIONS ======================= @@ -57,13 +54,15 @@ // CPhoneConferenceAndSingleAndWaiting::~CPhoneConferenceAndSingleAndWaiting() { - // Reset flag + // Need to check iViewCommandHandle validity here to not + // trigger a high/can panic error in a Codescanner run. + // coverity[var_compare_op] if ( iViewCommandHandle ) { TPhoneCmdParamBoolean dtmfSendFlag; dtmfSendFlag.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, - &dtmfSendFlag ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ) ); } } @@ -202,7 +201,7 @@ // Effect is shown when dialer exist. TBool effectStarted ( EFalse ); - if ( !NeedToSendToBackgroundL() ) + if ( !NeedToReturnToForegroundAppL() ) { BeginTransEffectLC( ENumberEntryOpen ); effectStarted = ETrue; @@ -294,9 +293,6 @@ SetTouchPaneButtons( EPhoneWaitingCallButtons ); SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - // Go to Conference And Waiting state UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); iStateMachine->ChangeState( EPhoneStateConferenceAndWaiting ); @@ -311,15 +307,6 @@ __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneConferenceAndSingleAndWaiting::MakeStateTransitionToConferenceAndSingleL()"); - if( /*FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - */ 1 && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - if ( !IsNumberEntryUsedL() ) { // Close menu bar, if number entry isnt open. @@ -328,7 +315,7 @@ if ( IsNumberEntryUsedL() ) { - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); @@ -346,9 +333,9 @@ else { UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); - // If numberentry is not open just check NeedToSendToBackgroundL and + // If numberentry is not open just check NeedToReturnToForegroundAppL and // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); @@ -421,18 +408,24 @@ } // ----------------------------------------------------------- -// CPhoneConferenceAndSingleAndWaiting::HandleKeyEventL +// CPhoneConferenceAndSingleAndWaiting::HandleErrorL // ----------------------------------------------------------- // -void CPhoneConferenceAndSingleAndWaiting::HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ) +EXPORT_C void CPhoneConferenceAndSingleAndWaiting::HandleErrorL( + const TPEErrorInfo& aErrorInfo ) { - if( EKeyDeviceF == aKeyEvent.iCode ) + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneConferenceAndSingleAndWaiting::HandleErrorL()"); + + if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) { - __PHONELOG( EBasic, EPhoneUIStates, - "CPhoneConferenceAndSingleAndWaiting::HandleKeyMessageL-deviceF" ); - HandleHoldSwitchL(); + // Should not shown "No Answer" note + __PHONELOG1( EBasic, EPhoneUIStates, + "PhoneUIStates: CPhoneConferenceAndSingleAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ", + aErrorInfo.iErrorCode); + } + else + { + CPhoneState::HandleErrorL( aErrorInfo ); } } @@ -485,9 +478,6 @@ // Go to Incoming state iCbaManager->UpdateIncomingCbaL( callStateData.CallId() ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneIncomingCallButtons ); UpdateSilenceButtonDimming(); SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); @@ -510,9 +500,6 @@ SetTouchPaneButtons( EPhoneWaitingCallButtons ); SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); } break; @@ -521,9 +508,6 @@ // Go to Two Singles And Waiting state UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); iStateMachine->ChangeState( EPhoneStateTwoSinglesAndWaiting ); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneconferenceandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandwaiting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandwaiting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -19,8 +19,6 @@ // INCLUDES #include #include -#include -#include #include "cphoneconferenceandwaiting.h" #include "mphonestatemachine.h" #include "phoneviewcommanddefinitions.h" @@ -34,8 +32,6 @@ #include "phonerssbase.h" #include "tphonecmdparamglobalnote.h" #include "phoneui.hrh" -#include "cphonecenrepproxy.h" -#include "mphonestorage.h" // ================= MEMBER FUNCTIONS ======================= @@ -171,18 +167,24 @@ } // ----------------------------------------------------------- -// CPhoneConferenceAndWaiting::HandleKeyEventL +// CPhoneConferenceAndWaiting::HandleErrorL // ----------------------------------------------------------- // -void CPhoneConferenceAndWaiting::HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ) +EXPORT_C void CPhoneConferenceAndWaiting::HandleErrorL( + const TPEErrorInfo& aErrorInfo ) { - if( EKeyDeviceF == aKeyEvent.iCode ) + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneConferenceAndWaiting::HandleErrorL()"); + + if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) { - __PHONELOG( EBasic, EPhoneUIStates, - "CPhoneConferenceAndWaiting::HandleKeyMessageL-deviceF" ); - HandleHoldSwitchL(); + // Should not shown "No Answer" note + __PHONELOG1( EBasic, EPhoneUIStates, + "PhoneUIStates: CPhoneConferenceAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ", + aErrorInfo.iErrorCode); + } + else + { + CPhoneState::HandleErrorL( aErrorInfo ); } } @@ -206,6 +208,13 @@ resourceId = EPhoneConfCallParticipantsMenubar; } + TPhoneCmdParamBoolean booleanParam; + const TBool videoWaiting = IsVideoCallRingingL(); + booleanParam.SetBoolean( videoWaiting ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetConferenceAndWaitingVideo, + &booleanParam ); + + TPhoneCmdParamInteger integerParam; integerParam.SetInteger( CPhoneMainResourceResolver::Instance()-> @@ -257,18 +266,9 @@ { __LOGMETHODSTARTEND(EPhoneUIStates, "CPhoneConferenceAndWaiting::MakeStateTransitionToConferenceAndSingleL()"); - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - // Effect is shown when dialer exist. TBool effectStarted ( EFalse ); - if ( !NeedToSendToBackgroundL() ) + if ( !NeedToReturnToForegroundAppL() ) { BeginTransEffectLC( ENumberEntryOpen ); effectStarted = ETrue; @@ -292,31 +292,16 @@ if ( IsNumberEntryUsedL() ) { - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { - // Return phone to the background if send to background is needed. - iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); UpdateCbaL( EPhoneCallHandlingInCallCBA ); } - else - { - // Show the number entry if it exists. - SetNumberEntryVisibilityL(ETrue); - } } else { UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); - // If numberentry is not open just check NeedToSendToBackgroundL and - // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) - { - // Return phone to the background if send to background is needed. - iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); - } } SetTouchPaneButtons( EPhoneConferenceAndSingleButtons ); SetTouchPaneButtonDisabled( EPhoneInCallCmdPrivate ); @@ -352,7 +337,7 @@ { // Effect is shown when dialer exist. TBool effectStarted ( EFalse ); - if ( !NeedToSendToBackgroundL() ) + if ( !NeedToReturnToForegroundAppL() ) { BeginTransEffectLC( ENumberEntryOpen ); effectStarted = ETrue; @@ -369,42 +354,28 @@ if ( IsNumberEntryUsedL() ) { - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { - // Return phone to the background if send to background is needed. + // Return phone to the background if menu application is needed to foreground. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); UpdateCbaL( EPhoneCallHandlingInCallCBA ); } - else - { - // Show the number entry if it exists. - SetNumberEntryVisibilityL(ETrue); - } } else { UpdateCbaL( EPhoneCallHandlingInCallCBA ); - // If numberentry is not open just check NeedToSendToBackgroundL and + // If numberentry is not open just check NeedToReturnToForegroundAppL and // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); } } - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - if ( iViewCommandHandle->HandleCommandL( EPhoneViewIsConferenceInExpandedMode ) == EPhoneViewResponseSuccess ) { @@ -490,9 +461,6 @@ SetNumberEntryVisibilityL(EFalse); } - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneIncomingCallButtons ); SetTouchPaneButtonEnabled( EPhoneCallComingCmdSilent ); SetRingingTonePlaybackL( iRingingCallId ); @@ -510,9 +478,6 @@ // Go to waiting in single state UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); break; @@ -526,9 +491,6 @@ // Go to two singles and waiting state UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); iStateMachine->ChangeState( EPhoneStateTwoSinglesAndWaiting ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp --- a/phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneconferenceandwaitingandcallsetup.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -54,13 +54,15 @@ // CPhoneConferenceAndWaitingAndCallSetup::~CPhoneConferenceAndWaitingAndCallSetup() { - // Reset flag + // Need to check iViewCommandHandle validity here to not + // trigger a high/can panic error in a Codescanner run. + // coverity[var_compare_op] if ( iViewCommandHandle ) { TPhoneCmdParamBoolean dtmfSendFlag; dtmfSendFlag.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, - &dtmfSendFlag ); + TRAP_IGNORE( iViewCommandHandle->ExecuteCommandL( EPhoneViewSetDtmfOptionsFlag, + &dtmfSendFlag ) ); } } @@ -135,12 +137,6 @@ HandleIdleL( aCallId ); } break; - - case MEngineMonitor::EPEMessageColpNumberAvailable: - { - HandleColpNoteL( aCallId ); - } - break; default: { @@ -213,6 +209,28 @@ } // ----------------------------------------------------------- +// CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL( + const TPEErrorInfo& aErrorInfo ) + { + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL()"); + + if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) + { + // Should not shown "No Answer" note + __PHONELOG1( EBasic, EPhoneUIStates, + "PhoneUIStates: CPhoneConferenceAndWaitingAndCallSetup::HandleErrorL - aErrorInfo.iErrorCode =%d ", + aErrorInfo.iErrorCode); + } + else + { + CPhoneState::HandleErrorL( aErrorInfo ); + } + } + +// ----------------------------------------------------------- // CPhoneConferenceAndWaitingAndCallSetup::OpenMenuBarL // ----------------------------------------------------------- // diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneemergency.cpp --- a/phoneapp/phoneuistates/src/cphoneemergency.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneemergency.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -41,6 +41,7 @@ #include "cphonepubsubproxy.h" #include "cphonekeys.h" #include "tphonecmdparamaudiooutput.h" +#include "cphonesecuritymodeobserver.h" // ================= MEMBER FUNCTIONS ======================= @@ -182,6 +183,13 @@ } } break; + + case MEngineMonitor::EPEMessageColpNumberAvailable: + { + //Don't show COLP note during emergency call. + return; + } + break; default: CPhoneGsmInCall::HandlePhoneEngineMessageL( @@ -227,7 +235,7 @@ } else { - if ( !TopAppIsDisplayedL() || iDeviceLockOn ) + if ( !TopAppIsDisplayedL() || iStateMachine->SecurityMode()->IsAutolockEnabled() ) { // Continue displaying current app but set up the // idle screen in the background @@ -286,9 +294,7 @@ { UpdateCbaL( EPhoneEmptyCBA ); - TPhoneCmdParamBoolean securityMode; - iViewCommandHandle->ExecuteCommandL( EPhoneViewGetSecurityModeStatus, &securityMode ); - if ( !securityMode.Boolean() ) + if ( !iStateMachine->SecurityMode()->IsSecurityMode() ) { // Setup idle as next active app. SetupIdleScreenInBackgroundL(); @@ -328,8 +334,6 @@ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetStatusPaneVisible, &visibleMode ); } - iDeviceLockOn = IsAutoLockOn(); - // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); @@ -348,7 +352,7 @@ TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( !TopAppIsDisplayedL() ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, &booleanParam ); // Bring Phone app in the foreground @@ -407,18 +411,12 @@ CaptureKeysDuringCallNotificationL( EFalse ); } } - else if ( !iDeviceLockOn && SimState() == EPESimUsable ) + else if ( !iStateMachine->SecurityMode()->IsAutolockEnabled() && SimState() == EPESimUsable ) { // Stop capturing keys CaptureKeysDuringCallNotificationL( EFalse ); } - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - // Remove emergency connecting note iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote ); @@ -543,7 +541,9 @@ resourceId = EPhoneInCallNumberAcqCBA; } } - else if ( iDeviceLockOn || SimState() != EPESimUsable || iStartupInterrupted ) + else if ( iStateMachine->SecurityMode()->IsAutolockEnabled() + || SimState() != EPESimUsable + || iStartupInterrupted ) { if ( TouchCallHandlingSupported() ) { @@ -636,7 +636,8 @@ { CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode ); } - else if ( !iDeviceLockOn && SimState() == EPESimUsable ) + else if ( !iStateMachine->SecurityMode()->IsAutolockEnabled() + && SimState() == EPESimUsable ) { // do base operation CPhoneGsmInCall::HandleKeyMessageL( aMessage, aCode ); @@ -774,7 +775,8 @@ } else { - if ( iDeviceLockOn && CPhoneKeys::IsNumericKey( aKeyEvent, aEventCode ) ) + if ( iStateMachine->SecurityMode()->IsAutolockEnabled() + && CPhoneKeys::IsNumericKey( aKeyEvent, aEventCode ) ) { // Send the key event to the phone engine SendKeyEventL( aKeyEvent, aEventCode ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonegsmincall.cpp --- a/phoneapp/phoneuistates/src/cphonegsmincall.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonegsmincall.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -35,6 +35,7 @@ #include "tphonecmdparamcallstatedata.h" #include "tphonecmdparamcallheaderdata.h" +#include "mphonesecuritymodeobserver.h" // ================= MEMBER FUNCTIONS ======================= @@ -118,10 +119,20 @@ CPhoneState::SendGlobalInfoNoteL( EPhoneInformationRemoteCreateConferenceNote ); break; + + case MEngineMonitor::EPEMessageShowVersion: + { + if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + // Do nothing if security mode is enabled. + return; + } + } + // Fall through + case MEngineMonitor::EPEMessageIncCallIsForw: // fall through case MEngineMonitor::EPEMessageIssuingSSRequest: // fall through case MEngineMonitor::EPEMessageCallBarred: // fall through - case MEngineMonitor::EPEMessageShowVersion: // fall through case MEngineMonitor::EPEMessageIssuedSSRequest: // fall through case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: case MEngineMonitor::EPEMessageIncCallForwToC: // fall through @@ -139,9 +150,22 @@ // Needed also in non-touch, if call waiting request (*43#) // is sent during active call at least. - UpdateCbaL( EPhoneCallHandlingInCallCBA ); + if ( aMessage == MEngineMonitor::EPEMessageIncCallIsForw ) + { + UpdateCbaL( EPhoneCallHandlingCallWaitingCBA ); + } + else + { + UpdateCbaL( EPhoneCallHandlingInCallCBA ); + } } break; + + case MEngineMonitor::EPEMessageColpNumberAvailable: + { + HandleColpNoteL( aCallId ); + } + break; default: CPhoneStateInCall::HandlePhoneEngineMessageL( diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneidle.cpp --- a/phoneapp/phoneuistates/src/cphoneidle.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneidle.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -22,6 +22,8 @@ #include "phonelogger.h" #include "cphonegeneralgsmmessageshandler.h" #include "tphonecmdparamboolean.h" +#include "mphonesecuritymodeobserver.h" +#include "mphonestatemachine.h" // ================= MEMBER FUNCTIONS ======================= @@ -114,7 +116,6 @@ } case MEngineMonitor::EPEMessageIssuingSSRequest: // fall through case MEngineMonitor::EPEMessageCallBarred: // fall through - case MEngineMonitor::EPEMessageShowVersion: // fall through case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: case MEngineMonitor::EPEMessageIncCallIsForw: // fall through case MEngineMonitor::EPEMessageIncCallForwToC: // fall through @@ -131,7 +132,22 @@ CleanupStack::PopAndDestroy( gsmMsgHandler ); } break; - + + case MEngineMonitor::EPEMessageShowVersion: + { + if ( !iStateMachine->SecurityMode()->IsSecurityMode() ) + { + CPhoneGeneralGsmMessagesHandler* gsmMsgHandler = + CPhoneGeneralGsmMessagesHandler::NewL( *iStateMachine, + *iViewCommandHandle, + *this ); + CleanupStack::PushL( gsmMsgHandler ); + gsmMsgHandler->HandlePhoneEngineMessageL( aMessage, aCallId ); + CleanupStack::PopAndDestroy( gsmMsgHandler ); + } + } + break; + default: CPhoneStateIdle::HandlePhoneEngineMessageL( aMessage, aCallId ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphoneincoming.cpp --- a/phoneapp/phoneuistates/src/cphoneincoming.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphoneincoming.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -18,7 +18,6 @@ // INCLUDES #include -#include #include "cphoneincoming.h" #include "phonerssbase.h" #include "phonelogger.h" @@ -28,8 +27,7 @@ #include "tphonecmdparamboolean.h" #include "phoneui.hrh" #include "mphonestatemachine.h" -#include "mphonestorage.h" -#include "cphonecenrepproxy.h" +#include "mphonesecuritymodeobserver.h" #include "tphonecmdparamcallstatedata.h" // ================= MEMBER FUNCTIONS ======================= @@ -125,11 +123,20 @@ case MEngineMonitor::EPEMessageRemoteResumed: SendGlobalInfoNoteL( EPhoneInformationConnectedNote ); break; + + case MEngineMonitor::EPEMessageShowVersion: + { + if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + // Do nothing if security mode is enabled. + return; + } + } + // Fall through // fall through. case MEngineMonitor::EPEMessageIssuingSSRequest: case MEngineMonitor::EPEMessageCallBarred: - case MEngineMonitor::EPEMessageShowVersion: case MEngineMonitor::EPEMessageIssuedSSRequest: case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: case MEngineMonitor::EPEMessageIncCallIsForw: @@ -194,6 +201,12 @@ BeginUiUpdateLC(); + // Hide the number entry if it exists + if ( IsNumberEntryUsedL() ) + { + SetNumberEntryVisibilityL( EFalse ); + } + TPhoneCmdParamBoolean dialerParam; dialerParam.SetBoolean( ETrue ); @@ -222,29 +235,6 @@ // Display incoming call DisplayIncomingCallL( aCallId, dialerParam ); - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && !CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming ) - && ( IsKeyLockOn() || IsAutoLockOn() ) ) - { - DisableCallUIL(); - } - else - { - // if keys have been locked, disable keylock without information note - if ( IsKeyLockOn() ) - { - iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote ); - } - } - - if( CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) - && ( IsKeyLockOn() || IsAutoLockOn() ) ) - { - DisableHWKeysL(); - } - EndUiUpdate(); if ( connectedCall > KErrNotFound ) @@ -269,17 +259,13 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - // Cannot delete active note, e.g. New call query, - // but show waiting note with or without caller name - if ( IsAnyQueryActiveL() || - ( aCommandParam.Boolean() && iOnScreenDialer ) ) + // Remove any phone dialogs if they are displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); + + // if keys have been locked, disable keylock without information note + if ( IsKeyLockOn() ) { - CallWaitingNoteL( aCallId ); - } - else - { - // Remove any phone dialogs if they are displayed - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote ); } // Indicate that the Phone needs to be sent to the background if @@ -287,7 +273,7 @@ TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( !TopAppIsDisplayedL() ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, &booleanParam ); // Bring Phone app in the foreground diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonesingleandalerting.cpp --- a/phoneapp/phoneuistates/src/cphonesingleandalerting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonesingleandalerting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -111,13 +111,7 @@ HandleIdleL( aCallId ); } break; - - case MEngineMonitor::EPEMessageColpNumberAvailable: - { - HandleColpNoteL( aCallId ); - } - break; - + default: { CPhoneAlerting::HandlePhoneEngineMessageL( aMessage, aCallId ); @@ -198,13 +192,7 @@ EPhoneViewGetCallIdByState, &callStateData ); if( callStateData.CallId() == aCallId ) - { - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - + { // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonesingleandcallsetupandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphonesingleandcallsetupandwaiting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonesingleandcallsetupandwaiting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -221,12 +221,7 @@ // Flow through to default branch. CaptureKeysDuringCallNotificationL( EFalse ); } - - case MEngineMonitor::EPEMessageColpNumberAvailable: - { - HandleColpNoteL( aCallId ); - } - break; + default: { CPhoneGsmInCall::HandlePhoneEngineMessageL( aMessage, aCallId ); @@ -273,6 +268,28 @@ } // ----------------------------------------------------------- +// CPhoneSingleAndCallSetupAndWaiting::HandleErrorL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneSingleAndCallSetupAndWaiting::HandleErrorL( + const TPEErrorInfo& aErrorInfo ) + { + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndCallSetupAndWaiting::HandleErrorL()"); + + if( aErrorInfo.iErrorCode == ECCPErrorCCUserAlertingNoAnswer ) + { + // Should not shown "No Answer" note + __PHONELOG1( EBasic, EPhoneUIStates, + "PhoneUIStates: CPhoneSingleAndCallSetupAndWaiting::HandleErrorL - aErrorInfo.iErrorCode =%d ", + aErrorInfo.iErrorCode); + } + else + { + CPhoneState::HandleErrorL( aErrorInfo ); + } + } + +// ----------------------------------------------------------- // CPhoneSingleAndCallSetupAndWaiting::OpenMenuBarL // ----------------------------------------------------------- // @@ -440,12 +457,7 @@ { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndCallSetupAndWaiting::HandleConnectedL()"); - // Keep Phone in the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); - + // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonesingleandwaiting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -42,7 +42,6 @@ #include "phonelogger.h" #include "cphonecenrepproxy.h" #include "cphonepubsubproxy.h" -#include "mphonestorage.h" // ================= MEMBER FUNCTIONS ======================= @@ -328,22 +327,6 @@ } // ----------------------------------------------------------- -// CPhoneSingleAndWaiting::HandleKeyEventL -// ----------------------------------------------------------- -// -void CPhoneSingleAndWaiting::HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ) - { - if( EKeyDeviceF == aKeyEvent.iCode ) - { - __PHONELOG( EBasic, EPhoneUIStates, - "CPhoneSingleAndWaiting::HandleKeyMessageL-deviceF" ); - HandleHoldSwitchL(); - } - } - -// ----------------------------------------------------------- // CPhoneSingleAndWaiting::HandleIdleL // ----------------------------------------------------------- // @@ -427,9 +410,6 @@ SetNumberEntryVisibilityL(EFalse); } - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneIncomingCallButtons ); SetTouchPaneButtonEnabled( EPhoneCallComingCmdSilent ); @@ -452,7 +432,7 @@ { // Effect is shown when dialer exist. TBool effectStarted ( EFalse ); - if ( !NeedToSendToBackgroundL() ) + if ( !NeedToReturnToForegroundAppL() ) { BeginTransEffectLC( ENumberEntryOpen ); effectStarted = ETrue; @@ -466,7 +446,7 @@ // Idle message came for waiting call if ( IsNumberEntryUsedL() ) { - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); @@ -484,25 +464,15 @@ else { UpdateCbaL( EPhoneCallHandlingInCallCBA ); - // If numberentry is not open just check NeedToSendToBackgroundL and + // If numberentry is not open just check NeedToReturnToForegroundAppL and // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); } } - // Enable call UI - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - SetTouchPaneButtons( EPhoneIncallButtons ); EndUiUpdate(); if( effectStarted ) @@ -622,15 +592,12 @@ // Effect is shown when dialer exist. TBool effectStarted ( EFalse ); - if ( !NeedToSendToBackgroundL() ) + if ( !NeedToReturnToForegroundAppL() ) { BeginTransEffectLC( ENumberEntryOpen ); effectStarted = ETrue; } - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - BeginUiUpdateLC(); UpdateRemoteInfoDataL ( aCallId ); @@ -645,37 +612,6 @@ holdFlag.SetBoolean( EFalse ); iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag ); - if ( IsNumberEntryUsedL() ) - { - if ( NeedToSendToBackgroundL() ) - { - // Return phone to the background if send to background is needed. - iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); - - iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); - - UpdateCbaL( EPhoneCallHandlingInCallCBA ); - } - else - { - // Show the number entry if it exists. - SetNumberEntryVisibilityL(ETrue); - } - } - else - { - // Set Two singles softkeys - UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); - - // If numberentry is not open just check NeedToSendToBackgroundL and - // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) - { - // Return phone to the background if send to background is needed. - iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); - } - } - // Close dtmf dialer if exist. if ( iOnScreenDialer && IsDTMFEditorVisibleL() ) { @@ -685,6 +621,18 @@ { CloseCustomizedDialerL(); } + + if ( IsNumberEntryUsedL() && NeedToReturnToForegroundAppL() ) + { + iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); + + UpdateCbaL( EPhoneCallHandlingInCallCBA ); + } + else + { + // Set Two singles softkeys + UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); + } SetTouchPaneButtons( EPhoneTwoSinglesButtons ); EndUiUpdate(); @@ -824,19 +772,6 @@ void CPhoneSingleAndWaiting::HandleDisconnectingL( TInt aCallId ) { __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneSingleAndWaiting::HandleDisconnectingL( ) "); - - if( ( iSingleCallId == aCallId ) && IsVideoCall( aCallId ) ) - { - __PHONELOG( EBasic, EPhoneControl, - "CPhoneSingleAndWaiting::HandleDisconnectingL EPhoneViewSetNeedToSendToBackgroundStatus" ); - - // Keep phone on the foreground - TPhoneCmdParamBoolean booleanParam; - booleanParam.SetBoolean( EFalse ); - iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, - &booleanParam ); - } } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonesinglecall.cpp --- a/phoneapp/phoneuistates/src/cphonesinglecall.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonesinglecall.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -27,7 +27,6 @@ #include #include #include -#include #include "cphonesinglecall.h" #include "tphonecmdparamstring.h" @@ -47,8 +46,6 @@ #include "cphonemediatorfactory.h" #include "cphonemediatorsender.h" #include "cphoneswitchtovideoorvoicecommand.h" -#include "mphonestorage.h" -#include "cphonecenrepproxy.h" // ================= MEMBER FUNCTIONS ======================= @@ -499,6 +496,12 @@ BeginUiUpdateLC(); + // Hide the number entry if it exists + if ( IsNumberEntryUsedL() ) + { + SetNumberEntryVisibilityL( EFalse ); + } + TPhoneCmdParamBoolean dialerParam; dialerParam.SetBoolean( ETrue ); @@ -514,29 +517,6 @@ // Display incoming call DisplayIncomingCallL( aCallId, dialerParam ); - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && !CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagAllowUnlockOnIncoming ) - && ( IsKeyLockOn() || IsAutoLockOn() ) ) - { - DisableCallUIL(); - } - else - { - // if keys have been locked, disable keylock without information note - if ( IsKeyLockOn() ) - { - iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote ); - } - } - - if( CPhoneCenRepProxy::Instance()-> - IsTelephonyFeatureSupported( KTelephonyLVFlagDisableCallControlHardKeysWhileLocked ) - && ( IsKeyLockOn() || IsAutoLockOn() ) ) - { - DisableHWKeysL(); - } - EndUiUpdate(); // This query is required to dismiss @@ -564,17 +544,13 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - // Cannot delete active note, e.g. New call query, - // but show waiting note with or without caller name - if ( IsAnyQueryActiveL() || - ( !aCommandParam.Boolean() && iOnScreenDialer ) ) + // Remove any phone dialogs if they are displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); + + // if keys have been locked, disable keylock without information note + if ( IsKeyLockOn() ) { - CallWaitingNoteL( aCallId ); - } - else - { - // Remove any phone dialogs if they are displayed - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewDisableKeyLockWithoutNote ); } // Indicate that the Phone needs to be sent to the background if @@ -582,7 +558,7 @@ TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( !TopAppIsDisplayedL() ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, &booleanParam ); // Bring Phone app in the foreground diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonestartup.cpp --- a/phoneapp/phoneuistates/src/cphonestartup.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonestartup.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -20,6 +20,8 @@ #include "cphonestartup.h" #include "phonerssbase.h" #include "phonelogger.h" +#include "mphonestatemachine.h" +#include "mphonesecuritymodeobserver.h" #include "cphonegeneralgsmmessageshandler.h" // ================= MEMBER FUNCTIONS ======================= @@ -100,10 +102,19 @@ CPhoneState::SendGlobalInfoNoteL( EPhoneInformationConnectedNote ); break; + + case MEngineMonitor::EPEMessageShowVersion: + { + if ( iStateMachine->SecurityMode()->IsSecurityMode() ) + { + // Do nothing if security mode is enabled. + return; + } + } + // Fall through case MEngineMonitor::EPEMessageIssuingSSRequest: // fall through case MEngineMonitor::EPEMessageCallBarred: // fall through - case MEngineMonitor::EPEMessageShowVersion: // fall through case MEngineMonitor::EPEMessageIssuedSSRequest: // fall through case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: case MEngineMonitor::EPEMessageIncCallIsForw: // fall through diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonestartupsimlockui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuistates/src/cphonestartupsimlockui.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2010 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 CPhoneStartup class. + * + */ + +// INCLUDES +#include "phonerssbase.h" +#include "phonelogger.h" +#include "cphonestartupsimlockui.h" +#include "tphonecmdparamappinfo.h" +#include "tphonecmdparamboolean.h" +#include "phoneconstants.h" +#include "cphonestatestartup.h" +#include "phonestatedefinitions.h" +#include "mphonestatemachine.h" +#include "tphonecmdparamKeycapture.h" +#include "tphonecmdparamboolean.h" +#include "cphonepubsubproxy.h" +#include "phoneconstants.h" +#include +#include + + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// + +CPhoneStartupSimlockUi::CPhoneStartupSimlockUi( + MPhoneStateMachine* aStateMachine, + MPhoneViewCommandHandle* aViewCommandHandle, TBool aPEReady ) : +CPhoneStateStartup( aStateMachine, aViewCommandHandle, NULL ), iSimLockActive (EFalse) + { + iPEReady = aPEReady; + } + +// ----------------------------------------------------------- +// CPhoneStartupSimlockUi::~CPhoneStartupSimlockUi() +// Destructor +// (other items were commented in a header). +// ----------------------------------------------------------- + +CPhoneStartupSimlockUi::~CPhoneStartupSimlockUi() + { + } + +// ----------------------------------------------------------- +// CPhoneStartupSimlockUi::ConstructL() +// Constructor +// (other items were commented in a header). +// ----------------------------------------------------------- +// +void CPhoneStartupSimlockUi::ConstructL() + { + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneStartupSimlockUi::ConstructL()" ); + + CPhoneStateStartup::ConstructL(); + iSimLockActive = ETrue; + EnterSimLockModeL(); + + } + +// ----------------------------------------------------------- +// CPhoneStartupSimlockUi::NewL() +// Constructor +// (other items were commented in a header). +// ----------------------------------------------------------- +// +CPhoneStartupSimlockUi* CPhoneStartupSimlockUi::NewL( + MPhoneStateMachine* aStateMachine, + MPhoneViewCommandHandle* aViewCommandHandle, TBool aPEReady ) + + { + __LOGMETHODSTARTEND( EPhoneUIStates, "CPhoneStartupSimlockUi::NewL()"); + + CPhoneStartupSimlockUi* self = new (ELeave) CPhoneStartupSimlockUi( + aStateMachine, aViewCommandHandle, aPEReady ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + + } + +// ----------------------------------------------------------- +// CPhoneStateStartup::HandlePhoneEngineMessageL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneStartupSimlockUi::HandlePhoneEngineMessageL( + const TInt aMessage, + TInt aCallId ) + { + __LOGMETHODSTARTEND( EPhoneControl, "CPhoneStartupSimlockUi::HandlePhoneEngineMessageL() " ); + switch ( aMessage ) + { + case MEngineMonitor::EPEMessagePEConstructionReady: + + // phone start is now possible + if ( !iSimLockActive ) + { + CPhoneStateStartup::HandlePhoneEngineMessageL( aMessage, aCallId ); + } + else + { + iPEReady = ETrue; + } + break; + + default: + CPhoneStateStartup::HandlePhoneEngineMessageL( aMessage, aCallId ); + break; + } + } + +// ----------------------------------------------------------- +// CPhoneStartupSimlockUi::HandlePhoneStartupL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneStartupSimlockUi::HandlePhoneStartupL() + { + __LOGMETHODSTARTEND(EPhoneControl, "CPhoneStartupSimlockUi::HandlePhoneStartupL() "); + + if( !iSimLockActive ) + { + CPhoneStateStartup::HandlePhoneStartupL(); + } + else + { + // set the flag in base class + iPhoneReady = ETrue; + } + } + +// ----------------------------------------------------------- +// CPhoneStartupSimlockUi::HandlePropertyChangedL +// ----------------------------------------------------------- +// +EXPORT_C void CPhoneStartupSimlockUi::HandlePropertyChangedL( + const TUid& aCategory, const TUint aKey, const TInt aValue ) + { + __LOGMETHODSTARTEND( EPhoneUIStates,"CPhoneStartupSimlockUi::HandlePropertyChangedL( ) " ); + + if ( aCategory == KSimLockProperty ) + { + if ( aKey == ESimLockActiveStatus ) + { + if ( aValue == KSimLockStatusDone ) + { + // No longer in Sim Lock mode + ExitSimLockModeL(); + } + } + } + else + { + CPhoneState::HandlePropertyChangedL( aCategory, aKey, aValue ); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneStartupSimlockUi::EnterSimLockModeL +// ----------------------------------------------------------------------------- +// +void CPhoneStartupSimlockUi::EnterSimLockModeL() + { + __LOGMETHODSTARTEND( EPhoneUIStates,"CPhoneStartupSimlockUi::EnterSimLockModeL( ) " ); + + TPhoneCmdParamAppInfo appInfoParam; + appInfoParam.SetAppUid( KSimLockUIApplicationUid ); + iViewCommandHandle->ExecuteCommandL( EPhoneViewActivateApp, &appInfoParam ); + + } +// ----------------------------------------------------------------------------- +// CPhoneStartupSimlockUi::ExitSimLockModeL +// ----------------------------------------------------------------------------- +// +void CPhoneStartupSimlockUi::ExitSimLockModeL() + { + __LOGMETHODSTARTEND( EPhoneUIStates,"CPhoneStartupSimlockUi::ExitSimLockModeL( ) " ); + iSimLockActive = EFalse; + + if ( iPhoneReady ) + { + CPhoneStateStartup::HandlePhoneStartupL(); + } + else if ( iPEReady ) + { + CPhoneStateStartup::HandlePEConstructionReadyL( 0 ); + } + + //if iPhoneReady or iPEReady is EFalse, we should just wait. + } + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonestatemachinegsm.cpp --- a/phoneapp/phoneuistates/src/cphonestatemachinegsm.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonestatemachinegsm.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -40,8 +40,13 @@ #include "cphoneemergency.h" #include "cphoneconferenceandwaitingandcallsetup.h" #include "cphoneidle.h" +#include "cphonestartup.h" #include "cphoneincoming.h" -#include "cphonestartup.h" +#include "cphonestartupsimlockui.h" +#include "cphonepubsubproxy.h" +#include +#include "phoneconstants.h" +#include // ================= MEMBER FUNCTIONS ======================= @@ -262,9 +267,20 @@ break; case EPhoneStateStartup: - TRAP( err, iState = - CPhoneStartup::NewL( this, iViewCommandHandle, - iOldStateId == EPhoneStateEmergency ) ); + + if( IsSimlockStartupStateCreated() ) + { + TRAP( err, iState = + CPhoneStartupSimlockUi::NewL( this, iViewCommandHandle, + iOldStateId == EPhoneStateEmergency ) ); + } + else + { + TRAP( err, iState = + CPhoneStartup::NewL( this, iViewCommandHandle, + iOldStateId == EPhoneStateEmergency ) ); + } + __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); madeStateTransition = ETrue; break; @@ -284,6 +300,28 @@ return iState; } + +// ----------------------------------------------------------- +// CPhoneStateMachineGSM::IsSimlockStartupStateCreated +// ----------------------------------------------------------- +// +TBool CPhoneStateMachineGSM::IsSimlockStartupStateCreated() const + { + if ( FeatureManager::FeatureSupported( KFeatureIdFfSimlockUi ) ) + { + TInt securityStatus = + CPhonePubSubProxy::Instance()->Value( + KPSUidStartup, KStartupSimSecurityStatus ); + if ( securityStatus == ESimUnaccepted ) + { + return ETrue; + } + } + + return EFalse; + } + + // ----------------------------------------------------------- // CPhoneStateMachineGSM::NewL() // Constructor diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonetwosingles.cpp --- a/phoneapp/phoneuistates/src/cphonetwosingles.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonetwosingles.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -200,20 +200,12 @@ switch( activeCallCount.Integer() ) { case EOneActiveCall: - { - if ( IsNumberEntryUsedL() ) - { - // Show the number entry if it exists - SetNumberEntryVisibilityL(ETrue); - } - else - { - // Close menu bar if number entry is not open. - iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); + { + // Close menu bar if number entry is not open. + iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - // Set incall CBAs - UpdateCbaL( EPhoneCallHandlingInCallCBA ); - } + // Set incall CBAs + UpdateCbaL( EPhoneCallHandlingInCallCBA ); TPhoneCmdParamCallStateData callStateData; callStateData.SetCallState( EPEStateHeld ); @@ -399,6 +391,12 @@ BeginUiUpdateLC(); + // Hide the number entry if it exists + if ( IsNumberEntryUsedL() ) + { + SetNumberEntryVisibilityL( EFalse ); + } + TPhoneCmdParamBoolean dialerParam; dialerParam.SetBoolean( ETrue ); @@ -414,9 +412,6 @@ // Set touch controls SetTouchPaneButtonDisabled( EPhoneCallComingCmdAnswer ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); EndUiUpdate(); @@ -439,25 +434,15 @@ // Close menu bar, if it is displayed iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose ); - // Cannot delete active note, e.g. New call query, - // but show waiting note with or without caller name - if ( IsAnyQueryActiveL() || - ( !aCommandParam.Boolean() && iOnScreenDialer ) ) - { - CallWaitingNoteL( aCallId ); - } - else - { - // Remove any phone dialogs if they are displayed - iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); - } + // Remove any phone dialogs if they are displayed + iViewCommandHandle->ExecuteCommandL( EPhoneViewRemovePhoneDialogs ); // Indicate that the Phone needs to be sent to the background if // an application other than the top application is in the foreground TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( !TopAppIsDisplayedL() ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, &booleanParam ); // Bring Phone app in the foreground diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp --- a/phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuistates/src/cphonetwosinglesandwaiting.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include "cphonetwosinglesandwaiting.h" #include "tphonecmdparamboolean.h" #include "mphonestatemachine.h" @@ -36,7 +36,6 @@ #include "phonerssbase.h" #include "phonestatedefinitionsgsm.h" #include "phonelogger.h" -#include "mphonestorage.h" // ================= MEMBER FUNCTIONS ======================= @@ -136,22 +135,6 @@ } // ----------------------------------------------------------- -// CPhoneTwoSinglesAndWaiting::HandleKeyEventL -// ----------------------------------------------------------- -// -void CPhoneTwoSinglesAndWaiting::HandleKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aEventCode ) - { - if( EKeyDeviceF == aKeyEvent.iCode ) - { - __PHONELOG( EBasic, EPhoneUIStates, - "CPhoneTwoSinglesAndWaiting::HandleKeyMessageL-deviceF" ); - HandleHoldSwitchL(); - } - } - -// ----------------------------------------------------------- // CPhoneTwoSinglesAndWaiting::HandlePhoneEngineMessageL // ----------------------------------------------------------- // @@ -238,7 +221,7 @@ // Effect is shown when dialer exist. TBool effectStarted ( EFalse ); - if ( !NeedToSendToBackgroundL()) + if ( !NeedToReturnToForegroundAppL() ) { BeginTransEffectLC( ENumberEntryOpen ); effectStarted = ETrue; @@ -282,9 +265,9 @@ if ( IsNumberEntryUsedL() ) { // Go to background if necessary - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { - // Return phone to the background if send to background is needed. + // Return phone to the background if menu application is needed to foreground. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); iViewCommandHandle->ExecuteCommandL( EPhoneViewSetControlAndVisibility ); @@ -302,24 +285,15 @@ // Set Two singles softkeys UpdateCbaL( EPhoneCallHandlingNewCallSwapCBA ); - // If numberentry is not open just check NeedToSendToBackgroundL and + // If numberentry is not open just check NeedToReturnToForegroundAppL and // sendbackround if needed. - if ( NeedToSendToBackgroundL() ) + if ( NeedToReturnToForegroundAppL() ) { // Return phone to the background if send to background is needed. iViewCommandHandle->ExecuteCommandL( EPhoneViewSendToBackground ); } } - if( FeatureManager::FeatureSupported( KFeatureIdFfTouchUnlockStroke ) - && iStateMachine->PhoneStorage()->IsScreenLocked() ) - { - EnableCallUIL(); - } - - // Reset blocked keys list - iStateMachine->PhoneStorage()->ResetBlockedKeysList(); - // Go to two singles state SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); SetTouchPaneButtons( EPhoneTwoSinglesButtons ); @@ -341,9 +315,6 @@ // Set touch controls SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); iStateMachine->ChangeState( EPhoneStateWaitingInSingle ); @@ -386,9 +357,6 @@ // Set touch controls SetTouchPaneButtonEnabled( EPhoneCallComingCmdAnswer ); - // Check if HW Keys or Call UI should be disabled - CheckDisableHWKeysAndCallUIL(); - SetTouchPaneButtons( EPhoneWaitingCallButtons ); iViewCommandHandle->ExecuteCommandL( EPhoneViewCreateConference, aCallId, @@ -398,7 +366,8 @@ TPhoneCmdParamBoolean booleanParam; booleanParam.SetBoolean( EFalse ); iViewCommandHandle->ExecuteCommandL( - EPhoneViewSetNeedToSendToBackgroundStatus, &booleanParam ); + EPhoneViewSetNeedToReturnToForegroundAppStatus, + &booleanParam ); EndUiUpdate(); // Go to Conference And Waiting state diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/bwins/phoneuiutilsu.def --- a/phoneapp/phoneuiutils/bwins/phoneuiutilsu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/bwins/phoneuiutilsu.def Fri Apr 23 14:59:43 2010 +0100 @@ -36,302 +36,293 @@ ??1CPhoneMethodLogger@@UAE@XZ @ 35 NONAME ; CPhoneMethodLogger::~CPhoneMethodLogger(void) ?WaitForReady@TPhoneCmdParamGlobalNote@@QBEHXZ @ 36 NONAME ; int TPhoneCmdParamGlobalNote::WaitForReady(void) const ?MaskBitmap@TPhoneCmdParamBitmap@@QBEPAVCFbsBitmap@@XZ @ 37 NONAME ; class CFbsBitmap * TPhoneCmdParamBitmap::MaskBitmap(void) const - ?IsScreenLocked@CPhoneStorage@@UAEHXZ @ 38 NONAME ; int CPhoneStorage::IsScreenLocked(void) - ?SetText@TPhoneCmdParamGlobalNote@@QAEXABVTDesC16@@@Z @ 39 NONAME ; void TPhoneCmdParamGlobalNote::SetText(class TDesC16 const &) - ?AddLibraryL@CPhoneLibraryContainer@@QAEXABVRLibrary@@@Z @ 40 NONAME ; void CPhoneLibraryContainer::AddLibraryL(class RLibrary const &) - ??1CPhoneResourceResolverBase@@UAE@XZ @ 41 NONAME ; CPhoneResourceResolverBase::~CPhoneResourceResolverBase(void) - ?ResetBlockedKeysList@CPhoneStorage@@UAEXXZ @ 42 NONAME ; void CPhoneStorage::ResetBlockedKeysList(void) - ?SetInt@CPhoneCenRepProxy@@QAEHABVTUid@@IH@Z @ 43 NONAME ; int CPhoneCenRepProxy::SetInt(class TUid const &, unsigned int, int) - ?GetCustomCommandForTimeOut@TPhoneCmdParamQuery@@QBEHAAH@Z @ 44 NONAME ; int TPhoneCmdParamQuery::GetCustomCommandForTimeOut(int &) const - ?ParamId@TPhoneCommandParam@@QBE?AW4TPhoneParamId@1@XZ @ 45 NONAME ; enum TPhoneCommandParam::TPhoneParamId TPhoneCommandParam::ParamId(void) const - ?SetString@CPhoneCenRepProxy@@QAEHABVTUid@@IABVTDesC16@@@Z @ 46 NONAME ; int CPhoneCenRepProxy::SetString(class TUid const &, unsigned int, class TDesC16 const &) - ?Line2@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 47 NONAME ; int TPhoneCmdParamCallHeaderData::Line2(void) const - ??1CPhoneTimer@@UAE@XZ @ 48 NONAME ; CPhoneTimer::~CPhoneTimer(void) - ?LogMsgFromPEToPhoneUIEnd@CPhoneLogger@@QAEXH@Z @ 49 NONAME ; void CPhoneLogger::LogMsgFromPEToPhoneUIEnd(int) - ?DialerController@TPhoneCmdParamCustomDialer@@QAEPAVMPhoneDialerController@@XZ @ 50 NONAME ; class MPhoneDialerController * TPhoneCmdParamCustomDialer::DialerController(void) - ?Type@TPhoneCmdParamGlobalNote@@QBE?AW4TAknGlobalNoteType@@XZ @ 51 NONAME ; enum TAknGlobalNoteType TPhoneCmdParamGlobalNote::Type(void) const - ?SetMultipleInstances@TPhoneCmdParamAppInfo@@QAEXH@Z @ 52 NONAME ; void TPhoneCmdParamAppInfo::SetMultipleInstances(int) - ?Tone@TPhoneCmdParamGlobalNote@@QBEHXZ @ 53 NONAME ; int TPhoneCmdParamGlobalNote::Tone(void) const - ?ChangePropertyValue@CPhonePubSubProxy@@QAEXABVTUid@@IH@Z @ 54 NONAME ; void CPhonePubSubProxy::ChangePropertyValue(class TUid const &, unsigned int, int) - ?SetThumbnail@TPhoneCmdParamCallHeaderData@@QAEXPAVCFbsBitmap@@@Z @ 55 NONAME ; void TPhoneCmdParamCallHeaderData::SetThumbnail(class CFbsBitmap *) - ?SetCbaCommandMapping@TPhoneCmdParamQuery@@QAEXHH@Z @ 56 NONAME ; void TPhoneCmdParamQuery::SetCbaCommandMapping(int, int) - ?EventCode@TPhoneCmdParamKeyEvent@@QBE?AW4TEventCode@@XZ @ 57 NONAME ; enum TEventCode TPhoneCmdParamKeyEvent::EventCode(void) const - ?KeyEvent@TPhoneCmdParamKeyEvent@@QBE?BUTKeyEvent@@XZ @ 58 NONAME ; struct TKeyEvent const TPhoneCmdParamKeyEvent::KeyEvent(void) const - ?SetDataText@TPhoneCmdParamQuery@@QAEXPAVTDes16@@@Z @ 59 NONAME ; void TPhoneCmdParamQuery::SetDataText(class TDes16 *) - ??0TPhoneCmdParamAppInfo@@QAE@XZ @ 60 NONAME ; TPhoneCmdParamAppInfo::TPhoneCmdParamAppInfo(void) - ?LittleBubbleVisible@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 61 NONAME ; int TPhoneCmdParamIncallIndicatorData::LittleBubbleVisible(void) const - ?SetCallState@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 62 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetCallState(int) - ?GetString@CPhoneCenRepProxy@@QBEHABVTUid@@IAAVTDes16@@@Z @ 63 NONAME ; int CPhoneCenRepProxy::GetString(class TUid const &, unsigned int, class TDes16 &) const - ?ResourceId@TPhoneCmdParamProgressNote@@QBEHXZ @ 64 NONAME ; int TPhoneCmdParamProgressNote::ResourceId(void) const - ?ReconnectQueryObserver@TPhoneCmdParamReconnectQuery@@QBEAAVMCaUiReconnectQueryObserver@@XZ @ 65 NONAME ; class MCaUiReconnectQueryObserver & TPhoneCmdParamReconnectQuery::ReconnectQueryObserver(void) const - ?CallId@TPhoneCmdParamCallStateData@@QBEHXZ @ 66 NONAME ; int TPhoneCmdParamCallStateData::CallId(void) const - ?SetContactMatcher@TPhoneCmdParamReconnectQuery@@QAEXPAVCPhCntMatcher@@@Z @ 67 NONAME ; void TPhoneCmdParamReconnectQuery::SetContactMatcher(class CPhCntMatcher *) - ?NotifyChangeL@CPhoneCenRepProxy@@QAEXABVTUid@@IPAVMPhoneCenRepObserver@@@Z @ 68 NONAME ; void CPhoneCenRepProxy::NotifyChangeL(class TUid const &, unsigned int, class MPhoneCenRepObserver *) - ?SetResourceId@TPhoneCmdParamDynMenu@@QAEXH@Z @ 69 NONAME ; void TPhoneCmdParamDynMenu::SetResourceId(int) - ?Validate@CPhoneKeys@@SAHABVTDesC16@@@Z @ 70 NONAME ; int CPhoneKeys::Validate(class TDesC16 const &) - ??0TPhoneCmdParamKeyCapture@@QAE@XZ @ 71 NONAME ; TPhoneCmdParamKeyCapture::TPhoneCmdParamKeyCapture(void) - ?SetResourceId@TPhoneCmdParamNote@@QAEXH@Z @ 72 NONAME ; void TPhoneCmdParamNote::SetResourceId(int) - ?LogMsgFromPEToPhoneUI@CPhoneLogger@@QAEXHH@Z @ 73 NONAME ; void CPhoneLogger::LogMsgFromPEToPhoneUI(int, int) - ??0TPhoneCmdParamProgressNote@@QAE@XZ @ 74 NONAME ; TPhoneCmdParamProgressNote::TPhoneCmdParamProgressNote(void) - ?CallState@TPhoneCmdParamCallStateData@@QBEHXZ @ 75 NONAME ; int TPhoneCmdParamCallStateData::CallState(void) const - ?SetPointer@TPhoneCmdParamPointer@@QAEXPAX@Z @ 76 NONAME ; void TPhoneCmdParamPointer::SetPointer(void *) - ??1CPhoneCenRepProxy@@UAE@XZ @ 77 NONAME ; CPhoneCenRepProxy::~CPhoneCenRepProxy(void) - ?SetEventCode@TPhoneCmdParamKeyEvent@@QAEXW4TEventCode@@@Z @ 78 NONAME ; void TPhoneCmdParamKeyEvent::SetEventCode(enum TEventCode) - ?WaitTime@TPhoneCmdParamProgressNote@@QBE?AVTTimeIntervalMicroSeconds32@@XZ @ 79 NONAME ; class TTimeIntervalMicroSeconds32 TPhoneCmdParamProgressNote::WaitTime(void) const - ?SetParam@TPhoneCmdParamAppInfo@@QAEXABVTDesC8@@@Z @ 80 NONAME ; void TPhoneCmdParamAppInfo::SetParam(class TDesC8 const &) - ?CallType@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 81 NONAME ; int TPhoneCmdParamCallHeaderData::CallType(void) const - ??0TPhoneCmdParamPointer@@QAE@XZ @ 82 NONAME ; TPhoneCmdParamPointer::TPhoneCmdParamPointer(void) - ??0TPhoneCmdParamGlobalNote@@QAE@XZ @ 83 NONAME ; TPhoneCmdParamGlobalNote::TPhoneCmdParamGlobalNote(void) - ?SetCiphering@TPhoneCmdParamEmergencyCallHeaderData@@QAEXH@Z @ 84 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetCiphering(int) - ?SetTone@TPhoneCmdParamNote@@QAEXW4TTone@CAknNoteDialog@@@Z @ 85 NONAME ; void TPhoneCmdParamNote::SetTone(enum CAknNoteDialog::TTone) - ?SetCustomCommandForTimeOut@TPhoneCmdParamQuery@@QAEXH@Z @ 86 NONAME ; void TPhoneCmdParamQuery::SetCustomCommandForTimeOut(int) - ?SetIncludeVideoOption@TPhoneCmdParamReconnectQuery@@QAEXH@Z @ 87 NONAME ; void TPhoneCmdParamReconnectQuery::SetIncludeVideoOption(int) - ?IsBTAccAvailable@TPhoneCmdParamAudioAvailability@@QBEHXZ @ 88 NONAME ; int TPhoneCmdParamAudioAvailability::IsBTAccAvailable(void) const - ?NewL@CPhoneStorage@@SAPAV1@XZ @ 89 NONAME ; class CPhoneStorage * CPhoneStorage::NewL(void) - ?Timeout@TPhoneCmdParamNote@@QBE?AW4TTimeout@CAknNoteDialog@@XZ @ 90 NONAME ; enum CAknNoteDialog::TTimeout TPhoneCmdParamNote::Timeout(void) const - ?Instance@CPhoneRecoverySystem@@SAPAV1@XZ @ 91 NONAME ; class CPhoneRecoverySystem * CPhoneRecoverySystem::Instance(void) - ?CancelTimer@CPhoneTimer@@QAEXXZ @ 92 NONAME ; void CPhoneTimer::CancelTimer(void) - ?NewL@CPhoneTimer@@SAPAV1@H@Z @ 93 NONAME ; class CPhoneTimer * CPhoneTimer::NewL(int) - ?GetInt@CPhoneCenRepProxy@@QBEHABVTUid@@IAAH@Z @ 94 NONAME ; int CPhoneCenRepProxy::GetInt(class TUid const &, unsigned int, int &) const - ?SetTextToSay@TPhoneCmdParamRingTone@@QAEXABVTDesC16@@@Z @ 95 NONAME ; void TPhoneCmdParamRingTone::SetTextToSay(class TDesC16 const &) - ?SetCallState@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 96 NONAME ; void TPhoneCmdParamCallHeaderData::SetCallState(int) - ?ContentCba@TPhoneCmdParamQuery@@QBEHXZ @ 97 NONAME ; int TPhoneCmdParamQuery::ContentCba(void) const - ?SetTextResourceId@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 98 NONAME ; void TPhoneCmdParamGlobalNote::SetTextResourceId(int) - ??0TPhoneCmdParamDynMenu@@QAE@XZ @ 99 NONAME ; TPhoneCmdParamDynMenu::TPhoneCmdParamDynMenu(void) - ?CancelAllNotifications@CPhonePubSubProxy@@SAXPAVMPhonePubSubObserver@@@Z @ 100 NONAME ; void CPhonePubSubProxy::CancelAllNotifications(class MPhonePubSubObserver *) - ??0TPhoneCommandParam@@QAE@XZ @ 101 NONAME ; TPhoneCommandParam::TPhoneCommandParam(void) - ?SetCNAPText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@W4TPhoneClippingDirection@CBubbleManager@@@Z @ 102 NONAME ; void TPhoneCmdParamCallHeaderData::SetCNAPText(class TDesC16 const &, enum CBubbleManager::TPhoneClippingDirection) - ??1CPhoneLogger@@UAE@XZ @ 103 NONAME ; CPhoneLogger::~CPhoneLogger(void) - ?Softkeys@TPhoneCmdParamGlobalNote@@QBEHXZ @ 104 NONAME ; int TPhoneCmdParamGlobalNote::Softkeys(void) const - ??0TPhoneCmdParamMessageEditor@@QAE@XZ @ 105 NONAME ; TPhoneCmdParamMessageEditor::TPhoneCmdParamMessageEditor(void) - ?SetCallState@TPhoneCmdParamCallStateData@@QAEXH@Z @ 106 NONAME ; void TPhoneCmdParamCallStateData::SetCallState(int) - ?CallerText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 107 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::CallerText(void) const - ?String@TPhoneCmdParamString@@QAEPAVTPtr16@@XZ @ 108 NONAME ; class TPtr16 * TPhoneCmdParamString::String(void) - ?SetKey@TPhoneCmdParamKeyCapture@@QAEXW4TStdScanCode@@@Z @ 109 NONAME ; void TPhoneCmdParamKeyCapture::SetKey(enum TStdScanCode) - ?IsExtraChar@CPhoneKeys@@SAHH@Z @ 110 NONAME ; int CPhoneKeys::IsExtraChar(int) - ?SetDynMenu@TPhoneCmdParamDynMenu@@QAEXPAX@Z @ 111 NONAME ; void TPhoneCmdParamDynMenu::SetDynMenu(void *) - ?IsSecondHashKey@CPhoneKeys@@SAHABVTDes16@@@Z @ 112 NONAME ; int CPhoneKeys::IsSecondHashKey(class TDes16 const &) - ?SetCallerImageStatus@TPhoneCmdParamRingTone@@QAEXH@Z @ 113 NONAME ; void TPhoneCmdParamRingTone::SetCallerImageStatus(int) - ?GetReal@CPhoneCenRepProxy@@QBEHABVTUid@@IAAN@Z @ 114 NONAME ; int CPhoneCenRepProxy::GetReal(class TUid const &, unsigned int, double &) const - ?SetShortLabelText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 115 NONAME ; void TPhoneCmdParamCallHeaderData::SetShortLabelText(class TDesC16 const &) - ?SetDialerController@TPhoneCmdParamCustomDialer@@QAEXPAVMPhoneDialerController@@@Z @ 116 NONAME ; void TPhoneCmdParamCustomDialer::SetDialerController(class MPhoneDialerController *) - ?RingTone@TPhoneCmdParamRingTone@@QBEABVTDesC16@@XZ @ 117 NONAME ; class TDesC16 const & TPhoneCmdParamRingTone::RingTone(void) const - ?TimeOut@TPhoneCmdParamQuery@@QBEHXZ @ 118 NONAME ; int TPhoneCmdParamQuery::TimeOut(void) const - ?ShortLabelText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 119 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::ShortLabelText(void) const - ?SetInteger@TPhoneCmdParamInteger@@QAEXH@Z @ 120 NONAME ; void TPhoneCmdParamInteger::SetInteger(int) - ?SetMaskBitmap@TPhoneCmdParamBitmap@@QAEXPAVCFbsBitmap@@@Z @ 121 NONAME ; void TPhoneCmdParamBitmap::SetMaskBitmap(class CFbsBitmap *) - ?SetTimeout@TPhoneCmdParamNote@@QAEXW4TTimeout@CAknNoteDialog@@@Z @ 122 NONAME ; void TPhoneCmdParamNote::SetTimeout(enum CAknNoteDialog::TTimeout) - ?IsBlockedKeysListEmpty@CPhoneStorage@@UAEHXZ @ 123 NONAME ; int CPhoneStorage::IsBlockedKeysListEmpty(void) - ?SetCustomMessage@TPhoneCmdParamAppInfo@@QAEXABVTDesC8@@@Z @ 124 NONAME ; void TPhoneCmdParamAppInfo::SetCustomMessage(class TDesC8 const &) - ?BaseConstructL@CPhoneResourceResolverBase@@QAEXXZ @ 125 NONAME ; void CPhoneResourceResolverBase::BaseConstructL(void) - ?SetTextResourceId@TPhoneCmdParamNote@@QAEXH@Z @ 126 NONAME ; void TPhoneCmdParamNote::SetTextResourceId(int) - ?SetString@TPhoneCmdParamString@@QAEXPAVTPtr16@@@Z @ 127 NONAME ; void TPhoneCmdParamString::SetString(class TPtr16 *) - ?SetAppUid@TPhoneCmdParamAppInfo@@QAEXABVTUid@@@Z @ 128 NONAME ; void TPhoneCmdParamAppInfo::SetAppUid(class TUid const &) - ?String@TPhoneCmdParamSingleItemFetch@@QBEPAVTDes16@@XZ @ 129 NONAME ; class TDes16 * TPhoneCmdParamSingleItemFetch::String(void) const - ?SetBTAccAvailable@TPhoneCmdParamAudioAvailability@@QAEXH@Z @ 130 NONAME ; void TPhoneCmdParamAudioAvailability::SetBTAccAvailable(int) - ?IsTelephonyFeatureSupported@CPhoneCenRepProxy@@QAEHH@Z @ 131 NONAME ; int CPhoneCenRepProxy::IsTelephonyFeatureSupported(int) - ?CallImageThemeFilePath@CPhoneCallThemeMonitor@@QBE?AVTPtrC16@@XZ @ 132 NONAME ; class TPtrC16 CPhoneCallThemeMonitor::CallImageThemeFilePath(void) const - ?HasThumbnail@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 133 NONAME ; int TPhoneCmdParamCallHeaderData::HasThumbnail(void) const - ?ClearBlackListNow@CPhoneClearBlacklist@@QAEXXZ @ 134 NONAME ; void CPhoneClearBlacklist::ClearBlackListNow(void) - ?SetCipheringIndicatorAllowed@TPhoneCmdParamEmergencyCallHeaderData@@QAEXH@Z @ 135 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetCipheringIndicatorAllowed(int) - ?SetCommandParamId@TPhoneCmdParamQuery@@QAEXW4TPhoneParamId@TPhoneCommandParam@@@Z @ 136 NONAME ; void TPhoneCmdParamQuery::SetCommandParamId(enum TPhoneCommandParam::TPhoneParamId) - ??0TPhoneCmdParamEmergencyCallHeaderData@@QAE@XZ @ 137 NONAME ; TPhoneCmdParamEmergencyCallHeaderData::TPhoneCmdParamEmergencyCallHeaderData(void) - ?After@CPhoneTimer@@QAEXVTTimeIntervalMicroSeconds32@@PAVMPhoneTimer@@@Z @ 138 NONAME ; void CPhoneTimer::After(class TTimeIntervalMicroSeconds32, class MPhoneTimer *) - ?NewL@CPhoneLibraryContainer@@SAPAV1@XZ @ 139 NONAME ; class CPhoneLibraryContainer * CPhoneLibraryContainer::NewL(void) - ?CreateL@CPhoneClearBlacklist@@SAPAV1@AAVRWsSession@@ABVRWindowBase@@@Z @ 140 NONAME ; class CPhoneClearBlacklist * CPhoneClearBlacklist::CreateL(class RWsSession &, class RWindowBase const &) - ??1CPhoneStorage@@UAE@XZ @ 141 NONAME ; CPhoneStorage::~CPhoneStorage(void) - ?SetVolume@TPhoneCmdParamRingTone@@QAEXH@Z @ 142 NONAME ; void TPhoneCmdParamRingTone::SetVolume(int) - ??0TPhoneCmdParamString@@QAE@XZ @ 143 NONAME ; TPhoneCmdParamString::TPhoneCmdParamString(void) - ?SetContactLink@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC8@@@Z @ 144 NONAME ; void TPhoneCmdParamCallHeaderData::SetContactLink(class TDesC8 const &) - ??4TPhoneCmdParamQuery@@QAEAAV0@ABV0@@Z @ 145 NONAME ; class TPhoneCmdParamQuery & TPhoneCmdParamQuery::operator=(class TPhoneCmdParamQuery const &) - ??0TPhoneCmdParamAudioAvailability@@QAE@XZ @ 146 NONAME ; TPhoneCmdParamAudioAvailability::TPhoneCmdParamAudioAvailability(void) - ?GetBlockedKeyList@CPhoneStorage@@UBEABV?$RArray@H@@XZ @ 147 NONAME ; class RArray const & CPhoneStorage::GetBlockedKeyList(void) const - ??0TPhoneCmdParamRingTone@@QAE@XZ @ 148 NONAME ; TPhoneCmdParamRingTone::TPhoneCmdParamRingTone(void) - ?Observer@TPhoneCmdParamNumberEntryObserver@@QAE?AVTCallBack@@XZ @ 149 NONAME ; class TCallBack TPhoneCmdParamNumberEntryObserver::Observer(void) - ?SetSoftkeys@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 150 NONAME ; void TPhoneCmdParamGlobalNote::SetSoftkeys(int) - ??0CPhoneResourceResolverBase@@IAE@XZ @ 151 NONAME ; CPhoneResourceResolverBase::CPhoneResourceResolverBase(void) - ?SetCallId@TPhoneCmdParamCallStateData@@QAEXH@Z @ 152 NONAME ; void TPhoneCmdParamCallStateData::SetCallId(int) - ?MultipleInstances@TPhoneCmdParamAppInfo@@QBEHXZ @ 153 NONAME ; int TPhoneCmdParamAppInfo::MultipleInstances(void) const - ?ItemTextArrayForListQuery@TPhoneCmdParamQuery@@QBEPAVMDesC16Array@@XZ @ 154 NONAME ; class MDesC16Array * TPhoneCmdParamQuery::ItemTextArrayForListQuery(void) const - ?SetHeaderText@TPhoneCmdParamEmergencyCallHeaderData@@QAEXABVTDesC16@@@Z @ 155 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetHeaderText(class TDesC16 const &) - ?SetContentCba@TPhoneCmdParamQuery@@QAEXH@Z @ 156 NONAME ; void TPhoneCmdParamQuery::SetContentCba(int) - ?CaptureType@TPhoneCmdParamKeyCapture@@QBE?AW4TPhoneCaptureType@@XZ @ 157 NONAME ; enum TPhoneCaptureType TPhoneCmdParamKeyCapture::CaptureType(void) const - ?SetQueryResourceId@TPhoneCmdParamQuery@@QAEXH@Z @ 158 NONAME ; void TPhoneCmdParamQuery::SetQueryResourceId(int) - ?CancelNotify@CPhoneCenRepProxy@@QAEXPAVMPhoneCenRepObserver@@I@Z @ 159 NONAME ; void CPhoneCenRepProxy::CancelNotify(class MPhoneCenRepObserver *, unsigned int) - ?Param@TPhoneCmdParamAppInfo@@QBEABVTDesC8@@XZ @ 160 NONAME ; class TDesC8 const & TPhoneCmdParamAppInfo::Param(void) const - ??0CPhoneMethodLogger@@QAE@W4TPhoneUILoggingComponent@@VTPtrC16@@@Z @ 161 NONAME ; CPhoneMethodLogger::CPhoneMethodLogger(enum TPhoneUILoggingComponent, class TPtrC16) - ?IsDtmfTone@CPhoneKeys@@SAHABUTKeyEvent@@W4TEventCode@@@Z @ 162 NONAME ; int CPhoneKeys::IsDtmfTone(struct TKeyEvent const &, enum TEventCode) - ?SetMode@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 163 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetMode(int) - ?NewL@CPhoneCallThemeMonitor@@SAPAV1@XZ @ 164 NONAME ; class CPhoneCallThemeMonitor * CPhoneCallThemeMonitor::NewL(void) - ?SetCLIText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@W4TPhoneClippingDirection@CBubbleManager@@@Z @ 165 NONAME ; void TPhoneCmdParamCallHeaderData::SetCLIText(class TDesC16 const &, enum CBubbleManager::TPhoneClippingDirection) - ?SetPhoneNumber@TPhoneCmdParamSpeedDial@@QAEXPAVTPtr16@@@Z @ 166 NONAME ; void TPhoneCmdParamSpeedDial::SetPhoneNumber(class TPtr16 *) - ?SendKeyEnabled@TPhoneCmdParamQuery@@QBEHXZ @ 167 NONAME ; int TPhoneCmdParamQuery::SendKeyEnabled(void) const - ?SetNeedToEnableKeylock@CPhoneStorage@@UAEXH@Z @ 168 NONAME ; void CPhoneStorage::SetNeedToEnableKeylock(int) - ?SetTitlePaneResourceId@TPhoneCmdParamSingleItemFetch@@QAEXH@Z @ 169 NONAME ; void TPhoneCmdParamSingleItemFetch::SetTitlePaneResourceId(int) - ?Find@CPhoneCenRepProxy@@QBEHABVTUid@@KKAAV?$RArray@K@@@Z @ 170 NONAME ; int CPhoneCenRepProxy::Find(class TUid const &, unsigned long, unsigned long, class RArray &) const - ?SetLabelText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 171 NONAME ; void TPhoneCmdParamCallHeaderData::SetLabelText(class TDesC16 const &) - ?CNAPText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 172 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::CNAPText(void) const - ?SetOwnPhoneNumberText@TPhoneCmdParamEmergencyCallHeaderData@@QAEXABVTDesC16@@@Z @ 173 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetOwnPhoneNumberText(class TDesC16 const &) - ?Emergency@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 174 NONAME ; int TPhoneCmdParamIncallIndicatorData::Emergency(void) const - ?SetCbaResourceId@TPhoneCmdParamSingleItemFetch@@QAEXH@Z @ 175 NONAME ; void TPhoneCmdParamSingleItemFetch::SetCbaResourceId(int) - ?AppUid@TPhoneCmdParamAppInfo@@QBE?AVTUid@@XZ @ 176 NONAME ; class TUid TPhoneCmdParamAppInfo::AppUid(void) const - ?CustomMessage@TPhoneCmdParamAppInfo@@QBEABVTDesC8@@XZ @ 177 NONAME ; class TDesC8 const & TPhoneCmdParamAppInfo::CustomMessage(void) const - ?QueryResourceId@TPhoneCmdParamQuery@@QBEHXZ @ 178 NONAME ; int TPhoneCmdParamQuery::QueryResourceId(void) const - ?SetRingTone@TPhoneCmdParamRingTone@@QAEXABVTDesC16@@@Z @ 179 NONAME ; void TPhoneCmdParamRingTone::SetRingTone(class TDesC16 const &) - ?NotifyChangeL@CPhonePubSubProxy@@QAEXABVTUid@@IPAVMPhonePubSubObserver@@@Z @ 180 NONAME ; void CPhonePubSubProxy::NotifyChangeL(class TUid const &, unsigned int, class MPhonePubSubObserver *) - ?AppendBlockedKeysListL@CPhoneStorage@@UAEXW4TStdScanCode@@@Z @ 181 NONAME ; void CPhoneStorage::AppendBlockedKeysListL(enum TStdScanCode) - ?SetEmergency@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 182 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetEmergency(int) - ?SetDefaultCba@TPhoneCmdParamQuery@@QAEXH@Z @ 183 NONAME ; void TPhoneCmdParamQuery::SetDefaultCba(int) - ?Type@TPhoneCmdParamTransEffect@@QBE?AW4TPhoneTransEffectType@@XZ @ 184 NONAME ; enum TPhoneTransEffectType TPhoneCmdParamTransEffect::Type(void) const - ??0TPhoneCmdParamSfiData@@QAE@XZ @ 185 NONAME ; TPhoneCmdParamSfiData::TPhoneCmdParamSfiData(void) - ??0TPhoneCmdParamCallHeaderData@@QAE@XZ @ 186 NONAME ; TPhoneCmdParamCallHeaderData::TPhoneCmdParamCallHeaderData(void) - ??1CPhoneClearBlacklist@@UAE@XZ @ 187 NONAME ; CPhoneClearBlacklist::~CPhoneClearBlacklist(void) - ?SetMute@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 188 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetMute(int) - ?KeyCode@TPhoneCmdParamKeyCapture@@QBE?AW4TKeyCode@@XZ @ 189 NONAME ; enum TKeyCode TPhoneCmdParamKeyCapture::KeyCode(void) const - ?IsNumberKey@CPhoneKeys@@SAHABUTKeyEvent@@W4TEventCode@@@Z @ 190 NONAME ; int CPhoneKeys::IsNumberKey(struct TKeyEvent const &, enum TEventCode) - ?TextResourceId@TPhoneCmdParamGlobalNote@@QBEHXZ @ 191 NONAME ; int TPhoneCmdParamGlobalNote::TextResourceId(void) const - ?SetCiphering@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 192 NONAME ; void TPhoneCmdParamCallHeaderData::SetCiphering(int) - ?EnablePreconditionL@CPhoneRecoverySystem@@QAEXXZ @ 193 NONAME ; void CPhoneRecoverySystem::EnablePreconditionL(void) - ?AddL@CPhoneRecoverySystem@@QAEHVTCallBack@@CW4TRecoveryState@CTeleRecoverySystem@@@Z @ 194 NONAME ; int CPhoneRecoverySystem::AddL(class TCallBack, signed char, enum CTeleRecoverySystem::TRecoveryState) - ?SetLine2@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 195 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetLine2(int) - ?SetAudioOutput@TPhoneCmdParamAudioOutput@@QAEXW4TPEAudioOutput@@@Z @ 196 NONAME ; void TPhoneCmdParamAudioOutput::SetAudioOutput(enum TPEAudioOutput) - ?HeaderText@TPhoneCmdParamEmergencyCallHeaderData@@QBEABVTDesC16@@XZ @ 197 NONAME ; class TDesC16 const & TPhoneCmdParamEmergencyCallHeaderData::HeaderText(void) const - ?CallImageThemeSettings@CPhoneCallThemeMonitor@@QBEHXZ @ 198 NONAME ; int CPhoneCallThemeMonitor::CallImageThemeSettings(void) const - ?SetLocation@TPhoneCmdParamSpeedDial@@QAEXH@Z @ 199 NONAME ; void TPhoneCmdParamSpeedDial::SetLocation(int) - ??0TPhoneCmdParamTransEffect@@QAE@XZ @ 200 NONAME ; TPhoneCmdParamTransEffect::TPhoneCmdParamTransEffect(void) - ?Number@TPhoneCmdParamSfiData@@QBEABVTDesC16@@XZ @ 201 NONAME ; class TDesC16 const & TPhoneCmdParamSfiData::Number(void) const - ?OwnPhoneNumberText@TPhoneCmdParamEmergencyCallHeaderData@@QBEABVTDesC16@@XZ @ 202 NONAME ; class TDesC16 const & TPhoneCmdParamEmergencyCallHeaderData::OwnPhoneNumberText(void) const - ?QueryPrompt@TPhoneCmdParamQuery@@QBEABVTDesC16@@XZ @ 203 NONAME ; class TDesC16 const & TPhoneCmdParamQuery::QueryPrompt(void) const - ?SetQueryPrompt@TPhoneCmdParamQuery@@QAEXABVTDesC16@@@Z @ 204 NONAME ; void TPhoneCmdParamQuery::SetQueryPrompt(class TDesC16 const &) - ?NewL@CPhoneQwertyHandler@@SAPAV1@XZ @ 205 NONAME ; class CPhoneQwertyHandler * CPhoneQwertyHandler::NewL(void) - ?IsNumericKey@CPhoneKeys@@SAHABUTKeyEvent@@W4TEventCode@@@Z @ 206 NONAME ; int CPhoneKeys::IsNumericKey(struct TKeyEvent const &, enum TEventCode) - ?SetCaptureType@TPhoneCmdParamKeyCapture@@QAEXW4TPhoneCaptureType@@@Z @ 207 NONAME ; void TPhoneCmdParamKeyCapture::SetCaptureType(enum TPhoneCaptureType) - ?ViewUid@TPhoneCmdParamAppInfo@@QBE?AVTUid@@XZ @ 208 NONAME ; class TUid TPhoneCmdParamAppInfo::ViewUid(void) const - ?CallFlag@TPhoneCmdParamCallHeaderData@@QBEKXZ @ 209 NONAME ; unsigned long TPhoneCmdParamCallHeaderData::CallFlag(void) const - ?SetLabelText@TPhoneCmdParamEmergencyCallHeaderData@@QAEXABVTDesC16@@@Z @ 210 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetLabelText(class TDesC16 const &) - ??0TPhoneCmdParamSpeedDial@@QAE@XZ @ 211 NONAME ; TPhoneCmdParamSpeedDial::TPhoneCmdParamSpeedDial(void) - ?IsCallerText@TPhoneCmdParamRingTone@@QAEHXZ @ 212 NONAME ; int TPhoneCmdParamRingTone::IsCallerText(void) - ?SetBitmap@TPhoneCmdParamBitmap@@QAEXPAVCFbsBitmap@@@Z @ 213 NONAME ; void TPhoneCmdParamBitmap::SetBitmap(class CFbsBitmap *) - ?SetNumber@TPhoneCmdParamSfiData@@QAEXABVTDesC16@@@Z @ 214 NONAME ; void TPhoneCmdParamSfiData::SetNumber(class TDesC16 const &) - ?Location@TPhoneCmdParamSpeedDial@@QAEHXZ @ 215 NONAME ; int TPhoneCmdParamSpeedDial::Location(void) - ?CipheringIndicatorAllowed@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 216 NONAME ; int TPhoneCmdParamCallHeaderData::CipheringIndicatorAllowed(void) const - ?Name@TPhoneCmdParamSfiData@@QBEABVTDesC16@@XZ @ 217 NONAME ; class TDesC16 const & TPhoneCmdParamSfiData::Name(void) const - ??0TPhoneCmdParamQuery@@QAE@ABV0@@Z @ 218 NONAME ; TPhoneCmdParamQuery::TPhoneCmdParamQuery(class TPhoneCmdParamQuery const &) - ?CallState@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 219 NONAME ; int TPhoneCmdParamCallHeaderData::CallState(void) const - ??0TPhoneCmdParamIncallIndicatorData@@QAE@XZ @ 220 NONAME ; TPhoneCmdParamIncallIndicatorData::TPhoneCmdParamIncallIndicatorData(void) - ?Picture@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 221 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::Picture(void) const - ?SetCallThemeSettingsObserver@CPhoneCallThemeMonitor@@QAEXPAVMPhoneCallThemeSettingsObserver@@@Z @ 222 NONAME ; void CPhoneCallThemeMonitor::SetCallThemeSettingsObserver(class MPhoneCallThemeSettingsObserver *) - ?ServiceId@TPhoneCmdParamCallHeaderData@@QBEKXZ @ 223 NONAME ; unsigned long TPhoneCmdParamCallHeaderData::ServiceId(void) const - ?LabelText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 224 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::LabelText(void) const - ?Overflow@CPhoneLogger@@EAEXAAVTDes16@@@Z @ 225 NONAME ; void CPhoneLogger::Overflow(class TDes16 &) - ?SetServiceId@TPhoneCmdParamSpeedDial@@QAEXI@Z @ 226 NONAME ; void TPhoneCmdParamSpeedDial::SetServiceId(unsigned int) - ?SetKeyEvent@TPhoneCmdParamKeyEvent@@QAEXABUTKeyEvent@@@Z @ 227 NONAME ; void TPhoneCmdParamKeyEvent::SetKeyEvent(struct TKeyEvent const &) - ?Instance@CPhonePubSubProxy@@SAPAV1@XZ @ 228 NONAME ; class CPhonePubSubProxy * CPhonePubSubProxy::Instance(void) - ?ResourceId@TPhoneCmdParamNote@@QBEHXZ @ 229 NONAME ; int TPhoneCmdParamNote::ResourceId(void) const - ?CipheringIndicatorAllowed@TPhoneCmdParamEmergencyCallHeaderData@@QBEHXZ @ 230 NONAME ; int TPhoneCmdParamEmergencyCallHeaderData::CipheringIndicatorAllowed(void) const - ?CancelAllNotifies@CPhoneCenRepProxy@@SAXPAVMPhoneCenRepObserver@@@Z @ 231 NONAME ; void CPhoneCenRepProxy::CancelAllNotifies(class MPhoneCenRepObserver *) - ??1CPhoneQwertyHandler@@UAE@XZ @ 232 NONAME ; CPhoneQwertyHandler::~CPhoneQwertyHandler(void) - ?TextResourceId@TPhoneCmdParamNote@@QBEHXZ @ 233 NONAME ; int TPhoneCmdParamNote::TextResourceId(void) const - ?SetRemotePhoneNumber@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 234 NONAME ; void TPhoneCmdParamCallHeaderData::SetRemotePhoneNumber(class TDesC16 const &) - ?CipheringIndicatorAllowed@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 235 NONAME ; int TPhoneCmdParamIncallIndicatorData::CipheringIndicatorAllowed(void) const - ?SetScreenLocked@CPhoneStorage@@UAEXH@Z @ 236 NONAME ; void CPhoneStorage::SetScreenLocked(int) - ??0TPhoneCmdParamCallStateData@@QAE@XZ @ 237 NONAME ; TPhoneCmdParamCallStateData::TPhoneCmdParamCallStateData(void) - ?SetKeyCode@TPhoneCmdParamKeyCapture@@QAEXW4TKeyCode@@@Z @ 238 NONAME ; void TPhoneCmdParamKeyCapture::SetKeyCode(enum TKeyCode) - ?CustomMessageId@TPhoneCmdParamAppInfo@@QBE?AVTUid@@XZ @ 239 NONAME ; class TUid TPhoneCmdParamAppInfo::CustomMessageId(void) const - ?RemotePhoneNumber@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 240 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::RemotePhoneNumber(void) const - ?SetType@TPhoneCmdParamNote@@QAEXW4TPhoneNoteType@@@Z @ 241 NONAME ; void TPhoneCmdParamNote::SetType(enum TPhoneNoteType) - ?Instance@CPhoneClearBlacklist@@SAPAV1@XZ @ 242 NONAME ; class CPhoneClearBlacklist * CPhoneClearBlacklist::Instance(void) - ?TextToSay@TPhoneCmdParamRingTone@@QBEABVTDesC16@@XZ @ 243 NONAME ; class TDesC16 const & TPhoneCmdParamRingTone::TextToSay(void) const - ?Type@TPhoneCmdParamNote@@QBE?AW4TPhoneNoteType@@XZ @ 244 NONAME ; enum TPhoneNoteType TPhoneCmdParamNote::Type(void) const - ??0TPhoneCmdParamReconnectQuery@@QAE@AAVMCaUiReconnectQueryObserver@@@Z @ 245 NONAME ; TPhoneCmdParamReconnectQuery::TPhoneCmdParamReconnectQuery(class MCaUiReconnectQueryObserver &) - ?SetCallFlag@TPhoneCmdParamCallHeaderData@@QAEXW4TPhoneCallTypeFlags@CBubbleManager@@@Z @ 246 NONAME ; void TPhoneCmdParamCallHeaderData::SetCallFlag(enum CBubbleManager::TPhoneCallTypeFlags) - ?SetPicture@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 247 NONAME ; void TPhoneCmdParamCallHeaderData::SetPicture(class TDesC16 const &) - ?Integer@TPhoneCmdParamInteger@@QBEHXZ @ 248 NONAME ; int TPhoneCmdParamInteger::Integer(void) const - ?Mode@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 249 NONAME ; int TPhoneCmdParamIncallIndicatorData::Mode(void) const - ?SetText@TPhoneCmdParamNote@@QAEXABVTDesC16@@@Z @ 250 NONAME ; void TPhoneCmdParamNote::SetText(class TDesC16 const &) - ?SetCallerTextStatus@TPhoneCmdParamRingTone@@QAEXH@Z @ 251 NONAME ; void TPhoneCmdParamRingTone::SetCallerTextStatus(int) - ?IsWiredAccAvailable@TPhoneCmdParamAudioAvailability@@QBEHXZ @ 252 NONAME ; int TPhoneCmdParamAudioAvailability::IsWiredAccAvailable(void) const - ?SetWaitForReady@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 253 NONAME ; void TPhoneCmdParamGlobalNote::SetWaitForReady(int) - ??0TPhoneCmdParamBoolean@@QAE@XZ @ 254 NONAME ; TPhoneCmdParamBoolean::TPhoneCmdParamBoolean(void) - ?QueryCommandObserver@TPhoneCmdParamQuery@@QAEPAVMPhoneQueryCommandObserver@@XZ @ 255 NONAME ; class MPhoneQueryCommandObserver * TPhoneCmdParamQuery::QueryCommandObserver(void) - ?DataText@TPhoneCmdParamQuery@@QBEPAVTDes16@@XZ @ 256 NONAME ; class TDes16 * TPhoneCmdParamQuery::DataText(void) const - ?SetType@TPhoneCmdParamSingleItemFetch@@QAEXW4TFetchType@CPhCntSingleItemFetch@@@Z @ 257 NONAME ; void TPhoneCmdParamSingleItemFetch::SetType(enum CPhCntSingleItemFetch::TFetchType) - ?SetReal@CPhoneCenRepProxy@@QAEHABVTUid@@IN@Z @ 258 NONAME ; int CPhoneCenRepProxy::SetReal(class TUid const &, unsigned int, double) - ??0TPhoneCmdParamCustomDialer@@QAE@XZ @ 259 NONAME ; TPhoneCmdParamCustomDialer::TPhoneCmdParamCustomDialer(void) - ??1CPhonePubSubProxy@@UAE@XZ @ 260 NONAME ; CPhonePubSubProxy::~CPhonePubSubProxy(void) - ?NumericKeyCode@CPhoneQwertyHandler@@QAEHABUTKeyEvent@@@Z @ 261 NONAME ; int CPhoneQwertyHandler::NumericKeyCode(struct TKeyEvent const &) - ?SetMessageData@TPhoneCmdParamMessageEditor@@QAEXPAVCMessageData@@@Z @ 262 NONAME ; void TPhoneCmdParamMessageEditor::SetMessageData(class CMessageData *) - ??0TPhoneCmdParamNote@@QAE@XZ @ 263 NONAME ; TPhoneCmdParamNote::TPhoneCmdParamNote(void) - ?Volume@TPhoneCmdParamRingTone@@QBEHXZ @ 264 NONAME ; int TPhoneCmdParamRingTone::Volume(void) const - ?SetItemTextArrayForListQuery@TPhoneCmdParamQuery@@QAEXAAVMDesC16Array@@@Z @ 265 NONAME ; void TPhoneCmdParamQuery::SetItemTextArrayForListQuery(class MDesC16Array &) - ?Type@TPhoneCmdParamRingTone@@QBE?AW4TPhoneRingToneType@@XZ @ 266 NONAME ; enum TPhoneRingToneType TPhoneCmdParamRingTone::Type(void) const - ?Key@TPhoneCmdParamKeyCapture@@QBE?AW4TStdScanCode@@XZ @ 267 NONAME ; enum TStdScanCode TPhoneCmdParamKeyCapture::Key(void) const - ?LabelText@TPhoneCmdParamEmergencyCallHeaderData@@QBEABVTDesC16@@XZ @ 268 NONAME ; class TDesC16 const & TPhoneCmdParamEmergencyCallHeaderData::LabelText(void) const - ?Ciphering@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 269 NONAME ; int TPhoneCmdParamIncallIndicatorData::Ciphering(void) const - ?SetQueryCommandObserver@TPhoneCmdParamQuery@@QAEXAAVMPhoneQueryCommandObserver@@@Z @ 270 NONAME ; void TPhoneCmdParamQuery::SetQueryCommandObserver(class MPhoneQueryCommandObserver &) - ?IsPhoneUIFeatureSupported@CPhoneCenRepProxy@@QAEHH@Z @ 271 NONAME ; int CPhoneCenRepProxy::IsPhoneUIFeatureSupported(int) - ?DefaultCba@TPhoneCmdParamQuery@@QBEHXZ @ 272 NONAME ; int TPhoneCmdParamQuery::DefaultCba(void) const - ?CallState@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 273 NONAME ; int TPhoneCmdParamIncallIndicatorData::CallState(void) const - ??0TPhoneCmdParamNumberEntryObserver@@QAE@XZ @ 274 NONAME ; TPhoneCmdParamNumberEntryObserver::TPhoneCmdParamNumberEntryObserver(void) - ?MessageData@TPhoneCmdParamMessageEditor@@QBEPAVCMessageData@@XZ @ 275 NONAME ; class CMessageData * TPhoneCmdParamMessageEditor::MessageData(void) const - ?SetLine2@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 276 NONAME ; void TPhoneCmdParamCallHeaderData::SetLine2(int) - ?FetchValuesFromCenRepL@CPhoneCenRepProxy@@QAEXAAVTPhoneCmdParamAppInfo@@W4TKeyCode@@PAVHBufC8@@AAH@Z @ 277 NONAME ; void CPhoneCenRepProxy::FetchValuesFromCenRepL(class TPhoneCmdParamAppInfo &, enum TKeyCode, class HBufC8 *, int &) - ?CNAPTextClippingDirection@TPhoneCmdParamCallHeaderData@@QBE?AW4TPhoneClippingDirection@CBubbleManager@@XZ @ 278 NONAME ; enum CBubbleManager::TPhoneClippingDirection TPhoneCmdParamCallHeaderData::CNAPTextClippingDirection(void) const - ?ParticipantCLI@TPhoneCmdParamCallHeaderData@@QBE?AW4TPhoneParticipantListCLI@1@XZ @ 279 NONAME ; enum TPhoneCmdParamCallHeaderData::TPhoneParticipantListCLI TPhoneCmdParamCallHeaderData::ParticipantCLI(void) const - ?Thumbnail@TPhoneCmdParamCallHeaderData@@QBEPAVCFbsBitmap@@XZ @ 280 NONAME ; class CFbsBitmap * TPhoneCmdParamCallHeaderData::Thumbnail(void) const - ?SetTimeOut@TPhoneCmdParamQuery@@QAEXH@Z @ 281 NONAME ; void TPhoneCmdParamQuery::SetTimeOut(int) - ?Boolean@TPhoneCmdParamBoolean@@QBEHXZ @ 282 NONAME ; int TPhoneCmdParamBoolean::Boolean(void) const - ?LogMsgFromPhoneUIToPE@CPhoneLogger@@QAEXHH@Z @ 283 NONAME ; void CPhoneLogger::LogMsgFromPhoneUIToPE(int, int) - ?SetCustomMessageId@TPhoneCmdParamAppInfo@@QAEXABVTUid@@@Z @ 284 NONAME ; void TPhoneCmdParamAppInfo::SetCustomMessageId(class TUid const &) - ?ResolveResourceID@CPhoneResourceResolverBase@@UBEHABH@Z @ 285 NONAME ; int CPhoneResourceResolverBase::ResolveResourceID(int const &) const - ?SetName@TPhoneCmdParamSfiData@@QAEXABVTDesC16@@@Z @ 286 NONAME ; void TPhoneCmdParamSfiData::SetName(class TDesC16 const &) - ?TitlePaneResourceId@TPhoneCmdParamSingleItemFetch@@QBEHXZ @ 287 NONAME ; int TPhoneCmdParamSingleItemFetch::TitlePaneResourceId(void) const - ?SetType@TPhoneCmdParamGlobalNote@@QAEXW4TAknGlobalNoteType@@@Z @ 288 NONAME ; void TPhoneCmdParamGlobalNote::SetType(enum TAknGlobalNoteType) - ?IncludeVideoCallOption@TPhoneCmdParamReconnectQuery@@QBEHXZ @ 289 NONAME ; int TPhoneCmdParamReconnectQuery::IncludeVideoCallOption(void) const - ?SetLittleBubbleVisible@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 290 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetLittleBubbleVisible(int) - ?Ciphering@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 291 NONAME ; int TPhoneCmdParamCallHeaderData::Ciphering(void) const - ?SetType@TPhoneCmdParamRingTone@@QAEXW4TPhoneRingToneType@@@Z @ 292 NONAME ; void TPhoneCmdParamRingTone::SetType(enum TPhoneRingToneType) - ?ResourceId@TPhoneCmdParamDynMenu@@QBEHXZ @ 293 NONAME ; int TPhoneCmdParamDynMenu::ResourceId(void) const - ?SetCipheringIndicatorAllowed@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 294 NONAME ; void TPhoneCmdParamCallHeaderData::SetCipheringIndicatorAllowed(int) - ?SetWaitTime@TPhoneCmdParamProgressNote@@QAEXVTTimeIntervalMicroSeconds32@@@Z @ 295 NONAME ; void TPhoneCmdParamProgressNote::SetWaitTime(class TTimeIntervalMicroSeconds32) - ?Ciphering@TPhoneCmdParamEmergencyCallHeaderData@@QBEHXZ @ 296 NONAME ; int TPhoneCmdParamEmergencyCallHeaderData::Ciphering(void) const - ??1CPhoneCallThemeMonitor@@UAE@XZ @ 297 NONAME ; CPhoneCallThemeMonitor::~CPhoneCallThemeMonitor(void) - ?SetNumberType@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 298 NONAME ; void TPhoneCmdParamCallHeaderData::SetNumberType(int) - ?Mute@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 299 NONAME ; int TPhoneCmdParamIncallIndicatorData::Mute(void) const - ?IsQwertyInput@CPhoneQwertyHandler@@QBEHXZ @ 300 NONAME ; int CPhoneQwertyHandler::IsQwertyInput(void) const - ?SetBoolean@TPhoneCmdParamBoolean@@QAEXH@Z @ 301 NONAME ; void TPhoneCmdParamBoolean::SetBoolean(int) - ?IsTelephonyFeatureSupported@CPhoneResourceResolverBase@@MBEHH@Z @ 302 NONAME ; int CPhoneResourceResolverBase::IsTelephonyFeatureSupported(int) const - ?Instance@CPhoneMainErrorMessagesHandler@@SAPAV1@XZ @ 303 NONAME ; class CPhoneMainErrorMessagesHandler * CPhoneMainErrorMessagesHandler::Instance(void) - ?SetViewUid@TPhoneCmdParamAppInfo@@QAEXABVTUid@@@Z @ 304 NONAME ; void TPhoneCmdParamAppInfo::SetViewUid(class TUid const &) - ?SetServiceId@TPhoneCmdParamCallHeaderData@@QAEXK@Z @ 305 NONAME ; void TPhoneCmdParamCallHeaderData::SetServiceId(unsigned long) - ?Instance@CPhoneCenRepProxy@@SAPAV1@XZ @ 306 NONAME ; class CPhoneCenRepProxy * CPhoneCenRepProxy::Instance(void) - ?AddCallFlag@TPhoneCmdParamCallHeaderData@@QAEXW4TPhoneCallTypeFlags@CBubbleManager@@@Z @ 307 NONAME ; void TPhoneCmdParamCallHeaderData::AddCallFlag(enum CBubbleManager::TPhoneCallTypeFlags) - ?SetQueryType@TPhoneCmdParamQuery@@QAEXW4TPhoneQueryType@@@Z @ 308 NONAME ; void TPhoneCmdParamQuery::SetQueryType(enum TPhoneQueryType) - ?Value@CPhonePubSubProxy@@QAEHABVTUid@@I@Z @ 309 NONAME ; int CPhonePubSubProxy::Value(class TUid const &, unsigned int) - ?SetWiredAccAvailable@TPhoneCmdParamAudioAvailability@@QAEXH@Z @ 310 NONAME ; void TPhoneCmdParamAudioAvailability::SetWiredAccAvailable(int) - ?SetString@TPhoneCmdParamSingleItemFetch@@QAEXPAVTDes16@@@Z @ 311 NONAME ; void TPhoneCmdParamSingleItemFetch::SetString(class TDes16 *) - ??0TPhoneCmdParamAudioOutput@@QAE@XZ @ 312 NONAME ; TPhoneCmdParamAudioOutput::TPhoneCmdParamAudioOutput(void) - ?IsCallerImage@TPhoneCmdParamRingTone@@QAEHXZ @ 313 NONAME ; int TPhoneCmdParamRingTone::IsCallerImage(void) - ??0TPhoneCmdParamQuery@@QAE@XZ @ 314 NONAME ; TPhoneCmdParamQuery::TPhoneCmdParamQuery(void) - ?SetPhoneNumber@TPhoneCmdParamReconnectQuery@@QAEXVTPtrC16@@@Z @ 315 NONAME ; void TPhoneCmdParamReconnectQuery::SetPhoneNumber(class TPtrC16) - ?Instance@CPhoneMainResourceResolver@@SAPAV1@XZ @ 316 NONAME ; class CPhoneMainResourceResolver * CPhoneMainResourceResolver::Instance(void) - ?ServiceId@TPhoneCmdParamSpeedDial@@QBEIXZ @ 317 NONAME ; unsigned int TPhoneCmdParamSpeedDial::ServiceId(void) const - ??1CPhoneLibraryContainer@@UAE@XZ @ 318 NONAME ; CPhoneLibraryContainer::~CPhoneLibraryContainer(void) - ?ClearBlackListOnNextKey@CPhoneClearBlacklist@@QAEXXZ @ 319 NONAME ; void CPhoneClearBlacklist::ClearBlackListOnNextKey(void) - ?Tone@TPhoneCmdParamQuery@@QBEHXZ @ 320 NONAME ; int TPhoneCmdParamQuery::Tone(void) const - ?SetNumberType@TPhoneCmdParamSpeedDial@@QAEXW4TPhoneNumberType@@@Z @ 321 NONAME ; void TPhoneCmdParamSpeedDial::SetNumberType(enum TPhoneNumberType) - ?SetRingingType@TPhoneCmdParamRingTone@@QAEXH@Z @ 322 NONAME ; void TPhoneCmdParamRingTone::SetRingingType(int) - ?CbaResourceId@TPhoneCmdParamSingleItemFetch@@QBEHXZ @ 323 NONAME ; int TPhoneCmdParamSingleItemFetch::CbaResourceId(void) const - ?SetCiphering@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 324 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetCiphering(int) - ?SetCipheringIndicatorAllowed@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 325 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetCipheringIndicatorAllowed(int) - ?NeedToEnableKeylock@CPhoneStorage@@UAEHXZ @ 326 NONAME ; int CPhoneStorage::NeedToEnableKeylock(void) - ?AudioOutput@TPhoneCmdParamAudioOutput@@QBE?AW4TPEAudioOutput@@XZ @ 327 NONAME ; enum TPEAudioOutput TPhoneCmdParamAudioOutput::AudioOutput(void) const - ?SetResourceId@TPhoneCmdParamProgressNote@@QAEXH@Z @ 328 NONAME ; void TPhoneCmdParamProgressNote::SetResourceId(int) - ??0TPhoneCmdParamInteger@@QAE@XZ @ 329 NONAME ; TPhoneCmdParamInteger::TPhoneCmdParamInteger(void) - ?Type@TPhoneCmdParamSingleItemFetch@@QAE?AW4TFetchType@CPhCntSingleItemFetch@@XZ @ 330 NONAME ; enum CPhCntSingleItemFetch::TFetchType TPhoneCmdParamSingleItemFetch::Type(void) - ?SetType@TPhoneCmdParamTransEffect@@QAEXW4TPhoneTransEffectType@@@Z @ 331 NONAME ; void TPhoneCmdParamTransEffect::SetType(enum TPhoneTransEffectType) - ?Bitmap@TPhoneCmdParamBitmap@@QBEPAVCFbsBitmap@@XZ @ 332 NONAME ; class CFbsBitmap * TPhoneCmdParamBitmap::Bitmap(void) const - ?SetTone@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 333 NONAME ; void TPhoneCmdParamGlobalNote::SetTone(int) - ?After@CPhoneTimer@@QAEXVTTimeIntervalMicroSeconds32@@VTCallBack@@@Z @ 334 NONAME ; void CPhoneTimer::After(class TTimeIntervalMicroSeconds32, class TCallBack) - ?ContactMatcher@TPhoneCmdParamReconnectQuery@@QBEPAVCPhCntMatcher@@XZ @ 335 NONAME ; class CPhCntMatcher * TPhoneCmdParamReconnectQuery::ContactMatcher(void) const + ?SetText@TPhoneCmdParamGlobalNote@@QAEXABVTDesC16@@@Z @ 38 NONAME ; void TPhoneCmdParamGlobalNote::SetText(class TDesC16 const &) + ?AddLibraryL@CPhoneLibraryContainer@@QAEXABVRLibrary@@@Z @ 39 NONAME ; void CPhoneLibraryContainer::AddLibraryL(class RLibrary const &) + ??1CPhoneResourceResolverBase@@UAE@XZ @ 40 NONAME ; CPhoneResourceResolverBase::~CPhoneResourceResolverBase(void) + ?SetInt@CPhoneCenRepProxy@@QAEHABVTUid@@IH@Z @ 41 NONAME ; int CPhoneCenRepProxy::SetInt(class TUid const &, unsigned int, int) + ?GetCustomCommandForTimeOut@TPhoneCmdParamQuery@@QBEHAAH@Z @ 42 NONAME ; int TPhoneCmdParamQuery::GetCustomCommandForTimeOut(int &) const + ?ParamId@TPhoneCommandParam@@QBE?AW4TPhoneParamId@1@XZ @ 43 NONAME ; enum TPhoneCommandParam::TPhoneParamId TPhoneCommandParam::ParamId(void) const + ?SetString@CPhoneCenRepProxy@@QAEHABVTUid@@IABVTDesC16@@@Z @ 44 NONAME ; int CPhoneCenRepProxy::SetString(class TUid const &, unsigned int, class TDesC16 const &) + ?Line2@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 45 NONAME ; int TPhoneCmdParamCallHeaderData::Line2(void) const + ??1CPhoneTimer@@UAE@XZ @ 46 NONAME ; CPhoneTimer::~CPhoneTimer(void) + ?LogMsgFromPEToPhoneUIEnd@CPhoneLogger@@QAEXH@Z @ 47 NONAME ; void CPhoneLogger::LogMsgFromPEToPhoneUIEnd(int) + ?DialerController@TPhoneCmdParamCustomDialer@@QAEPAVMPhoneDialerController@@XZ @ 48 NONAME ; class MPhoneDialerController * TPhoneCmdParamCustomDialer::DialerController(void) + ?Type@TPhoneCmdParamGlobalNote@@QBE?AW4TAknGlobalNoteType@@XZ @ 49 NONAME ; enum TAknGlobalNoteType TPhoneCmdParamGlobalNote::Type(void) const + ?SetMultipleInstances@TPhoneCmdParamAppInfo@@QAEXH@Z @ 50 NONAME ; void TPhoneCmdParamAppInfo::SetMultipleInstances(int) + ?Tone@TPhoneCmdParamGlobalNote@@QBEHXZ @ 51 NONAME ; int TPhoneCmdParamGlobalNote::Tone(void) const + ?ChangePropertyValue@CPhonePubSubProxy@@QAEXABVTUid@@IH@Z @ 52 NONAME ; void CPhonePubSubProxy::ChangePropertyValue(class TUid const &, unsigned int, int) + ?SetThumbnail@TPhoneCmdParamCallHeaderData@@QAEXPAVCFbsBitmap@@@Z @ 53 NONAME ; void TPhoneCmdParamCallHeaderData::SetThumbnail(class CFbsBitmap *) + ?SetCbaCommandMapping@TPhoneCmdParamQuery@@QAEXHH@Z @ 54 NONAME ; void TPhoneCmdParamQuery::SetCbaCommandMapping(int, int) + ?EventCode@TPhoneCmdParamKeyEvent@@QBE?AW4TEventCode@@XZ @ 55 NONAME ; enum TEventCode TPhoneCmdParamKeyEvent::EventCode(void) const + ?KeyEvent@TPhoneCmdParamKeyEvent@@QBE?BUTKeyEvent@@XZ @ 56 NONAME ; struct TKeyEvent const TPhoneCmdParamKeyEvent::KeyEvent(void) const + ?SetDataText@TPhoneCmdParamQuery@@QAEXPAVTDes16@@@Z @ 57 NONAME ; void TPhoneCmdParamQuery::SetDataText(class TDes16 *) + ??0TPhoneCmdParamAppInfo@@QAE@XZ @ 58 NONAME ; TPhoneCmdParamAppInfo::TPhoneCmdParamAppInfo(void) + ?LittleBubbleVisible@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 59 NONAME ; int TPhoneCmdParamIncallIndicatorData::LittleBubbleVisible(void) const + ?SetCallState@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 60 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetCallState(int) + ?GetString@CPhoneCenRepProxy@@QBEHABVTUid@@IAAVTDes16@@@Z @ 61 NONAME ; int CPhoneCenRepProxy::GetString(class TUid const &, unsigned int, class TDes16 &) const + ?ResourceId@TPhoneCmdParamProgressNote@@QBEHXZ @ 62 NONAME ; int TPhoneCmdParamProgressNote::ResourceId(void) const + ?ReconnectQueryObserver@TPhoneCmdParamReconnectQuery@@QBEAAVMCaUiReconnectQueryObserver@@XZ @ 63 NONAME ; class MCaUiReconnectQueryObserver & TPhoneCmdParamReconnectQuery::ReconnectQueryObserver(void) const + ?CallId@TPhoneCmdParamCallStateData@@QBEHXZ @ 64 NONAME ; int TPhoneCmdParamCallStateData::CallId(void) const + ?SetContactMatcher@TPhoneCmdParamReconnectQuery@@QAEXPAVCPhCntMatcher@@@Z @ 65 NONAME ; void TPhoneCmdParamReconnectQuery::SetContactMatcher(class CPhCntMatcher *) + ?NotifyChangeL@CPhoneCenRepProxy@@QAEXABVTUid@@IPAVMPhoneCenRepObserver@@@Z @ 66 NONAME ; void CPhoneCenRepProxy::NotifyChangeL(class TUid const &, unsigned int, class MPhoneCenRepObserver *) + ?SetResourceId@TPhoneCmdParamDynMenu@@QAEXH@Z @ 67 NONAME ; void TPhoneCmdParamDynMenu::SetResourceId(int) + ?Validate@CPhoneKeys@@SAHABVTDesC16@@@Z @ 68 NONAME ; int CPhoneKeys::Validate(class TDesC16 const &) + ??0TPhoneCmdParamKeyCapture@@QAE@XZ @ 69 NONAME ; TPhoneCmdParamKeyCapture::TPhoneCmdParamKeyCapture(void) + ?SetResourceId@TPhoneCmdParamNote@@QAEXH@Z @ 70 NONAME ; void TPhoneCmdParamNote::SetResourceId(int) + ?LogMsgFromPEToPhoneUI@CPhoneLogger@@QAEXHH@Z @ 71 NONAME ; void CPhoneLogger::LogMsgFromPEToPhoneUI(int, int) + ??0TPhoneCmdParamProgressNote@@QAE@XZ @ 72 NONAME ; TPhoneCmdParamProgressNote::TPhoneCmdParamProgressNote(void) + ?CallState@TPhoneCmdParamCallStateData@@QBEHXZ @ 73 NONAME ; int TPhoneCmdParamCallStateData::CallState(void) const + ?SetPointer@TPhoneCmdParamPointer@@QAEXPAX@Z @ 74 NONAME ; void TPhoneCmdParamPointer::SetPointer(void *) + ??1CPhoneCenRepProxy@@UAE@XZ @ 75 NONAME ; CPhoneCenRepProxy::~CPhoneCenRepProxy(void) + ?SetEventCode@TPhoneCmdParamKeyEvent@@QAEXW4TEventCode@@@Z @ 76 NONAME ; void TPhoneCmdParamKeyEvent::SetEventCode(enum TEventCode) + ?WaitTime@TPhoneCmdParamProgressNote@@QBE?AVTTimeIntervalMicroSeconds32@@XZ @ 77 NONAME ; class TTimeIntervalMicroSeconds32 TPhoneCmdParamProgressNote::WaitTime(void) const + ?SetParam@TPhoneCmdParamAppInfo@@QAEXABVTDesC8@@@Z @ 78 NONAME ; void TPhoneCmdParamAppInfo::SetParam(class TDesC8 const &) + ?CallType@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 79 NONAME ; int TPhoneCmdParamCallHeaderData::CallType(void) const + ??0TPhoneCmdParamPointer@@QAE@XZ @ 80 NONAME ; TPhoneCmdParamPointer::TPhoneCmdParamPointer(void) + ??0TPhoneCmdParamGlobalNote@@QAE@XZ @ 81 NONAME ; TPhoneCmdParamGlobalNote::TPhoneCmdParamGlobalNote(void) + ?SetCiphering@TPhoneCmdParamEmergencyCallHeaderData@@QAEXH@Z @ 82 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetCiphering(int) + ?SetTone@TPhoneCmdParamNote@@QAEXW4TTone@CAknNoteDialog@@@Z @ 83 NONAME ; void TPhoneCmdParamNote::SetTone(enum CAknNoteDialog::TTone) + ?SetCustomCommandForTimeOut@TPhoneCmdParamQuery@@QAEXH@Z @ 84 NONAME ; void TPhoneCmdParamQuery::SetCustomCommandForTimeOut(int) + ?SetIncludeVideoOption@TPhoneCmdParamReconnectQuery@@QAEXH@Z @ 85 NONAME ; void TPhoneCmdParamReconnectQuery::SetIncludeVideoOption(int) + ?IsBTAccAvailable@TPhoneCmdParamAudioAvailability@@QBEHXZ @ 86 NONAME ; int TPhoneCmdParamAudioAvailability::IsBTAccAvailable(void) const + ?Timeout@TPhoneCmdParamNote@@QBE?AW4TTimeout@CAknNoteDialog@@XZ @ 87 NONAME ; enum CAknNoteDialog::TTimeout TPhoneCmdParamNote::Timeout(void) const + ?Instance@CPhoneRecoverySystem@@SAPAV1@XZ @ 88 NONAME ; class CPhoneRecoverySystem * CPhoneRecoverySystem::Instance(void) + ?CancelTimer@CPhoneTimer@@QAEXXZ @ 89 NONAME ; void CPhoneTimer::CancelTimer(void) + ?NewL@CPhoneTimer@@SAPAV1@H@Z @ 90 NONAME ; class CPhoneTimer * CPhoneTimer::NewL(int) + ?GetInt@CPhoneCenRepProxy@@QBEHABVTUid@@IAAH@Z @ 91 NONAME ; int CPhoneCenRepProxy::GetInt(class TUid const &, unsigned int, int &) const + ?SetTextToSay@TPhoneCmdParamRingTone@@QAEXABVTDesC16@@@Z @ 92 NONAME ; void TPhoneCmdParamRingTone::SetTextToSay(class TDesC16 const &) + ?SetCallState@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 93 NONAME ; void TPhoneCmdParamCallHeaderData::SetCallState(int) + ?ContentCba@TPhoneCmdParamQuery@@QBEHXZ @ 94 NONAME ; int TPhoneCmdParamQuery::ContentCba(void) const + ?SetTextResourceId@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 95 NONAME ; void TPhoneCmdParamGlobalNote::SetTextResourceId(int) + ??0TPhoneCmdParamDynMenu@@QAE@XZ @ 96 NONAME ; TPhoneCmdParamDynMenu::TPhoneCmdParamDynMenu(void) + ?CancelAllNotifications@CPhonePubSubProxy@@SAXPAVMPhonePubSubObserver@@@Z @ 97 NONAME ; void CPhonePubSubProxy::CancelAllNotifications(class MPhonePubSubObserver *) + ??0TPhoneCommandParam@@QAE@XZ @ 98 NONAME ; TPhoneCommandParam::TPhoneCommandParam(void) + ?SetCNAPText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@W4TPhoneClippingDirection@CBubbleManager@@@Z @ 99 NONAME ; void TPhoneCmdParamCallHeaderData::SetCNAPText(class TDesC16 const &, enum CBubbleManager::TPhoneClippingDirection) + ??1CPhoneLogger@@UAE@XZ @ 100 NONAME ; CPhoneLogger::~CPhoneLogger(void) + ?Softkeys@TPhoneCmdParamGlobalNote@@QBEHXZ @ 101 NONAME ; int TPhoneCmdParamGlobalNote::Softkeys(void) const + ??0TPhoneCmdParamMessageEditor@@QAE@XZ @ 102 NONAME ; TPhoneCmdParamMessageEditor::TPhoneCmdParamMessageEditor(void) + ?SetCallState@TPhoneCmdParamCallStateData@@QAEXH@Z @ 103 NONAME ; void TPhoneCmdParamCallStateData::SetCallState(int) + ?CallerText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 104 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::CallerText(void) const + ?String@TPhoneCmdParamString@@QAEPAVTPtr16@@XZ @ 105 NONAME ; class TPtr16 * TPhoneCmdParamString::String(void) + ?SetKey@TPhoneCmdParamKeyCapture@@QAEXW4TStdScanCode@@@Z @ 106 NONAME ; void TPhoneCmdParamKeyCapture::SetKey(enum TStdScanCode) + ?IsExtraChar@CPhoneKeys@@SAHH@Z @ 107 NONAME ; int CPhoneKeys::IsExtraChar(int) + ?SetDynMenu@TPhoneCmdParamDynMenu@@QAEXPAX@Z @ 108 NONAME ; void TPhoneCmdParamDynMenu::SetDynMenu(void *) + ?IsSecondHashKey@CPhoneKeys@@SAHABVTDes16@@@Z @ 109 NONAME ; int CPhoneKeys::IsSecondHashKey(class TDes16 const &) + ?SetCallerImageStatus@TPhoneCmdParamRingTone@@QAEXH@Z @ 110 NONAME ; void TPhoneCmdParamRingTone::SetCallerImageStatus(int) + ?GetReal@CPhoneCenRepProxy@@QBEHABVTUid@@IAAN@Z @ 111 NONAME ; int CPhoneCenRepProxy::GetReal(class TUid const &, unsigned int, double &) const + ?SetShortLabelText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 112 NONAME ; void TPhoneCmdParamCallHeaderData::SetShortLabelText(class TDesC16 const &) + ?SetDialerController@TPhoneCmdParamCustomDialer@@QAEXPAVMPhoneDialerController@@@Z @ 113 NONAME ; void TPhoneCmdParamCustomDialer::SetDialerController(class MPhoneDialerController *) + ?RingTone@TPhoneCmdParamRingTone@@QBEABVTDesC16@@XZ @ 114 NONAME ; class TDesC16 const & TPhoneCmdParamRingTone::RingTone(void) const + ?TimeOut@TPhoneCmdParamQuery@@QBEHXZ @ 115 NONAME ; int TPhoneCmdParamQuery::TimeOut(void) const + ?ShortLabelText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 116 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::ShortLabelText(void) const + ?SetInteger@TPhoneCmdParamInteger@@QAEXH@Z @ 117 NONAME ; void TPhoneCmdParamInteger::SetInteger(int) + ?SetMaskBitmap@TPhoneCmdParamBitmap@@QAEXPAVCFbsBitmap@@@Z @ 118 NONAME ; void TPhoneCmdParamBitmap::SetMaskBitmap(class CFbsBitmap *) + ?SetTimeout@TPhoneCmdParamNote@@QAEXW4TTimeout@CAknNoteDialog@@@Z @ 119 NONAME ; void TPhoneCmdParamNote::SetTimeout(enum CAknNoteDialog::TTimeout) + ?SetCustomMessage@TPhoneCmdParamAppInfo@@QAEXABVTDesC8@@@Z @ 120 NONAME ; void TPhoneCmdParamAppInfo::SetCustomMessage(class TDesC8 const &) + ?BaseConstructL@CPhoneResourceResolverBase@@QAEXXZ @ 121 NONAME ; void CPhoneResourceResolverBase::BaseConstructL(void) + ?SetTextResourceId@TPhoneCmdParamNote@@QAEXH@Z @ 122 NONAME ; void TPhoneCmdParamNote::SetTextResourceId(int) + ?SetString@TPhoneCmdParamString@@QAEXPAVTPtr16@@@Z @ 123 NONAME ; void TPhoneCmdParamString::SetString(class TPtr16 *) + ?SetAppUid@TPhoneCmdParamAppInfo@@QAEXABVTUid@@@Z @ 124 NONAME ; void TPhoneCmdParamAppInfo::SetAppUid(class TUid const &) + ?String@TPhoneCmdParamSingleItemFetch@@QBEPAVTDes16@@XZ @ 125 NONAME ; class TDes16 * TPhoneCmdParamSingleItemFetch::String(void) const + ?SetBTAccAvailable@TPhoneCmdParamAudioAvailability@@QAEXH@Z @ 126 NONAME ; void TPhoneCmdParamAudioAvailability::SetBTAccAvailable(int) + ?IsTelephonyFeatureSupported@CPhoneCenRepProxy@@QAEHH@Z @ 127 NONAME ; int CPhoneCenRepProxy::IsTelephonyFeatureSupported(int) + ?CallImageThemeFilePath@CPhoneCallThemeMonitor@@QBE?AVTPtrC16@@XZ @ 128 NONAME ; class TPtrC16 CPhoneCallThemeMonitor::CallImageThemeFilePath(void) const + ?HasThumbnail@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 129 NONAME ; int TPhoneCmdParamCallHeaderData::HasThumbnail(void) const + ?ClearBlackListNow@CPhoneClearBlacklist@@QAEXXZ @ 130 NONAME ; void CPhoneClearBlacklist::ClearBlackListNow(void) + ?SetCipheringIndicatorAllowed@TPhoneCmdParamEmergencyCallHeaderData@@QAEXH@Z @ 131 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetCipheringIndicatorAllowed(int) + ?SetCommandParamId@TPhoneCmdParamQuery@@QAEXW4TPhoneParamId@TPhoneCommandParam@@@Z @ 132 NONAME ; void TPhoneCmdParamQuery::SetCommandParamId(enum TPhoneCommandParam::TPhoneParamId) + ??0TPhoneCmdParamEmergencyCallHeaderData@@QAE@XZ @ 133 NONAME ; TPhoneCmdParamEmergencyCallHeaderData::TPhoneCmdParamEmergencyCallHeaderData(void) + ?After@CPhoneTimer@@QAEXVTTimeIntervalMicroSeconds32@@PAVMPhoneTimer@@@Z @ 134 NONAME ; void CPhoneTimer::After(class TTimeIntervalMicroSeconds32, class MPhoneTimer *) + ?NewL@CPhoneLibraryContainer@@SAPAV1@XZ @ 135 NONAME ; class CPhoneLibraryContainer * CPhoneLibraryContainer::NewL(void) + ?CreateL@CPhoneClearBlacklist@@SAPAV1@AAVRWsSession@@ABVRWindowBase@@@Z @ 136 NONAME ; class CPhoneClearBlacklist * CPhoneClearBlacklist::CreateL(class RWsSession &, class RWindowBase const &) + ?SetVolume@TPhoneCmdParamRingTone@@QAEXH@Z @ 137 NONAME ; void TPhoneCmdParamRingTone::SetVolume(int) + ??0TPhoneCmdParamString@@QAE@XZ @ 138 NONAME ; TPhoneCmdParamString::TPhoneCmdParamString(void) + ?SetContactLink@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC8@@@Z @ 139 NONAME ; void TPhoneCmdParamCallHeaderData::SetContactLink(class TDesC8 const &) + ??4TPhoneCmdParamQuery@@QAEAAV0@ABV0@@Z @ 140 NONAME ; class TPhoneCmdParamQuery & TPhoneCmdParamQuery::operator=(class TPhoneCmdParamQuery const &) + ??0TPhoneCmdParamAudioAvailability@@QAE@XZ @ 141 NONAME ; TPhoneCmdParamAudioAvailability::TPhoneCmdParamAudioAvailability(void) + ??0TPhoneCmdParamRingTone@@QAE@XZ @ 142 NONAME ; TPhoneCmdParamRingTone::TPhoneCmdParamRingTone(void) + ?Observer@TPhoneCmdParamNumberEntryObserver@@QAE?AVTCallBack@@XZ @ 143 NONAME ; class TCallBack TPhoneCmdParamNumberEntryObserver::Observer(void) + ?SetSoftkeys@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 144 NONAME ; void TPhoneCmdParamGlobalNote::SetSoftkeys(int) + ??0CPhoneResourceResolverBase@@IAE@XZ @ 145 NONAME ; CPhoneResourceResolverBase::CPhoneResourceResolverBase(void) + ?SetCallId@TPhoneCmdParamCallStateData@@QAEXH@Z @ 146 NONAME ; void TPhoneCmdParamCallStateData::SetCallId(int) + ?MultipleInstances@TPhoneCmdParamAppInfo@@QBEHXZ @ 147 NONAME ; int TPhoneCmdParamAppInfo::MultipleInstances(void) const + ?ItemTextArrayForListQuery@TPhoneCmdParamQuery@@QBEPAVMDesC16Array@@XZ @ 148 NONAME ; class MDesC16Array * TPhoneCmdParamQuery::ItemTextArrayForListQuery(void) const + ?SetHeaderText@TPhoneCmdParamEmergencyCallHeaderData@@QAEXABVTDesC16@@@Z @ 149 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetHeaderText(class TDesC16 const &) + ?SetContentCba@TPhoneCmdParamQuery@@QAEXH@Z @ 150 NONAME ; void TPhoneCmdParamQuery::SetContentCba(int) + ?CaptureType@TPhoneCmdParamKeyCapture@@QBE?AW4TPhoneCaptureType@@XZ @ 151 NONAME ; enum TPhoneCaptureType TPhoneCmdParamKeyCapture::CaptureType(void) const + ?SetQueryResourceId@TPhoneCmdParamQuery@@QAEXH@Z @ 152 NONAME ; void TPhoneCmdParamQuery::SetQueryResourceId(int) + ?CancelNotify@CPhoneCenRepProxy@@QAEXPAVMPhoneCenRepObserver@@I@Z @ 153 NONAME ; void CPhoneCenRepProxy::CancelNotify(class MPhoneCenRepObserver *, unsigned int) + ?Param@TPhoneCmdParamAppInfo@@QBEABVTDesC8@@XZ @ 154 NONAME ; class TDesC8 const & TPhoneCmdParamAppInfo::Param(void) const + ??0CPhoneMethodLogger@@QAE@W4TPhoneUILoggingComponent@@VTPtrC16@@@Z @ 155 NONAME ; CPhoneMethodLogger::CPhoneMethodLogger(enum TPhoneUILoggingComponent, class TPtrC16) + ?IsDtmfTone@CPhoneKeys@@SAHABUTKeyEvent@@W4TEventCode@@@Z @ 156 NONAME ; int CPhoneKeys::IsDtmfTone(struct TKeyEvent const &, enum TEventCode) + ?SetMode@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 157 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetMode(int) + ?NewL@CPhoneCallThemeMonitor@@SAPAV1@XZ @ 158 NONAME ; class CPhoneCallThemeMonitor * CPhoneCallThemeMonitor::NewL(void) + ?SetCLIText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@W4TPhoneClippingDirection@CBubbleManager@@@Z @ 159 NONAME ; void TPhoneCmdParamCallHeaderData::SetCLIText(class TDesC16 const &, enum CBubbleManager::TPhoneClippingDirection) + ?SetPhoneNumber@TPhoneCmdParamSpeedDial@@QAEXPAVTPtr16@@@Z @ 160 NONAME ; void TPhoneCmdParamSpeedDial::SetPhoneNumber(class TPtr16 *) + ?SendKeyEnabled@TPhoneCmdParamQuery@@QBEHXZ @ 161 NONAME ; int TPhoneCmdParamQuery::SendKeyEnabled(void) const + ?SetTitlePaneResourceId@TPhoneCmdParamSingleItemFetch@@QAEXH@Z @ 162 NONAME ; void TPhoneCmdParamSingleItemFetch::SetTitlePaneResourceId(int) + ?Find@CPhoneCenRepProxy@@QBEHABVTUid@@KKAAV?$RArray@K@@@Z @ 163 NONAME ; int CPhoneCenRepProxy::Find(class TUid const &, unsigned long, unsigned long, class RArray &) const + ?SetLabelText@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 164 NONAME ; void TPhoneCmdParamCallHeaderData::SetLabelText(class TDesC16 const &) + ?CNAPText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 165 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::CNAPText(void) const + ?SetOwnPhoneNumberText@TPhoneCmdParamEmergencyCallHeaderData@@QAEXABVTDesC16@@@Z @ 166 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetOwnPhoneNumberText(class TDesC16 const &) + ?Emergency@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 167 NONAME ; int TPhoneCmdParamIncallIndicatorData::Emergency(void) const + ?SetCbaResourceId@TPhoneCmdParamSingleItemFetch@@QAEXH@Z @ 168 NONAME ; void TPhoneCmdParamSingleItemFetch::SetCbaResourceId(int) + ?AppUid@TPhoneCmdParamAppInfo@@QBE?AVTUid@@XZ @ 169 NONAME ; class TUid TPhoneCmdParamAppInfo::AppUid(void) const + ?CustomMessage@TPhoneCmdParamAppInfo@@QBEABVTDesC8@@XZ @ 170 NONAME ; class TDesC8 const & TPhoneCmdParamAppInfo::CustomMessage(void) const + ?QueryResourceId@TPhoneCmdParamQuery@@QBEHXZ @ 171 NONAME ; int TPhoneCmdParamQuery::QueryResourceId(void) const + ?SetRingTone@TPhoneCmdParamRingTone@@QAEXABVTDesC16@@@Z @ 172 NONAME ; void TPhoneCmdParamRingTone::SetRingTone(class TDesC16 const &) + ?NotifyChangeL@CPhonePubSubProxy@@QAEXABVTUid@@IPAVMPhonePubSubObserver@@@Z @ 173 NONAME ; void CPhonePubSubProxy::NotifyChangeL(class TUid const &, unsigned int, class MPhonePubSubObserver *) + ?SetEmergency@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 174 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetEmergency(int) + ?SetDefaultCba@TPhoneCmdParamQuery@@QAEXH@Z @ 175 NONAME ; void TPhoneCmdParamQuery::SetDefaultCba(int) + ?Type@TPhoneCmdParamTransEffect@@QBE?AW4TPhoneTransEffectType@@XZ @ 176 NONAME ; enum TPhoneTransEffectType TPhoneCmdParamTransEffect::Type(void) const + ??0TPhoneCmdParamSfiData@@QAE@XZ @ 177 NONAME ; TPhoneCmdParamSfiData::TPhoneCmdParamSfiData(void) + ??0TPhoneCmdParamCallHeaderData@@QAE@XZ @ 178 NONAME ; TPhoneCmdParamCallHeaderData::TPhoneCmdParamCallHeaderData(void) + ??1CPhoneClearBlacklist@@UAE@XZ @ 179 NONAME ; CPhoneClearBlacklist::~CPhoneClearBlacklist(void) + ?SetMute@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 180 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetMute(int) + ?KeyCode@TPhoneCmdParamKeyCapture@@QBE?AW4TKeyCode@@XZ @ 181 NONAME ; enum TKeyCode TPhoneCmdParamKeyCapture::KeyCode(void) const + ?IsNumberKey@CPhoneKeys@@SAHABUTKeyEvent@@W4TEventCode@@@Z @ 182 NONAME ; int CPhoneKeys::IsNumberKey(struct TKeyEvent const &, enum TEventCode) + ?TextResourceId@TPhoneCmdParamGlobalNote@@QBEHXZ @ 183 NONAME ; int TPhoneCmdParamGlobalNote::TextResourceId(void) const + ?SetCiphering@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 184 NONAME ; void TPhoneCmdParamCallHeaderData::SetCiphering(int) + ?EnablePreconditionL@CPhoneRecoverySystem@@QAEXXZ @ 185 NONAME ; void CPhoneRecoverySystem::EnablePreconditionL(void) + ?AddL@CPhoneRecoverySystem@@QAEHVTCallBack@@CW4TRecoveryState@CTeleRecoverySystem@@@Z @ 186 NONAME ; int CPhoneRecoverySystem::AddL(class TCallBack, signed char, enum CTeleRecoverySystem::TRecoveryState) + ?SetLine2@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 187 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetLine2(int) + ?SetAudioOutput@TPhoneCmdParamAudioOutput@@QAEXW4TPEAudioOutput@@@Z @ 188 NONAME ; void TPhoneCmdParamAudioOutput::SetAudioOutput(enum TPEAudioOutput) + ?HeaderText@TPhoneCmdParamEmergencyCallHeaderData@@QBEABVTDesC16@@XZ @ 189 NONAME ; class TDesC16 const & TPhoneCmdParamEmergencyCallHeaderData::HeaderText(void) const + ?CallImageThemeSettings@CPhoneCallThemeMonitor@@QBEHXZ @ 190 NONAME ; int CPhoneCallThemeMonitor::CallImageThemeSettings(void) const + ?SetLocation@TPhoneCmdParamSpeedDial@@QAEXH@Z @ 191 NONAME ; void TPhoneCmdParamSpeedDial::SetLocation(int) + ??0TPhoneCmdParamTransEffect@@QAE@XZ @ 192 NONAME ; TPhoneCmdParamTransEffect::TPhoneCmdParamTransEffect(void) + ?Number@TPhoneCmdParamSfiData@@QBEABVTDesC16@@XZ @ 193 NONAME ; class TDesC16 const & TPhoneCmdParamSfiData::Number(void) const + ?OwnPhoneNumberText@TPhoneCmdParamEmergencyCallHeaderData@@QBEABVTDesC16@@XZ @ 194 NONAME ; class TDesC16 const & TPhoneCmdParamEmergencyCallHeaderData::OwnPhoneNumberText(void) const + ?QueryPrompt@TPhoneCmdParamQuery@@QBEABVTDesC16@@XZ @ 195 NONAME ; class TDesC16 const & TPhoneCmdParamQuery::QueryPrompt(void) const + ?SetQueryPrompt@TPhoneCmdParamQuery@@QAEXABVTDesC16@@@Z @ 196 NONAME ; void TPhoneCmdParamQuery::SetQueryPrompt(class TDesC16 const &) + ?NewL@CPhoneQwertyHandler@@SAPAV1@XZ @ 197 NONAME ; class CPhoneQwertyHandler * CPhoneQwertyHandler::NewL(void) + ?IsNumericKey@CPhoneKeys@@SAHABUTKeyEvent@@W4TEventCode@@@Z @ 198 NONAME ; int CPhoneKeys::IsNumericKey(struct TKeyEvent const &, enum TEventCode) + ?SetCaptureType@TPhoneCmdParamKeyCapture@@QAEXW4TPhoneCaptureType@@@Z @ 199 NONAME ; void TPhoneCmdParamKeyCapture::SetCaptureType(enum TPhoneCaptureType) + ?ViewUid@TPhoneCmdParamAppInfo@@QBE?AVTUid@@XZ @ 200 NONAME ; class TUid TPhoneCmdParamAppInfo::ViewUid(void) const + ?CallFlag@TPhoneCmdParamCallHeaderData@@QBEKXZ @ 201 NONAME ; unsigned long TPhoneCmdParamCallHeaderData::CallFlag(void) const + ?SetLabelText@TPhoneCmdParamEmergencyCallHeaderData@@QAEXABVTDesC16@@@Z @ 202 NONAME ; void TPhoneCmdParamEmergencyCallHeaderData::SetLabelText(class TDesC16 const &) + ??0TPhoneCmdParamSpeedDial@@QAE@XZ @ 203 NONAME ; TPhoneCmdParamSpeedDial::TPhoneCmdParamSpeedDial(void) + ?IsCallerText@TPhoneCmdParamRingTone@@QAEHXZ @ 204 NONAME ; int TPhoneCmdParamRingTone::IsCallerText(void) + ?SetBitmap@TPhoneCmdParamBitmap@@QAEXPAVCFbsBitmap@@@Z @ 205 NONAME ; void TPhoneCmdParamBitmap::SetBitmap(class CFbsBitmap *) + ?SetNumber@TPhoneCmdParamSfiData@@QAEXABVTDesC16@@@Z @ 206 NONAME ; void TPhoneCmdParamSfiData::SetNumber(class TDesC16 const &) + ?Location@TPhoneCmdParamSpeedDial@@QAEHXZ @ 207 NONAME ; int TPhoneCmdParamSpeedDial::Location(void) + ?CipheringIndicatorAllowed@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 208 NONAME ; int TPhoneCmdParamCallHeaderData::CipheringIndicatorAllowed(void) const + ?Name@TPhoneCmdParamSfiData@@QBEABVTDesC16@@XZ @ 209 NONAME ; class TDesC16 const & TPhoneCmdParamSfiData::Name(void) const + ??0TPhoneCmdParamQuery@@QAE@ABV0@@Z @ 210 NONAME ; TPhoneCmdParamQuery::TPhoneCmdParamQuery(class TPhoneCmdParamQuery const &) + ?CallState@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 211 NONAME ; int TPhoneCmdParamCallHeaderData::CallState(void) const + ??0TPhoneCmdParamIncallIndicatorData@@QAE@XZ @ 212 NONAME ; TPhoneCmdParamIncallIndicatorData::TPhoneCmdParamIncallIndicatorData(void) + ?Picture@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 213 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::Picture(void) const + ?SetCallThemeSettingsObserver@CPhoneCallThemeMonitor@@QAEXPAVMPhoneCallThemeSettingsObserver@@@Z @ 214 NONAME ; void CPhoneCallThemeMonitor::SetCallThemeSettingsObserver(class MPhoneCallThemeSettingsObserver *) + ?ServiceId@TPhoneCmdParamCallHeaderData@@QBEKXZ @ 215 NONAME ; unsigned long TPhoneCmdParamCallHeaderData::ServiceId(void) const + ?LabelText@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 216 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::LabelText(void) const + ?Overflow@CPhoneLogger@@EAEXAAVTDes16@@@Z @ 217 NONAME ; void CPhoneLogger::Overflow(class TDes16 &) + ?SetServiceId@TPhoneCmdParamSpeedDial@@QAEXI@Z @ 218 NONAME ; void TPhoneCmdParamSpeedDial::SetServiceId(unsigned int) + ?SetKeyEvent@TPhoneCmdParamKeyEvent@@QAEXABUTKeyEvent@@@Z @ 219 NONAME ; void TPhoneCmdParamKeyEvent::SetKeyEvent(struct TKeyEvent const &) + ?Instance@CPhonePubSubProxy@@SAPAV1@XZ @ 220 NONAME ; class CPhonePubSubProxy * CPhonePubSubProxy::Instance(void) + ?ResourceId@TPhoneCmdParamNote@@QBEHXZ @ 221 NONAME ; int TPhoneCmdParamNote::ResourceId(void) const + ?CipheringIndicatorAllowed@TPhoneCmdParamEmergencyCallHeaderData@@QBEHXZ @ 222 NONAME ; int TPhoneCmdParamEmergencyCallHeaderData::CipheringIndicatorAllowed(void) const + ?CancelAllNotifies@CPhoneCenRepProxy@@SAXPAVMPhoneCenRepObserver@@@Z @ 223 NONAME ; void CPhoneCenRepProxy::CancelAllNotifies(class MPhoneCenRepObserver *) + ??1CPhoneQwertyHandler@@UAE@XZ @ 224 NONAME ; CPhoneQwertyHandler::~CPhoneQwertyHandler(void) + ?TextResourceId@TPhoneCmdParamNote@@QBEHXZ @ 225 NONAME ; int TPhoneCmdParamNote::TextResourceId(void) const + ?SetRemotePhoneNumber@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 226 NONAME ; void TPhoneCmdParamCallHeaderData::SetRemotePhoneNumber(class TDesC16 const &) + ?CipheringIndicatorAllowed@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 227 NONAME ; int TPhoneCmdParamIncallIndicatorData::CipheringIndicatorAllowed(void) const + ??0TPhoneCmdParamCallStateData@@QAE@XZ @ 228 NONAME ; TPhoneCmdParamCallStateData::TPhoneCmdParamCallStateData(void) + ?SetKeyCode@TPhoneCmdParamKeyCapture@@QAEXW4TKeyCode@@@Z @ 229 NONAME ; void TPhoneCmdParamKeyCapture::SetKeyCode(enum TKeyCode) + ?CustomMessageId@TPhoneCmdParamAppInfo@@QBE?AVTUid@@XZ @ 230 NONAME ; class TUid TPhoneCmdParamAppInfo::CustomMessageId(void) const + ?RemotePhoneNumber@TPhoneCmdParamCallHeaderData@@QBEABVTDesC16@@XZ @ 231 NONAME ; class TDesC16 const & TPhoneCmdParamCallHeaderData::RemotePhoneNumber(void) const + ?SetType@TPhoneCmdParamNote@@QAEXW4TPhoneNoteType@@@Z @ 232 NONAME ; void TPhoneCmdParamNote::SetType(enum TPhoneNoteType) + ?Instance@CPhoneClearBlacklist@@SAPAV1@XZ @ 233 NONAME ; class CPhoneClearBlacklist * CPhoneClearBlacklist::Instance(void) + ?TextToSay@TPhoneCmdParamRingTone@@QBEABVTDesC16@@XZ @ 234 NONAME ; class TDesC16 const & TPhoneCmdParamRingTone::TextToSay(void) const + ?Type@TPhoneCmdParamNote@@QBE?AW4TPhoneNoteType@@XZ @ 235 NONAME ; enum TPhoneNoteType TPhoneCmdParamNote::Type(void) const + ??0TPhoneCmdParamReconnectQuery@@QAE@AAVMCaUiReconnectQueryObserver@@@Z @ 236 NONAME ; TPhoneCmdParamReconnectQuery::TPhoneCmdParamReconnectQuery(class MCaUiReconnectQueryObserver &) + ?SetCallFlag@TPhoneCmdParamCallHeaderData@@QAEXW4TPhoneCallTypeFlags@CBubbleManager@@@Z @ 237 NONAME ; void TPhoneCmdParamCallHeaderData::SetCallFlag(enum CBubbleManager::TPhoneCallTypeFlags) + ?SetPicture@TPhoneCmdParamCallHeaderData@@QAEXABVTDesC16@@@Z @ 238 NONAME ; void TPhoneCmdParamCallHeaderData::SetPicture(class TDesC16 const &) + ?Integer@TPhoneCmdParamInteger@@QBEHXZ @ 239 NONAME ; int TPhoneCmdParamInteger::Integer(void) const + ?Mode@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 240 NONAME ; int TPhoneCmdParamIncallIndicatorData::Mode(void) const + ?SetText@TPhoneCmdParamNote@@QAEXABVTDesC16@@@Z @ 241 NONAME ; void TPhoneCmdParamNote::SetText(class TDesC16 const &) + ?SetCallerTextStatus@TPhoneCmdParamRingTone@@QAEXH@Z @ 242 NONAME ; void TPhoneCmdParamRingTone::SetCallerTextStatus(int) + ?IsWiredAccAvailable@TPhoneCmdParamAudioAvailability@@QBEHXZ @ 243 NONAME ; int TPhoneCmdParamAudioAvailability::IsWiredAccAvailable(void) const + ?SetWaitForReady@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 244 NONAME ; void TPhoneCmdParamGlobalNote::SetWaitForReady(int) + ??0TPhoneCmdParamBoolean@@QAE@XZ @ 245 NONAME ; TPhoneCmdParamBoolean::TPhoneCmdParamBoolean(void) + ?QueryCommandObserver@TPhoneCmdParamQuery@@QAEPAVMPhoneQueryCommandObserver@@XZ @ 246 NONAME ; class MPhoneQueryCommandObserver * TPhoneCmdParamQuery::QueryCommandObserver(void) + ?DataText@TPhoneCmdParamQuery@@QBEPAVTDes16@@XZ @ 247 NONAME ; class TDes16 * TPhoneCmdParamQuery::DataText(void) const + ?SetType@TPhoneCmdParamSingleItemFetch@@QAEXW4TFetchType@CPhCntSingleItemFetch@@@Z @ 248 NONAME ; void TPhoneCmdParamSingleItemFetch::SetType(enum CPhCntSingleItemFetch::TFetchType) + ?SetReal@CPhoneCenRepProxy@@QAEHABVTUid@@IN@Z @ 249 NONAME ; int CPhoneCenRepProxy::SetReal(class TUid const &, unsigned int, double) + ??0TPhoneCmdParamCustomDialer@@QAE@XZ @ 250 NONAME ; TPhoneCmdParamCustomDialer::TPhoneCmdParamCustomDialer(void) + ??1CPhonePubSubProxy@@UAE@XZ @ 251 NONAME ; CPhonePubSubProxy::~CPhonePubSubProxy(void) + ?NumericKeyCode@CPhoneQwertyHandler@@QAEHABUTKeyEvent@@@Z @ 252 NONAME ; int CPhoneQwertyHandler::NumericKeyCode(struct TKeyEvent const &) + ?SetMessageData@TPhoneCmdParamMessageEditor@@QAEXPAVCMessageData@@@Z @ 253 NONAME ; void TPhoneCmdParamMessageEditor::SetMessageData(class CMessageData *) + ??0TPhoneCmdParamNote@@QAE@XZ @ 254 NONAME ; TPhoneCmdParamNote::TPhoneCmdParamNote(void) + ?Volume@TPhoneCmdParamRingTone@@QBEHXZ @ 255 NONAME ; int TPhoneCmdParamRingTone::Volume(void) const + ?SetItemTextArrayForListQuery@TPhoneCmdParamQuery@@QAEXAAVMDesC16Array@@@Z @ 256 NONAME ; void TPhoneCmdParamQuery::SetItemTextArrayForListQuery(class MDesC16Array &) + ?Type@TPhoneCmdParamRingTone@@QBE?AW4TPhoneRingToneType@@XZ @ 257 NONAME ; enum TPhoneRingToneType TPhoneCmdParamRingTone::Type(void) const + ?Key@TPhoneCmdParamKeyCapture@@QBE?AW4TStdScanCode@@XZ @ 258 NONAME ; enum TStdScanCode TPhoneCmdParamKeyCapture::Key(void) const + ?LabelText@TPhoneCmdParamEmergencyCallHeaderData@@QBEABVTDesC16@@XZ @ 259 NONAME ; class TDesC16 const & TPhoneCmdParamEmergencyCallHeaderData::LabelText(void) const + ?Ciphering@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 260 NONAME ; int TPhoneCmdParamIncallIndicatorData::Ciphering(void) const + ?SetQueryCommandObserver@TPhoneCmdParamQuery@@QAEXAAVMPhoneQueryCommandObserver@@@Z @ 261 NONAME ; void TPhoneCmdParamQuery::SetQueryCommandObserver(class MPhoneQueryCommandObserver &) + ?IsPhoneUIFeatureSupported@CPhoneCenRepProxy@@QAEHH@Z @ 262 NONAME ; int CPhoneCenRepProxy::IsPhoneUIFeatureSupported(int) + ?DefaultCba@TPhoneCmdParamQuery@@QBEHXZ @ 263 NONAME ; int TPhoneCmdParamQuery::DefaultCba(void) const + ?CallState@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 264 NONAME ; int TPhoneCmdParamIncallIndicatorData::CallState(void) const + ??0TPhoneCmdParamNumberEntryObserver@@QAE@XZ @ 265 NONAME ; TPhoneCmdParamNumberEntryObserver::TPhoneCmdParamNumberEntryObserver(void) + ?MessageData@TPhoneCmdParamMessageEditor@@QBEPAVCMessageData@@XZ @ 266 NONAME ; class CMessageData * TPhoneCmdParamMessageEditor::MessageData(void) const + ?SetLine2@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 267 NONAME ; void TPhoneCmdParamCallHeaderData::SetLine2(int) + ?FetchValuesFromCenRepL@CPhoneCenRepProxy@@QAEXAAVTPhoneCmdParamAppInfo@@W4TKeyCode@@PAVHBufC8@@AAH@Z @ 268 NONAME ; void CPhoneCenRepProxy::FetchValuesFromCenRepL(class TPhoneCmdParamAppInfo &, enum TKeyCode, class HBufC8 *, int &) + ?CNAPTextClippingDirection@TPhoneCmdParamCallHeaderData@@QBE?AW4TPhoneClippingDirection@CBubbleManager@@XZ @ 269 NONAME ; enum CBubbleManager::TPhoneClippingDirection TPhoneCmdParamCallHeaderData::CNAPTextClippingDirection(void) const + ?ParticipantCLI@TPhoneCmdParamCallHeaderData@@QBE?AW4TPhoneParticipantListCLI@1@XZ @ 270 NONAME ; enum TPhoneCmdParamCallHeaderData::TPhoneParticipantListCLI TPhoneCmdParamCallHeaderData::ParticipantCLI(void) const + ?Thumbnail@TPhoneCmdParamCallHeaderData@@QBEPAVCFbsBitmap@@XZ @ 271 NONAME ; class CFbsBitmap * TPhoneCmdParamCallHeaderData::Thumbnail(void) const + ?SetTimeOut@TPhoneCmdParamQuery@@QAEXH@Z @ 272 NONAME ; void TPhoneCmdParamQuery::SetTimeOut(int) + ?Boolean@TPhoneCmdParamBoolean@@QBEHXZ @ 273 NONAME ; int TPhoneCmdParamBoolean::Boolean(void) const + ?LogMsgFromPhoneUIToPE@CPhoneLogger@@QAEXHH@Z @ 274 NONAME ; void CPhoneLogger::LogMsgFromPhoneUIToPE(int, int) + ?SetCustomMessageId@TPhoneCmdParamAppInfo@@QAEXABVTUid@@@Z @ 275 NONAME ; void TPhoneCmdParamAppInfo::SetCustomMessageId(class TUid const &) + ?ResolveResourceID@CPhoneResourceResolverBase@@UBEHABH@Z @ 276 NONAME ; int CPhoneResourceResolverBase::ResolveResourceID(int const &) const + ?SetName@TPhoneCmdParamSfiData@@QAEXABVTDesC16@@@Z @ 277 NONAME ; void TPhoneCmdParamSfiData::SetName(class TDesC16 const &) + ?TitlePaneResourceId@TPhoneCmdParamSingleItemFetch@@QBEHXZ @ 278 NONAME ; int TPhoneCmdParamSingleItemFetch::TitlePaneResourceId(void) const + ?SetType@TPhoneCmdParamGlobalNote@@QAEXW4TAknGlobalNoteType@@@Z @ 279 NONAME ; void TPhoneCmdParamGlobalNote::SetType(enum TAknGlobalNoteType) + ?IncludeVideoCallOption@TPhoneCmdParamReconnectQuery@@QBEHXZ @ 280 NONAME ; int TPhoneCmdParamReconnectQuery::IncludeVideoCallOption(void) const + ?SetLittleBubbleVisible@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 281 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetLittleBubbleVisible(int) + ?Ciphering@TPhoneCmdParamCallHeaderData@@QBEHXZ @ 282 NONAME ; int TPhoneCmdParamCallHeaderData::Ciphering(void) const + ?SetType@TPhoneCmdParamRingTone@@QAEXW4TPhoneRingToneType@@@Z @ 283 NONAME ; void TPhoneCmdParamRingTone::SetType(enum TPhoneRingToneType) + ?ResourceId@TPhoneCmdParamDynMenu@@QBEHXZ @ 284 NONAME ; int TPhoneCmdParamDynMenu::ResourceId(void) const + ?SetCipheringIndicatorAllowed@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 285 NONAME ; void TPhoneCmdParamCallHeaderData::SetCipheringIndicatorAllowed(int) + ?SetWaitTime@TPhoneCmdParamProgressNote@@QAEXVTTimeIntervalMicroSeconds32@@@Z @ 286 NONAME ; void TPhoneCmdParamProgressNote::SetWaitTime(class TTimeIntervalMicroSeconds32) + ?Ciphering@TPhoneCmdParamEmergencyCallHeaderData@@QBEHXZ @ 287 NONAME ; int TPhoneCmdParamEmergencyCallHeaderData::Ciphering(void) const + ??1CPhoneCallThemeMonitor@@UAE@XZ @ 288 NONAME ; CPhoneCallThemeMonitor::~CPhoneCallThemeMonitor(void) + ?SetNumberType@TPhoneCmdParamCallHeaderData@@QAEXH@Z @ 289 NONAME ; void TPhoneCmdParamCallHeaderData::SetNumberType(int) + ?Mute@TPhoneCmdParamIncallIndicatorData@@QBEHXZ @ 290 NONAME ; int TPhoneCmdParamIncallIndicatorData::Mute(void) const + ?IsQwertyInput@CPhoneQwertyHandler@@QBEHXZ @ 291 NONAME ; int CPhoneQwertyHandler::IsQwertyInput(void) const + ?SetBoolean@TPhoneCmdParamBoolean@@QAEXH@Z @ 292 NONAME ; void TPhoneCmdParamBoolean::SetBoolean(int) + ?IsTelephonyFeatureSupported@CPhoneResourceResolverBase@@MBEHH@Z @ 293 NONAME ; int CPhoneResourceResolverBase::IsTelephonyFeatureSupported(int) const + ?Instance@CPhoneMainErrorMessagesHandler@@SAPAV1@XZ @ 294 NONAME ; class CPhoneMainErrorMessagesHandler * CPhoneMainErrorMessagesHandler::Instance(void) + ?SetViewUid@TPhoneCmdParamAppInfo@@QAEXABVTUid@@@Z @ 295 NONAME ; void TPhoneCmdParamAppInfo::SetViewUid(class TUid const &) + ?SetServiceId@TPhoneCmdParamCallHeaderData@@QAEXK@Z @ 296 NONAME ; void TPhoneCmdParamCallHeaderData::SetServiceId(unsigned long) + ?Instance@CPhoneCenRepProxy@@SAPAV1@XZ @ 297 NONAME ; class CPhoneCenRepProxy * CPhoneCenRepProxy::Instance(void) + ?AddCallFlag@TPhoneCmdParamCallHeaderData@@QAEXW4TPhoneCallTypeFlags@CBubbleManager@@@Z @ 298 NONAME ; void TPhoneCmdParamCallHeaderData::AddCallFlag(enum CBubbleManager::TPhoneCallTypeFlags) + ?SetQueryType@TPhoneCmdParamQuery@@QAEXW4TPhoneQueryType@@@Z @ 299 NONAME ; void TPhoneCmdParamQuery::SetQueryType(enum TPhoneQueryType) + ?Value@CPhonePubSubProxy@@QAEHABVTUid@@I@Z @ 300 NONAME ; int CPhonePubSubProxy::Value(class TUid const &, unsigned int) + ?SetWiredAccAvailable@TPhoneCmdParamAudioAvailability@@QAEXH@Z @ 301 NONAME ; void TPhoneCmdParamAudioAvailability::SetWiredAccAvailable(int) + ?SetString@TPhoneCmdParamSingleItemFetch@@QAEXPAVTDes16@@@Z @ 302 NONAME ; void TPhoneCmdParamSingleItemFetch::SetString(class TDes16 *) + ??0TPhoneCmdParamAudioOutput@@QAE@XZ @ 303 NONAME ; TPhoneCmdParamAudioOutput::TPhoneCmdParamAudioOutput(void) + ?IsCallerImage@TPhoneCmdParamRingTone@@QAEHXZ @ 304 NONAME ; int TPhoneCmdParamRingTone::IsCallerImage(void) + ??0TPhoneCmdParamQuery@@QAE@XZ @ 305 NONAME ; TPhoneCmdParamQuery::TPhoneCmdParamQuery(void) + ?Instance@CPhoneMainResourceResolver@@SAPAV1@XZ @ 306 NONAME ; class CPhoneMainResourceResolver * CPhoneMainResourceResolver::Instance(void) + ?ServiceId@TPhoneCmdParamSpeedDial@@QBEIXZ @ 307 NONAME ; unsigned int TPhoneCmdParamSpeedDial::ServiceId(void) const + ?SetPhoneNumber@TPhoneCmdParamReconnectQuery@@QAEXVTPtrC16@@@Z @ 308 NONAME ; void TPhoneCmdParamReconnectQuery::SetPhoneNumber(class TPtrC16) + ??1CPhoneLibraryContainer@@UAE@XZ @ 309 NONAME ; CPhoneLibraryContainer::~CPhoneLibraryContainer(void) + ?ClearBlackListOnNextKey@CPhoneClearBlacklist@@QAEXXZ @ 310 NONAME ; void CPhoneClearBlacklist::ClearBlackListOnNextKey(void) + ?Tone@TPhoneCmdParamQuery@@QBEHXZ @ 311 NONAME ; int TPhoneCmdParamQuery::Tone(void) const + ?SetNumberType@TPhoneCmdParamSpeedDial@@QAEXW4TPhoneNumberType@@@Z @ 312 NONAME ; void TPhoneCmdParamSpeedDial::SetNumberType(enum TPhoneNumberType) + ?SetRingingType@TPhoneCmdParamRingTone@@QAEXH@Z @ 313 NONAME ; void TPhoneCmdParamRingTone::SetRingingType(int) + ?CbaResourceId@TPhoneCmdParamSingleItemFetch@@QBEHXZ @ 314 NONAME ; int TPhoneCmdParamSingleItemFetch::CbaResourceId(void) const + ?SetCiphering@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 315 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetCiphering(int) + ?SetCipheringIndicatorAllowed@TPhoneCmdParamIncallIndicatorData@@QAEXH@Z @ 316 NONAME ; void TPhoneCmdParamIncallIndicatorData::SetCipheringIndicatorAllowed(int) + ?AudioOutput@TPhoneCmdParamAudioOutput@@QBE?AW4TPEAudioOutput@@XZ @ 317 NONAME ; enum TPEAudioOutput TPhoneCmdParamAudioOutput::AudioOutput(void) const + ?SetResourceId@TPhoneCmdParamProgressNote@@QAEXH@Z @ 318 NONAME ; void TPhoneCmdParamProgressNote::SetResourceId(int) + ??0TPhoneCmdParamInteger@@QAE@XZ @ 319 NONAME ; TPhoneCmdParamInteger::TPhoneCmdParamInteger(void) + ?Type@TPhoneCmdParamSingleItemFetch@@QAE?AW4TFetchType@CPhCntSingleItemFetch@@XZ @ 320 NONAME ; enum CPhCntSingleItemFetch::TFetchType TPhoneCmdParamSingleItemFetch::Type(void) + ?SetType@TPhoneCmdParamTransEffect@@QAEXW4TPhoneTransEffectType@@@Z @ 321 NONAME ; void TPhoneCmdParamTransEffect::SetType(enum TPhoneTransEffectType) + ?Bitmap@TPhoneCmdParamBitmap@@QBEPAVCFbsBitmap@@XZ @ 322 NONAME ; class CFbsBitmap * TPhoneCmdParamBitmap::Bitmap(void) const + ?SetTone@TPhoneCmdParamGlobalNote@@QAEXH@Z @ 323 NONAME ; void TPhoneCmdParamGlobalNote::SetTone(int) + ?After@CPhoneTimer@@QAEXVTTimeIntervalMicroSeconds32@@VTCallBack@@@Z @ 324 NONAME ; void CPhoneTimer::After(class TTimeIntervalMicroSeconds32, class TCallBack) + ?ContactMatcher@TPhoneCmdParamReconnectQuery@@QBEPAVCPhCntMatcher@@XZ @ 325 NONAME ; class CPhCntMatcher * TPhoneCmdParamReconnectQuery::ContactMatcher(void) const + ?AddQwertyModeObserverL@CPhoneQwertyHandler@@QAEXAAVMPhoneQwertyModeObserver@@@Z @ 326 NONAME ; void CPhoneQwertyHandler::AddQwertyModeObserverL(class MPhoneQwertyModeObserver &) diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/eabi/phoneuiutilsu.def --- a/phoneapp/phoneuiutils/eabi/phoneuiutilsu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/eabi/phoneuiutilsu.def Fri Apr 23 14:59:43 2010 +0100 @@ -26,418 +26,395 @@ _ZN12CPhoneLoggerD0Ev @ 25 NONAME _ZN12CPhoneLoggerD1Ev @ 26 NONAME _ZN12CPhoneLoggerD2Ev @ 27 NONAME - _ZN13CPhoneStorage14IsScreenLockedEv @ 28 NONAME - _ZN13CPhoneStorage15SetScreenLockedEi @ 29 NONAME - _ZN13CPhoneStorage19NeedToEnableKeylockEv @ 30 NONAME - _ZN13CPhoneStorage20ResetBlockedKeysListEv @ 31 NONAME - _ZN13CPhoneStorage22AppendBlockedKeysListLE12TStdScanCode @ 32 NONAME - _ZN13CPhoneStorage22IsBlockedKeysListEmptyEv @ 33 NONAME - _ZN13CPhoneStorage22SetNeedToEnableKeylockEi @ 34 NONAME - _ZN13CPhoneStorage4NewLEv @ 35 NONAME - _ZN13CPhoneStorageD0Ev @ 36 NONAME - _ZN13CPhoneStorageD1Ev @ 37 NONAME - _ZN13CPhoneStorageD2Ev @ 38 NONAME - _ZN17CPhoneCenRepProxy12CancelNotifyEP20MPhoneCenRepObserverj @ 39 NONAME - _ZN17CPhoneCenRepProxy13NotifyChangeLERK4TUidjP20MPhoneCenRepObserver @ 40 NONAME - _ZN17CPhoneCenRepProxy17CancelAllNotifiesEP20MPhoneCenRepObserver @ 41 NONAME - _ZN17CPhoneCenRepProxy22FetchValuesFromCenRepLER21TPhoneCmdParamAppInfo8TKeyCodeP6HBufC8Ri @ 42 NONAME - _ZN17CPhoneCenRepProxy25IsPhoneUIFeatureSupportedEi @ 43 NONAME - _ZN17CPhoneCenRepProxy27IsTelephonyFeatureSupportedEi @ 44 NONAME - _ZN17CPhoneCenRepProxy6SetIntERK4TUidji @ 45 NONAME - _ZN17CPhoneCenRepProxy7SetRealERK4TUidjd @ 46 NONAME - _ZN17CPhoneCenRepProxy8InstanceEv @ 47 NONAME - _ZN17CPhoneCenRepProxy9SetStringERK4TUidjRK7TDesC16 @ 48 NONAME - _ZN17CPhoneCenRepProxyD0Ev @ 49 NONAME - _ZN17CPhoneCenRepProxyD1Ev @ 50 NONAME - _ZN17CPhoneCenRepProxyD2Ev @ 51 NONAME - _ZN17CPhonePubSubProxy13NotifyChangeLERK4TUidjP20MPhonePubSubObserver @ 52 NONAME - _ZN17CPhonePubSubProxy19ChangePropertyValueERK4TUidji @ 53 NONAME - _ZN17CPhonePubSubProxy22CancelAllNotificationsEP20MPhonePubSubObserver @ 54 NONAME - _ZN17CPhonePubSubProxy5ValueERK4TUidj @ 55 NONAME - _ZN17CPhonePubSubProxy8InstanceEv @ 56 NONAME - _ZN17CPhonePubSubProxyD0Ev @ 57 NONAME - _ZN17CPhonePubSubProxyD1Ev @ 58 NONAME - _ZN17CPhonePubSubProxyD2Ev @ 59 NONAME - _ZN18CPhoneMethodLoggerC1E24TPhoneUILoggingComponent7TPtrC16 @ 60 NONAME - _ZN18CPhoneMethodLoggerC2E24TPhoneUILoggingComponent7TPtrC16 @ 61 NONAME - _ZN18CPhoneMethodLoggerD0Ev @ 62 NONAME - _ZN18CPhoneMethodLoggerD1Ev @ 63 NONAME - _ZN18CPhoneMethodLoggerD2Ev @ 64 NONAME - _ZN18TPhoneCmdParamNote10SetTimeoutEN14CAknNoteDialog8TTimeoutE @ 65 NONAME - _ZN18TPhoneCmdParamNote13SetResourceIdEi @ 66 NONAME - _ZN18TPhoneCmdParamNote17SetTextResourceIdEi @ 67 NONAME - _ZN18TPhoneCmdParamNote7SetTextERK7TDesC16 @ 68 NONAME - _ZN18TPhoneCmdParamNote7SetToneEN14CAknNoteDialog5TToneE @ 69 NONAME - _ZN18TPhoneCmdParamNote7SetTypeE14TPhoneNoteType @ 70 NONAME - _ZN18TPhoneCmdParamNoteC1Ev @ 71 NONAME - _ZN18TPhoneCmdParamNoteC2Ev @ 72 NONAME - _ZN18TPhoneCommandParamC1Ev @ 73 NONAME - _ZN18TPhoneCommandParamC2Ev @ 74 NONAME - _ZN19CPhoneQwertyHandler14NumericKeyCodeERK9TKeyEvent @ 75 NONAME - _ZN19CPhoneQwertyHandler4NewLEv @ 76 NONAME - _ZN19CPhoneQwertyHandlerD0Ev @ 77 NONAME - _ZN19CPhoneQwertyHandlerD1Ev @ 78 NONAME - _ZN19CPhoneQwertyHandlerD2Ev @ 79 NONAME - _ZN19TPhoneCmdParamQuery10SetTimeOutEi @ 80 NONAME - _ZN19TPhoneCmdParamQuery11SetDataTextEP6TDes16 @ 81 NONAME - _ZN19TPhoneCmdParamQuery12SetQueryTypeE15TPhoneQueryType @ 82 NONAME - _ZN19TPhoneCmdParamQuery13SetContentCbaEi @ 83 NONAME - _ZN19TPhoneCmdParamQuery13SetDefaultCbaEi @ 84 NONAME - _ZN19TPhoneCmdParamQuery14SetQueryPromptERK7TDesC16 @ 85 NONAME - _ZN19TPhoneCmdParamQuery17SetCommandParamIdEN18TPhoneCommandParam13TPhoneParamIdE @ 86 NONAME - _ZN19TPhoneCmdParamQuery17SetSendKeyEnabledEi @ 87 NONAME - _ZN19TPhoneCmdParamQuery18SetQueryResourceIdEi @ 88 NONAME - _ZN19TPhoneCmdParamQuery20QueryCommandObserverEv @ 89 NONAME - _ZN19TPhoneCmdParamQuery20SetCbaCommandMappingEii @ 90 NONAME - _ZN19TPhoneCmdParamQuery23SetQueryCommandObserverER26MPhoneQueryCommandObserver @ 91 NONAME - _ZN19TPhoneCmdParamQuery26SetCustomCommandForTimeOutEi @ 92 NONAME - _ZN19TPhoneCmdParamQuery28SetItemTextArrayForListQueryER12MDesC16Array @ 93 NONAME - _ZN19TPhoneCmdParamQuery7SetToneEi @ 94 NONAME - _ZN19TPhoneCmdParamQueryC1ERKS_ @ 95 NONAME - _ZN19TPhoneCmdParamQueryC1Ev @ 96 NONAME - _ZN19TPhoneCmdParamQueryC2ERKS_ @ 97 NONAME - _ZN19TPhoneCmdParamQueryC2Ev @ 98 NONAME - _ZN19TPhoneCmdParamQueryaSERKS_ @ 99 NONAME - _ZN20CPhoneClearBlacklist17ClearBlackListNowEv @ 100 NONAME - _ZN20CPhoneClearBlacklist23ClearBlackListOnNextKeyEv @ 101 NONAME - _ZN20CPhoneClearBlacklist7CreateLER10RWsSessionRK11RWindowBase @ 102 NONAME - _ZN20CPhoneClearBlacklist8InstanceEv @ 103 NONAME - _ZN20CPhoneClearBlacklistD0Ev @ 104 NONAME - _ZN20CPhoneClearBlacklistD1Ev @ 105 NONAME - _ZN20CPhoneClearBlacklistD2Ev @ 106 NONAME - _ZN20CPhoneRecoverySystem10RecoverNowEiai @ 107 NONAME - _ZN20CPhoneRecoverySystem19EnablePreconditionLEv @ 108 NONAME - _ZN20CPhoneRecoverySystem4AddLE9TCallBackaN19CTeleRecoverySystem14TRecoveryStateE @ 109 NONAME - _ZN20CPhoneRecoverySystem6RemoveEi @ 110 NONAME - _ZN20CPhoneRecoverySystem8InstanceEv @ 111 NONAME - _ZN20TPhoneCmdParamBitmap13SetMaskBitmapEP10CFbsBitmap @ 112 NONAME - _ZN20TPhoneCmdParamBitmap9SetBitmapEP10CFbsBitmap @ 113 NONAME - _ZN20TPhoneCmdParamBitmapC1Ev @ 114 NONAME - _ZN20TPhoneCmdParamBitmapC2Ev @ 115 NONAME - _ZN20TPhoneCmdParamString6StringEv @ 116 NONAME - _ZN20TPhoneCmdParamString9SetStringEP6TPtr16 @ 117 NONAME - _ZN20TPhoneCmdParamStringC1Ev @ 118 NONAME - _ZN20TPhoneCmdParamStringC2Ev @ 119 NONAME - _ZN21TPhoneCmdParamAppInfo10SetViewUidERK4TUid @ 120 NONAME - _ZN21TPhoneCmdParamAppInfo16SetCustomMessageERK6TDesC8 @ 121 NONAME - _ZN21TPhoneCmdParamAppInfo18SetCustomMessageIdERK4TUid @ 122 NONAME - _ZN21TPhoneCmdParamAppInfo20SetMultipleInstancesEi @ 123 NONAME - _ZN21TPhoneCmdParamAppInfo8SetParamERK6TDesC8 @ 124 NONAME - _ZN21TPhoneCmdParamAppInfo9SetAppUidERK4TUid @ 125 NONAME - _ZN21TPhoneCmdParamAppInfoC1Ev @ 126 NONAME - _ZN21TPhoneCmdParamAppInfoC2Ev @ 127 NONAME - _ZN21TPhoneCmdParamBoolean10SetBooleanEi @ 128 NONAME - _ZN21TPhoneCmdParamBooleanC1Ev @ 129 NONAME - _ZN21TPhoneCmdParamBooleanC2Ev @ 130 NONAME - _ZN21TPhoneCmdParamDynMenu10SetDynMenuEPv @ 131 NONAME - _ZN21TPhoneCmdParamDynMenu13SetResourceIdEi @ 132 NONAME - _ZN21TPhoneCmdParamDynMenu7DynMenuEv @ 133 NONAME - _ZN21TPhoneCmdParamDynMenuC1Ev @ 134 NONAME - _ZN21TPhoneCmdParamDynMenuC2Ev @ 135 NONAME - _ZN21TPhoneCmdParamInteger10SetIntegerEi @ 136 NONAME - _ZN21TPhoneCmdParamIntegerC1Ev @ 137 NONAME - _ZN21TPhoneCmdParamIntegerC2Ev @ 138 NONAME - _ZN21TPhoneCmdParamPointer10SetPointerEPv @ 139 NONAME - _ZN21TPhoneCmdParamPointerC1Ev @ 140 NONAME - _ZN21TPhoneCmdParamPointerC2Ev @ 141 NONAME - _ZN21TPhoneCmdParamSfiData7SetNameERK7TDesC16 @ 142 NONAME - _ZN21TPhoneCmdParamSfiData9SetNumberERK7TDesC16 @ 143 NONAME - _ZN21TPhoneCmdParamSfiDataC1Ev @ 144 NONAME - _ZN21TPhoneCmdParamSfiDataC2Ev @ 145 NONAME - _ZN22CPhoneCallThemeMonitor28SetCallThemeSettingsObserverEP31MPhoneCallThemeSettingsObserver @ 146 NONAME - _ZN22CPhoneCallThemeMonitor4NewLEv @ 147 NONAME - _ZN22CPhoneCallThemeMonitorD0Ev @ 148 NONAME - _ZN22CPhoneCallThemeMonitorD1Ev @ 149 NONAME - _ZN22CPhoneCallThemeMonitorD2Ev @ 150 NONAME - _ZN22CPhoneLibraryContainer11AddLibraryLERK8RLibrary @ 151 NONAME - _ZN22CPhoneLibraryContainer4NewLEv @ 152 NONAME - _ZN22CPhoneLibraryContainerD0Ev @ 153 NONAME - _ZN22CPhoneLibraryContainerD1Ev @ 154 NONAME - _ZN22CPhoneLibraryContainerD2Ev @ 155 NONAME - _ZN22TPhoneCmdParamKeyEvent11SetKeyEventERK9TKeyEvent @ 156 NONAME - _ZN22TPhoneCmdParamKeyEvent12SetEventCodeE10TEventCode @ 157 NONAME - _ZN22TPhoneCmdParamKeyEventC1Ev @ 158 NONAME - _ZN22TPhoneCmdParamKeyEventC2Ev @ 159 NONAME - _ZN22TPhoneCmdParamRingTone11SetRingToneERK7TDesC16 @ 160 NONAME - _ZN22TPhoneCmdParamRingTone12IsCallerTextEv @ 161 NONAME - _ZN22TPhoneCmdParamRingTone12SetTextToSayERK7TDesC16 @ 162 NONAME - _ZN22TPhoneCmdParamRingTone13IsCallerImageEv @ 163 NONAME - _ZN22TPhoneCmdParamRingTone14SetRingingTypeEi @ 164 NONAME - _ZN22TPhoneCmdParamRingTone19SetCallerTextStatusEi @ 165 NONAME - _ZN22TPhoneCmdParamRingTone20SetCallerImageStatusEi @ 166 NONAME - _ZN22TPhoneCmdParamRingTone7SetTypeE18TPhoneRingToneType @ 167 NONAME - _ZN22TPhoneCmdParamRingTone9SetVolumeEi @ 168 NONAME - _ZN22TPhoneCmdParamRingToneC1Ev @ 169 NONAME - _ZN22TPhoneCmdParamRingToneC2Ev @ 170 NONAME - _ZN23TPhoneCmdParamSpeedDial10NumberTypeEv @ 171 NONAME - _ZN23TPhoneCmdParamSpeedDial11PhoneNumberEv @ 172 NONAME - _ZN23TPhoneCmdParamSpeedDial11SetLocationEi @ 173 NONAME - _ZN23TPhoneCmdParamSpeedDial12SetServiceIdEj @ 174 NONAME - _ZN23TPhoneCmdParamSpeedDial13SetNumberTypeE16TPhoneNumberType @ 175 NONAME - _ZN23TPhoneCmdParamSpeedDial14SetPhoneNumberEP6TPtr16 @ 176 NONAME - _ZN23TPhoneCmdParamSpeedDial8LocationEv @ 177 NONAME - _ZN23TPhoneCmdParamSpeedDialC1Ev @ 178 NONAME - _ZN23TPhoneCmdParamSpeedDialC2Ev @ 179 NONAME - _ZN24TPhoneCmdParamGlobalNote11SetSoftkeysEi @ 180 NONAME - _ZN24TPhoneCmdParamGlobalNote15SetWaitForReadyEi @ 181 NONAME - _ZN24TPhoneCmdParamGlobalNote17SetTextResourceIdEi @ 182 NONAME - _ZN24TPhoneCmdParamGlobalNote7SetTextERK7TDesC16 @ 183 NONAME - _ZN24TPhoneCmdParamGlobalNote7SetToneEi @ 184 NONAME - _ZN24TPhoneCmdParamGlobalNote7SetTypeE18TAknGlobalNoteType @ 185 NONAME - _ZN24TPhoneCmdParamGlobalNoteC1Ev @ 186 NONAME - _ZN24TPhoneCmdParamGlobalNoteC2Ev @ 187 NONAME - _ZN24TPhoneCmdParamKeyCapture10SetKeyCodeE8TKeyCode @ 188 NONAME - _ZN24TPhoneCmdParamKeyCapture14SetCaptureTypeE17TPhoneCaptureType @ 189 NONAME - _ZN24TPhoneCmdParamKeyCapture6SetKeyE12TStdScanCode @ 190 NONAME - _ZN24TPhoneCmdParamKeyCaptureC1Ev @ 191 NONAME - _ZN24TPhoneCmdParamKeyCaptureC2Ev @ 192 NONAME - _ZN25TPhoneCmdParamAudioOutput14SetAudioOutputE14TPEAudioOutput @ 193 NONAME - _ZN25TPhoneCmdParamAudioOutputC1Ev @ 194 NONAME - _ZN25TPhoneCmdParamAudioOutputC2Ev @ 195 NONAME - _ZN25TPhoneCmdParamTransEffect7SetTypeE21TPhoneTransEffectType @ 196 NONAME - _ZN25TPhoneCmdParamTransEffectC1Ev @ 197 NONAME - _ZN25TPhoneCmdParamTransEffectC2Ev @ 198 NONAME - _ZN26CPhoneMainResourceResolver8InstanceEv @ 199 NONAME - _ZN26CPhoneResourceResolverBase14BaseConstructLEv @ 200 NONAME - _ZN26CPhoneResourceResolverBaseC1Ev @ 201 NONAME - _ZN26CPhoneResourceResolverBaseC2Ev @ 202 NONAME - _ZN26CPhoneResourceResolverBaseD0Ev @ 203 NONAME - _ZN26CPhoneResourceResolverBaseD1Ev @ 204 NONAME - _ZN26CPhoneResourceResolverBaseD2Ev @ 205 NONAME - _ZN26TPhoneCmdParamCustomDialer16DialerControllerEv @ 206 NONAME - _ZN26TPhoneCmdParamCustomDialer19SetDialerControllerEP22MPhoneDialerController @ 207 NONAME - _ZN26TPhoneCmdParamCustomDialerC1Ev @ 208 NONAME - _ZN26TPhoneCmdParamCustomDialerC2Ev @ 209 NONAME - _ZN26TPhoneCmdParamProgressNote11SetWaitTimeE27TTimeIntervalMicroSeconds32 @ 210 NONAME - _ZN26TPhoneCmdParamProgressNote13SetResourceIdEi @ 211 NONAME - _ZN26TPhoneCmdParamProgressNoteC1Ev @ 212 NONAME - _ZN26TPhoneCmdParamProgressNoteC2Ev @ 213 NONAME - _ZN27TPhoneCmdParamCallStateData12SetCallStateEi @ 214 NONAME - _ZN27TPhoneCmdParamCallStateData9SetCallIdEi @ 215 NONAME - _ZN27TPhoneCmdParamCallStateDataC1Ev @ 216 NONAME - _ZN27TPhoneCmdParamCallStateDataC2Ev @ 217 NONAME - _ZN27TPhoneCmdParamMessageEditor14SetMessageDataEP12CMessageData @ 218 NONAME - _ZN27TPhoneCmdParamMessageEditorC1Ev @ 219 NONAME - _ZN27TPhoneCmdParamMessageEditorC2Ev @ 220 NONAME - _ZN28TPhoneCmdParamCallHeaderData10SetCLITextERK7TDesC16N14CBubbleManager23TPhoneClippingDirectionE @ 221 NONAME - _ZN28TPhoneCmdParamCallHeaderData10SetPictureERK7TDesC16 @ 222 NONAME - _ZN28TPhoneCmdParamCallHeaderData11AddCallFlagEN14CBubbleManager19TPhoneCallTypeFlagsE @ 223 NONAME - _ZN28TPhoneCmdParamCallHeaderData11SetCNAPTextERK7TDesC16N14CBubbleManager23TPhoneClippingDirectionE @ 224 NONAME - _ZN28TPhoneCmdParamCallHeaderData11SetCallFlagEN14CBubbleManager19TPhoneCallTypeFlagsE @ 225 NONAME - _ZN28TPhoneCmdParamCallHeaderData11SetCallTypeEi @ 226 NONAME - _ZN28TPhoneCmdParamCallHeaderData12SetCallStateEi @ 227 NONAME - _ZN28TPhoneCmdParamCallHeaderData12SetCipheringEi @ 228 NONAME - _ZN28TPhoneCmdParamCallHeaderData12SetLabelTextERK7TDesC16 @ 229 NONAME - _ZN28TPhoneCmdParamCallHeaderData12SetServiceIdEm @ 230 NONAME - _ZN28TPhoneCmdParamCallHeaderData12SetThumbnailEP10CFbsBitmap @ 231 NONAME - _ZN28TPhoneCmdParamCallHeaderData13SetCallerTextERK7TDesC16 @ 232 NONAME - _ZN28TPhoneCmdParamCallHeaderData13SetNumberTypeEi @ 233 NONAME - _ZN28TPhoneCmdParamCallHeaderData14SetContactLinkERK6TDesC8 @ 234 NONAME - _ZN28TPhoneCmdParamCallHeaderData15SetHasThumbnailEi @ 235 NONAME - _ZN28TPhoneCmdParamCallHeaderData17SetShortLabelTextERK7TDesC16 @ 236 NONAME - _ZN28TPhoneCmdParamCallHeaderData20SetRemotePhoneNumberERK7TDesC16 @ 237 NONAME - _ZN28TPhoneCmdParamCallHeaderData21SetParticipantListCLIENS_24TPhoneParticipantListCLIE @ 238 NONAME - _ZN28TPhoneCmdParamCallHeaderData28SetCipheringIndicatorAllowedEi @ 239 NONAME - _ZN28TPhoneCmdParamCallHeaderData8SetLine2Ei @ 240 NONAME - _ZN28TPhoneCmdParamCallHeaderDataC1Ev @ 241 NONAME - _ZN28TPhoneCmdParamCallHeaderDataC2Ev @ 242 NONAME - _ZN28TPhoneCmdParamReconnectQuery14SetPhoneNumberE7TPtrC16 @ 243 NONAME - _ZN28TPhoneCmdParamReconnectQuery17SetContactMatcherEP13CPhCntMatcher @ 244 NONAME - _ZN28TPhoneCmdParamReconnectQuery21SetIncludeVideoOptionEi @ 245 NONAME - _ZN28TPhoneCmdParamReconnectQueryC1ER27MCaUiReconnectQueryObserver @ 246 NONAME - _ZN28TPhoneCmdParamReconnectQueryC2ER27MCaUiReconnectQueryObserver @ 247 NONAME - _ZN29TPhoneCmdParamSingleItemFetch16SetCbaResourceIdEi @ 248 NONAME - _ZN29TPhoneCmdParamSingleItemFetch22SetTitlePaneResourceIdEi @ 249 NONAME - _ZN29TPhoneCmdParamSingleItemFetch4TypeEv @ 250 NONAME - _ZN29TPhoneCmdParamSingleItemFetch7SetTypeEN21CPhCntSingleItemFetch10TFetchTypeE @ 251 NONAME - _ZN29TPhoneCmdParamSingleItemFetch9SetStringEP6TDes16 @ 252 NONAME - _ZN29TPhoneCmdParamSingleItemFetchC1Ev @ 253 NONAME - _ZN29TPhoneCmdParamSingleItemFetchC2Ev @ 254 NONAME - _ZN30CPhoneMainErrorMessagesHandler8InstanceEv @ 255 NONAME - _ZN31TPhoneCmdParamAudioAvailability17SetBTAccAvailableEi @ 256 NONAME - _ZN31TPhoneCmdParamAudioAvailability20SetWiredAccAvailableEi @ 257 NONAME - _ZN31TPhoneCmdParamAudioAvailabilityC1Ev @ 258 NONAME - _ZN31TPhoneCmdParamAudioAvailabilityC2Ev @ 259 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData12SetCallStateEi @ 260 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData12SetCipheringEi @ 261 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData12SetEmergencyEi @ 262 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData22SetLittleBubbleVisibleEi @ 263 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData28SetCipheringIndicatorAllowedEi @ 264 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData7SetModeEi @ 265 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData7SetMuteEi @ 266 NONAME - _ZN33TPhoneCmdParamIncallIndicatorData8SetLine2Ei @ 267 NONAME - _ZN33TPhoneCmdParamIncallIndicatorDataC1Ev @ 268 NONAME - _ZN33TPhoneCmdParamIncallIndicatorDataC2Ev @ 269 NONAME - _ZN33TPhoneCmdParamNumberEntryObserver11SetObserverE9TCallBack @ 270 NONAME - _ZN33TPhoneCmdParamNumberEntryObserver8ObserverEv @ 271 NONAME - _ZN33TPhoneCmdParamNumberEntryObserverC1Ev @ 272 NONAME - _ZN33TPhoneCmdParamNumberEntryObserverC2Ev @ 273 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderData12SetCipheringEi @ 274 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderData12SetLabelTextERK7TDesC16 @ 275 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderData13SetHeaderTextERK7TDesC16 @ 276 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderData21SetOwnPhoneNumberTextERK7TDesC16 @ 277 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderData28SetCipheringIndicatorAllowedEi @ 278 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderDataC1Ev @ 279 NONAME - _ZN37TPhoneCmdParamEmergencyCallHeaderDataC2Ev @ 280 NONAME - _ZNK13CPhoneStorage17GetBlockedKeyListEv @ 281 NONAME - _ZNK17CPhoneCenRepProxy4FindERK4TUidmmR6RArrayImE @ 282 NONAME - _ZNK17CPhoneCenRepProxy6GetIntERK4TUidjRi @ 283 NONAME - _ZNK17CPhoneCenRepProxy7GetRealERK4TUidjRd @ 284 NONAME - _ZNK17CPhoneCenRepProxy9GetStringERK4TUidjR6TDes16 @ 285 NONAME - _ZNK18TPhoneCmdParamNote10ResourceIdEv @ 286 NONAME - _ZNK18TPhoneCmdParamNote14TextResourceIdEv @ 287 NONAME - _ZNK18TPhoneCmdParamNote4TextEv @ 288 NONAME - _ZNK18TPhoneCmdParamNote4ToneEv @ 289 NONAME - _ZNK18TPhoneCmdParamNote4TypeEv @ 290 NONAME - _ZNK18TPhoneCmdParamNote7TimeoutEv @ 291 NONAME - _ZNK18TPhoneCommandParam7ParamIdEv @ 292 NONAME - _ZNK19CPhoneQwertyHandler13IsQwertyInputEv @ 293 NONAME - _ZNK19TPhoneCmdParamQuery10ContentCbaEv @ 294 NONAME - _ZNK19TPhoneCmdParamQuery10DefaultCbaEv @ 295 NONAME - _ZNK19TPhoneCmdParamQuery11QueryPromptEv @ 296 NONAME - _ZNK19TPhoneCmdParamQuery14SendKeyEnabledEv @ 297 NONAME - _ZNK19TPhoneCmdParamQuery15QueryResourceIdEv @ 298 NONAME - _ZNK19TPhoneCmdParamQuery17CbaCommandMappingEi @ 299 NONAME - _ZNK19TPhoneCmdParamQuery25ItemTextArrayForListQueryEv @ 300 NONAME - _ZNK19TPhoneCmdParamQuery26GetCustomCommandForTimeOutERi @ 301 NONAME - _ZNK19TPhoneCmdParamQuery4ToneEv @ 302 NONAME - _ZNK19TPhoneCmdParamQuery7TimeOutEv @ 303 NONAME - _ZNK19TPhoneCmdParamQuery8DataTextEv @ 304 NONAME - _ZNK19TPhoneCmdParamQuery9QueryTypeEv @ 305 NONAME - _ZNK20TPhoneCmdParamBitmap10MaskBitmapEv @ 306 NONAME - _ZNK20TPhoneCmdParamBitmap6BitmapEv @ 307 NONAME - _ZNK21TPhoneCmdParamAppInfo13CustomMessageEv @ 308 NONAME - _ZNK21TPhoneCmdParamAppInfo15CustomMessageIdEv @ 309 NONAME - _ZNK21TPhoneCmdParamAppInfo17MultipleInstancesEv @ 310 NONAME - _ZNK21TPhoneCmdParamAppInfo5ParamEv @ 311 NONAME - _ZNK21TPhoneCmdParamAppInfo6AppUidEv @ 312 NONAME - _ZNK21TPhoneCmdParamAppInfo7ViewUidEv @ 313 NONAME - _ZNK21TPhoneCmdParamBoolean7BooleanEv @ 314 NONAME - _ZNK21TPhoneCmdParamDynMenu10ResourceIdEv @ 315 NONAME - _ZNK21TPhoneCmdParamInteger7IntegerEv @ 316 NONAME - _ZNK21TPhoneCmdParamPointer7PointerEv @ 317 NONAME - _ZNK21TPhoneCmdParamSfiData4NameEv @ 318 NONAME - _ZNK21TPhoneCmdParamSfiData6NumberEv @ 319 NONAME - _ZNK22CPhoneCallThemeMonitor22CallImageThemeFilePathEv @ 320 NONAME - _ZNK22CPhoneCallThemeMonitor22CallImageThemeSettingsEv @ 321 NONAME - _ZNK22TPhoneCmdParamKeyEvent8KeyEventEv @ 322 NONAME - _ZNK22TPhoneCmdParamKeyEvent9EventCodeEv @ 323 NONAME - _ZNK22TPhoneCmdParamRingTone11RingingTypeEv @ 324 NONAME - _ZNK22TPhoneCmdParamRingTone4TypeEv @ 325 NONAME - _ZNK22TPhoneCmdParamRingTone6VolumeEv @ 326 NONAME - _ZNK22TPhoneCmdParamRingTone8RingToneEv @ 327 NONAME - _ZNK22TPhoneCmdParamRingTone9TextToSayEv @ 328 NONAME - _ZNK23TPhoneCmdParamSpeedDial9ServiceIdEv @ 329 NONAME - _ZNK24TPhoneCmdParamGlobalNote12WaitForReadyEv @ 330 NONAME - _ZNK24TPhoneCmdParamGlobalNote14TextResourceIdEv @ 331 NONAME - _ZNK24TPhoneCmdParamGlobalNote4TextEv @ 332 NONAME - _ZNK24TPhoneCmdParamGlobalNote4ToneEv @ 333 NONAME - _ZNK24TPhoneCmdParamGlobalNote4TypeEv @ 334 NONAME - _ZNK24TPhoneCmdParamGlobalNote8SoftkeysEv @ 335 NONAME - _ZNK24TPhoneCmdParamKeyCapture11CaptureTypeEv @ 336 NONAME - _ZNK24TPhoneCmdParamKeyCapture3KeyEv @ 337 NONAME - _ZNK24TPhoneCmdParamKeyCapture7KeyCodeEv @ 338 NONAME - _ZNK25TPhoneCmdParamAudioOutput11AudioOutputEv @ 339 NONAME - _ZNK25TPhoneCmdParamTransEffect4TypeEv @ 340 NONAME - _ZNK26CPhoneResourceResolverBase17ResolveResourceIDERKi @ 341 NONAME - _ZNK26CPhoneResourceResolverBase27IsTelephonyFeatureSupportedEi @ 342 NONAME - _ZNK26TPhoneCmdParamProgressNote10ResourceIdEv @ 343 NONAME - _ZNK26TPhoneCmdParamProgressNote8WaitTimeEv @ 344 NONAME - _ZNK27TPhoneCmdParamCallStateData6CallIdEv @ 345 NONAME - _ZNK27TPhoneCmdParamCallStateData9CallStateEv @ 346 NONAME - _ZNK27TPhoneCmdParamMessageEditor11MessageDataEv @ 347 NONAME - _ZNK28TPhoneCmdParamCallHeaderData10CallerTextEv @ 348 NONAME - _ZNK28TPhoneCmdParamCallHeaderData10NumberTypeEv @ 349 NONAME - _ZNK28TPhoneCmdParamCallHeaderData11ContactLinkEv @ 350 NONAME - _ZNK28TPhoneCmdParamCallHeaderData12HasThumbnailEv @ 351 NONAME - _ZNK28TPhoneCmdParamCallHeaderData14ParticipantCLIEv @ 352 NONAME - _ZNK28TPhoneCmdParamCallHeaderData14ShortLabelTextEv @ 353 NONAME - _ZNK28TPhoneCmdParamCallHeaderData17RemotePhoneNumberEv @ 354 NONAME - _ZNK28TPhoneCmdParamCallHeaderData24CLITextClippingDirectionEv @ 355 NONAME - _ZNK28TPhoneCmdParamCallHeaderData25CNAPTextClippingDirectionEv @ 356 NONAME - _ZNK28TPhoneCmdParamCallHeaderData25CipheringIndicatorAllowedEv @ 357 NONAME - _ZNK28TPhoneCmdParamCallHeaderData5Line2Ev @ 358 NONAME - _ZNK28TPhoneCmdParamCallHeaderData7CLITextEv @ 359 NONAME - _ZNK28TPhoneCmdParamCallHeaderData7PictureEv @ 360 NONAME - _ZNK28TPhoneCmdParamCallHeaderData8CNAPTextEv @ 361 NONAME - _ZNK28TPhoneCmdParamCallHeaderData8CallFlagEv @ 362 NONAME - _ZNK28TPhoneCmdParamCallHeaderData8CallTypeEv @ 363 NONAME - _ZNK28TPhoneCmdParamCallHeaderData9CallStateEv @ 364 NONAME - _ZNK28TPhoneCmdParamCallHeaderData9CipheringEv @ 365 NONAME - _ZNK28TPhoneCmdParamCallHeaderData9LabelTextEv @ 366 NONAME - _ZNK28TPhoneCmdParamCallHeaderData9ServiceIdEv @ 367 NONAME - _ZNK28TPhoneCmdParamCallHeaderData9ThumbnailEv @ 368 NONAME - _ZNK28TPhoneCmdParamReconnectQuery11PhoneNumberEv @ 369 NONAME - _ZNK28TPhoneCmdParamReconnectQuery14ContactMatcherEv @ 370 NONAME - _ZNK28TPhoneCmdParamReconnectQuery22IncludeVideoCallOptionEv @ 371 NONAME - _ZNK28TPhoneCmdParamReconnectQuery22ReconnectQueryObserverEv @ 372 NONAME - _ZNK29TPhoneCmdParamSingleItemFetch13CbaResourceIdEv @ 373 NONAME - _ZNK29TPhoneCmdParamSingleItemFetch19TitlePaneResourceIdEv @ 374 NONAME - _ZNK29TPhoneCmdParamSingleItemFetch6StringEv @ 375 NONAME - _ZNK31TPhoneCmdParamAudioAvailability16IsBTAccAvailableEv @ 376 NONAME - _ZNK31TPhoneCmdParamAudioAvailability19IsWiredAccAvailableEv @ 377 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData19LittleBubbleVisibleEv @ 378 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData25CipheringIndicatorAllowedEv @ 379 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData4ModeEv @ 380 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData4MuteEv @ 381 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData5Line2Ev @ 382 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData9CallStateEv @ 383 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData9CipheringEv @ 384 NONAME - _ZNK33TPhoneCmdParamIncallIndicatorData9EmergencyEv @ 385 NONAME - _ZNK37TPhoneCmdParamEmergencyCallHeaderData10HeaderTextEv @ 386 NONAME - _ZNK37TPhoneCmdParamEmergencyCallHeaderData18OwnPhoneNumberTextEv @ 387 NONAME - _ZNK37TPhoneCmdParamEmergencyCallHeaderData25CipheringIndicatorAllowedEv @ 388 NONAME - _ZNK37TPhoneCmdParamEmergencyCallHeaderData9CipheringEv @ 389 NONAME - _ZNK37TPhoneCmdParamEmergencyCallHeaderData9LabelTextEv @ 390 NONAME - _ZTI11CPhoneTimer @ 391 NONAME - _ZTI12CPhoneLogger @ 392 NONAME - _ZTI13CPhoneStorage @ 393 NONAME - _ZTI17CPhoneCenRepProxy @ 394 NONAME - _ZTI17CPhonePubSubProxy @ 395 NONAME - _ZTI18CPhoneMethodLogger @ 396 NONAME - _ZTI19CPhoneQwertyHandler @ 397 NONAME - _ZTI20CPhoneClearBlacklist @ 398 NONAME - _ZTI20CPhoneRecoverySystem @ 399 NONAME - _ZTI22CPhoneCallThemeMonitor @ 400 NONAME - _ZTI22CPhoneLibraryContainer @ 401 NONAME - _ZTI23CPhoneQwertyModeMonitor @ 402 NONAME - _ZTI24CPhoneCenRepEventHandler @ 403 NONAME - _ZTI24CPhoneLangSettingMonitor @ 404 NONAME - _ZTI25CPhonePublishSubscriberAO @ 405 NONAME - _ZTI26CPhoneMainResourceResolver @ 406 NONAME - _ZTI26CPhoneResourceResolverBase @ 407 NONAME - _ZTI30CPhoneMainErrorMessagesHandler @ 408 NONAME - _ZTV11CPhoneTimer @ 409 NONAME - _ZTV12CPhoneLogger @ 410 NONAME - _ZTV13CPhoneStorage @ 411 NONAME - _ZTV17CPhoneCenRepProxy @ 412 NONAME - _ZTV17CPhonePubSubProxy @ 413 NONAME - _ZTV18CPhoneMethodLogger @ 414 NONAME - _ZTV19CPhoneQwertyHandler @ 415 NONAME - _ZTV20CPhoneClearBlacklist @ 416 NONAME - _ZTV20CPhoneRecoverySystem @ 417 NONAME - _ZTV22CPhoneCallThemeMonitor @ 418 NONAME - _ZTV22CPhoneLibraryContainer @ 419 NONAME - _ZTV23CPhoneQwertyModeMonitor @ 420 NONAME - _ZTV24CPhoneCenRepEventHandler @ 421 NONAME - _ZTV24CPhoneLangSettingMonitor @ 422 NONAME - _ZTV25CPhonePublishSubscriberAO @ 423 NONAME - _ZTV26CPhoneMainResourceResolver @ 424 NONAME - _ZTV26CPhoneResourceResolverBase @ 425 NONAME - _ZTV30CPhoneMainErrorMessagesHandler @ 426 NONAME - _ZThn4_N12CPhoneLoggerD0Ev @ 427 NONAME - _ZThn4_N12CPhoneLoggerD1Ev @ 428 NONAME - _ZThn4_N13CPhoneStorage14IsScreenLockedEv @ 429 NONAME - _ZThn4_N13CPhoneStorage15SetScreenLockedEi @ 430 NONAME - _ZThn4_N13CPhoneStorage19NeedToEnableKeylockEv @ 431 NONAME - _ZThn4_N13CPhoneStorage20ResetBlockedKeysListEv @ 432 NONAME - _ZThn4_N13CPhoneStorage22AppendBlockedKeysListLE12TStdScanCode @ 433 NONAME - _ZThn4_N13CPhoneStorage22IsBlockedKeysListEmptyEv @ 434 NONAME - _ZThn4_N13CPhoneStorage22SetNeedToEnableKeylockEi @ 435 NONAME - _ZThn4_N13CPhoneStorageD0Ev @ 436 NONAME - _ZThn4_N13CPhoneStorageD1Ev @ 437 NONAME - _ZThn4_N26CPhoneResourceResolverBaseD0Ev @ 438 NONAME - _ZThn4_N26CPhoneResourceResolverBaseD1Ev @ 439 NONAME - _ZThn4_NK13CPhoneStorage17GetBlockedKeyListEv @ 440 NONAME - _ZThn4_NK26CPhoneResourceResolverBase17ResolveResourceIDERKi @ 441 NONAME + _ZN17CPhoneCenRepProxy12CancelNotifyEP20MPhoneCenRepObserverj @ 28 NONAME + _ZN17CPhoneCenRepProxy13NotifyChangeLERK4TUidjP20MPhoneCenRepObserver @ 29 NONAME + _ZN17CPhoneCenRepProxy17CancelAllNotifiesEP20MPhoneCenRepObserver @ 30 NONAME + _ZN17CPhoneCenRepProxy22FetchValuesFromCenRepLER21TPhoneCmdParamAppInfo8TKeyCodeP6HBufC8Ri @ 31 NONAME + _ZN17CPhoneCenRepProxy25IsPhoneUIFeatureSupportedEi @ 32 NONAME + _ZN17CPhoneCenRepProxy27IsTelephonyFeatureSupportedEi @ 33 NONAME + _ZN17CPhoneCenRepProxy6SetIntERK4TUidji @ 34 NONAME + _ZN17CPhoneCenRepProxy7SetRealERK4TUidjd @ 35 NONAME + _ZN17CPhoneCenRepProxy8InstanceEv @ 36 NONAME + _ZN17CPhoneCenRepProxy9SetStringERK4TUidjRK7TDesC16 @ 37 NONAME + _ZN17CPhoneCenRepProxyD0Ev @ 38 NONAME + _ZN17CPhoneCenRepProxyD1Ev @ 39 NONAME + _ZN17CPhoneCenRepProxyD2Ev @ 40 NONAME + _ZN17CPhonePubSubProxy13NotifyChangeLERK4TUidjP20MPhonePubSubObserver @ 41 NONAME + _ZN17CPhonePubSubProxy19ChangePropertyValueERK4TUidji @ 42 NONAME + _ZN17CPhonePubSubProxy22CancelAllNotificationsEP20MPhonePubSubObserver @ 43 NONAME + _ZN17CPhonePubSubProxy5ValueERK4TUidj @ 44 NONAME + _ZN17CPhonePubSubProxy8InstanceEv @ 45 NONAME + _ZN17CPhonePubSubProxyD0Ev @ 46 NONAME + _ZN17CPhonePubSubProxyD1Ev @ 47 NONAME + _ZN17CPhonePubSubProxyD2Ev @ 48 NONAME + _ZN18CPhoneMethodLoggerC1E24TPhoneUILoggingComponent7TPtrC16 @ 49 NONAME + _ZN18CPhoneMethodLoggerC2E24TPhoneUILoggingComponent7TPtrC16 @ 50 NONAME + _ZN18CPhoneMethodLoggerD0Ev @ 51 NONAME + _ZN18CPhoneMethodLoggerD1Ev @ 52 NONAME + _ZN18CPhoneMethodLoggerD2Ev @ 53 NONAME + _ZN18TPhoneCmdParamNote10SetTimeoutEN14CAknNoteDialog8TTimeoutE @ 54 NONAME + _ZN18TPhoneCmdParamNote13SetResourceIdEi @ 55 NONAME + _ZN18TPhoneCmdParamNote17SetTextResourceIdEi @ 56 NONAME + _ZN18TPhoneCmdParamNote7SetTextERK7TDesC16 @ 57 NONAME + _ZN18TPhoneCmdParamNote7SetToneEN14CAknNoteDialog5TToneE @ 58 NONAME + _ZN18TPhoneCmdParamNote7SetTypeE14TPhoneNoteType @ 59 NONAME + _ZN18TPhoneCmdParamNoteC1Ev @ 60 NONAME + _ZN18TPhoneCmdParamNoteC2Ev @ 61 NONAME + _ZN18TPhoneCommandParamC1Ev @ 62 NONAME + _ZN18TPhoneCommandParamC2Ev @ 63 NONAME + _ZN19CPhoneQwertyHandler14NumericKeyCodeERK9TKeyEvent @ 64 NONAME + _ZN19CPhoneQwertyHandler4NewLEv @ 65 NONAME + _ZN19CPhoneQwertyHandlerD0Ev @ 66 NONAME + _ZN19CPhoneQwertyHandlerD1Ev @ 67 NONAME + _ZN19CPhoneQwertyHandlerD2Ev @ 68 NONAME + _ZN19TPhoneCmdParamQuery10SetTimeOutEi @ 69 NONAME + _ZN19TPhoneCmdParamQuery11SetDataTextEP6TDes16 @ 70 NONAME + _ZN19TPhoneCmdParamQuery12SetQueryTypeE15TPhoneQueryType @ 71 NONAME + _ZN19TPhoneCmdParamQuery13SetContentCbaEi @ 72 NONAME + _ZN19TPhoneCmdParamQuery13SetDefaultCbaEi @ 73 NONAME + _ZN19TPhoneCmdParamQuery14SetQueryPromptERK7TDesC16 @ 74 NONAME + _ZN19TPhoneCmdParamQuery17SetCommandParamIdEN18TPhoneCommandParam13TPhoneParamIdE @ 75 NONAME + _ZN19TPhoneCmdParamQuery17SetSendKeyEnabledEi @ 76 NONAME + _ZN19TPhoneCmdParamQuery18SetQueryResourceIdEi @ 77 NONAME + _ZN19TPhoneCmdParamQuery20QueryCommandObserverEv @ 78 NONAME + _ZN19TPhoneCmdParamQuery20SetCbaCommandMappingEii @ 79 NONAME + _ZN19TPhoneCmdParamQuery23SetQueryCommandObserverER26MPhoneQueryCommandObserver @ 80 NONAME + _ZN19TPhoneCmdParamQuery26SetCustomCommandForTimeOutEi @ 81 NONAME + _ZN19TPhoneCmdParamQuery28SetItemTextArrayForListQueryER12MDesC16Array @ 82 NONAME + _ZN19TPhoneCmdParamQuery7SetToneEi @ 83 NONAME + _ZN19TPhoneCmdParamQueryC1ERKS_ @ 84 NONAME + _ZN19TPhoneCmdParamQueryC1Ev @ 85 NONAME + _ZN19TPhoneCmdParamQueryC2ERKS_ @ 86 NONAME + _ZN19TPhoneCmdParamQueryC2Ev @ 87 NONAME + _ZN19TPhoneCmdParamQueryaSERKS_ @ 88 NONAME + _ZN20CPhoneClearBlacklist17ClearBlackListNowEv @ 89 NONAME + _ZN20CPhoneClearBlacklist23ClearBlackListOnNextKeyEv @ 90 NONAME + _ZN20CPhoneClearBlacklist7CreateLER10RWsSessionRK11RWindowBase @ 91 NONAME + _ZN20CPhoneClearBlacklist8InstanceEv @ 92 NONAME + _ZN20CPhoneClearBlacklistD0Ev @ 93 NONAME + _ZN20CPhoneClearBlacklistD1Ev @ 94 NONAME + _ZN20CPhoneClearBlacklistD2Ev @ 95 NONAME + _ZN20CPhoneRecoverySystem10RecoverNowEiai @ 96 NONAME + _ZN20CPhoneRecoverySystem19EnablePreconditionLEv @ 97 NONAME + _ZN20CPhoneRecoverySystem4AddLE9TCallBackaN19CTeleRecoverySystem14TRecoveryStateE @ 98 NONAME + _ZN20CPhoneRecoverySystem6RemoveEi @ 99 NONAME + _ZN20CPhoneRecoverySystem8InstanceEv @ 100 NONAME + _ZN20TPhoneCmdParamBitmap13SetMaskBitmapEP10CFbsBitmap @ 101 NONAME + _ZN20TPhoneCmdParamBitmap9SetBitmapEP10CFbsBitmap @ 102 NONAME + _ZN20TPhoneCmdParamBitmapC1Ev @ 103 NONAME + _ZN20TPhoneCmdParamBitmapC2Ev @ 104 NONAME + _ZN20TPhoneCmdParamString6StringEv @ 105 NONAME + _ZN20TPhoneCmdParamString9SetStringEP6TPtr16 @ 106 NONAME + _ZN20TPhoneCmdParamStringC1Ev @ 107 NONAME + _ZN20TPhoneCmdParamStringC2Ev @ 108 NONAME + _ZN21TPhoneCmdParamAppInfo10SetViewUidERK4TUid @ 109 NONAME + _ZN21TPhoneCmdParamAppInfo16SetCustomMessageERK6TDesC8 @ 110 NONAME + _ZN21TPhoneCmdParamAppInfo18SetCustomMessageIdERK4TUid @ 111 NONAME + _ZN21TPhoneCmdParamAppInfo20SetMultipleInstancesEi @ 112 NONAME + _ZN21TPhoneCmdParamAppInfo8SetParamERK6TDesC8 @ 113 NONAME + _ZN21TPhoneCmdParamAppInfo9SetAppUidERK4TUid @ 114 NONAME + _ZN21TPhoneCmdParamAppInfoC1Ev @ 115 NONAME + _ZN21TPhoneCmdParamAppInfoC2Ev @ 116 NONAME + _ZN21TPhoneCmdParamBoolean10SetBooleanEi @ 117 NONAME + _ZN21TPhoneCmdParamBooleanC1Ev @ 118 NONAME + _ZN21TPhoneCmdParamBooleanC2Ev @ 119 NONAME + _ZN21TPhoneCmdParamDynMenu10SetDynMenuEPv @ 120 NONAME + _ZN21TPhoneCmdParamDynMenu13SetResourceIdEi @ 121 NONAME + _ZN21TPhoneCmdParamDynMenu7DynMenuEv @ 122 NONAME + _ZN21TPhoneCmdParamDynMenuC1Ev @ 123 NONAME + _ZN21TPhoneCmdParamDynMenuC2Ev @ 124 NONAME + _ZN21TPhoneCmdParamInteger10SetIntegerEi @ 125 NONAME + _ZN21TPhoneCmdParamIntegerC1Ev @ 126 NONAME + _ZN21TPhoneCmdParamIntegerC2Ev @ 127 NONAME + _ZN21TPhoneCmdParamPointer10SetPointerEPv @ 128 NONAME + _ZN21TPhoneCmdParamPointerC1Ev @ 129 NONAME + _ZN21TPhoneCmdParamPointerC2Ev @ 130 NONAME + _ZN21TPhoneCmdParamSfiData7SetNameERK7TDesC16 @ 131 NONAME + _ZN21TPhoneCmdParamSfiData9SetNumberERK7TDesC16 @ 132 NONAME + _ZN21TPhoneCmdParamSfiDataC1Ev @ 133 NONAME + _ZN21TPhoneCmdParamSfiDataC2Ev @ 134 NONAME + _ZN22CPhoneCallThemeMonitor28SetCallThemeSettingsObserverEP31MPhoneCallThemeSettingsObserver @ 135 NONAME + _ZN22CPhoneCallThemeMonitor4NewLEv @ 136 NONAME + _ZN22CPhoneCallThemeMonitorD0Ev @ 137 NONAME + _ZN22CPhoneCallThemeMonitorD1Ev @ 138 NONAME + _ZN22CPhoneCallThemeMonitorD2Ev @ 139 NONAME + _ZN22CPhoneLibraryContainer11AddLibraryLERK8RLibrary @ 140 NONAME + _ZN22CPhoneLibraryContainer4NewLEv @ 141 NONAME + _ZN22CPhoneLibraryContainerD0Ev @ 142 NONAME + _ZN22CPhoneLibraryContainerD1Ev @ 143 NONAME + _ZN22CPhoneLibraryContainerD2Ev @ 144 NONAME + _ZN22TPhoneCmdParamKeyEvent11SetKeyEventERK9TKeyEvent @ 145 NONAME + _ZN22TPhoneCmdParamKeyEvent12SetEventCodeE10TEventCode @ 146 NONAME + _ZN22TPhoneCmdParamKeyEventC1Ev @ 147 NONAME + _ZN22TPhoneCmdParamKeyEventC2Ev @ 148 NONAME + _ZN22TPhoneCmdParamRingTone11SetRingToneERK7TDesC16 @ 149 NONAME + _ZN22TPhoneCmdParamRingTone12IsCallerTextEv @ 150 NONAME + _ZN22TPhoneCmdParamRingTone12SetTextToSayERK7TDesC16 @ 151 NONAME + _ZN22TPhoneCmdParamRingTone13IsCallerImageEv @ 152 NONAME + _ZN22TPhoneCmdParamRingTone14SetRingingTypeEi @ 153 NONAME + _ZN22TPhoneCmdParamRingTone19SetCallerTextStatusEi @ 154 NONAME + _ZN22TPhoneCmdParamRingTone20SetCallerImageStatusEi @ 155 NONAME + _ZN22TPhoneCmdParamRingTone7SetTypeE18TPhoneRingToneType @ 156 NONAME + _ZN22TPhoneCmdParamRingTone9SetVolumeEi @ 157 NONAME + _ZN22TPhoneCmdParamRingToneC1Ev @ 158 NONAME + _ZN22TPhoneCmdParamRingToneC2Ev @ 159 NONAME + _ZN23TPhoneCmdParamSpeedDial10NumberTypeEv @ 160 NONAME + _ZN23TPhoneCmdParamSpeedDial11PhoneNumberEv @ 161 NONAME + _ZN23TPhoneCmdParamSpeedDial11SetLocationEi @ 162 NONAME + _ZN23TPhoneCmdParamSpeedDial12SetServiceIdEj @ 163 NONAME + _ZN23TPhoneCmdParamSpeedDial13SetNumberTypeE16TPhoneNumberType @ 164 NONAME + _ZN23TPhoneCmdParamSpeedDial14SetPhoneNumberEP6TPtr16 @ 165 NONAME + _ZN23TPhoneCmdParamSpeedDial8LocationEv @ 166 NONAME + _ZN23TPhoneCmdParamSpeedDialC1Ev @ 167 NONAME + _ZN23TPhoneCmdParamSpeedDialC2Ev @ 168 NONAME + _ZN24TPhoneCmdParamGlobalNote11SetSoftkeysEi @ 169 NONAME + _ZN24TPhoneCmdParamGlobalNote15SetWaitForReadyEi @ 170 NONAME + _ZN24TPhoneCmdParamGlobalNote17SetTextResourceIdEi @ 171 NONAME + _ZN24TPhoneCmdParamGlobalNote7SetTextERK7TDesC16 @ 172 NONAME + _ZN24TPhoneCmdParamGlobalNote7SetToneEi @ 173 NONAME + _ZN24TPhoneCmdParamGlobalNote7SetTypeE18TAknGlobalNoteType @ 174 NONAME + _ZN24TPhoneCmdParamGlobalNoteC1Ev @ 175 NONAME + _ZN24TPhoneCmdParamGlobalNoteC2Ev @ 176 NONAME + _ZN24TPhoneCmdParamKeyCapture10SetKeyCodeE8TKeyCode @ 177 NONAME + _ZN24TPhoneCmdParamKeyCapture14SetCaptureTypeE17TPhoneCaptureType @ 178 NONAME + _ZN24TPhoneCmdParamKeyCapture6SetKeyE12TStdScanCode @ 179 NONAME + _ZN24TPhoneCmdParamKeyCaptureC1Ev @ 180 NONAME + _ZN24TPhoneCmdParamKeyCaptureC2Ev @ 181 NONAME + _ZN25TPhoneCmdParamAudioOutput14SetAudioOutputE14TPEAudioOutput @ 182 NONAME + _ZN25TPhoneCmdParamAudioOutputC1Ev @ 183 NONAME + _ZN25TPhoneCmdParamAudioOutputC2Ev @ 184 NONAME + _ZN25TPhoneCmdParamTransEffect7SetTypeE21TPhoneTransEffectType @ 185 NONAME + _ZN25TPhoneCmdParamTransEffectC1Ev @ 186 NONAME + _ZN25TPhoneCmdParamTransEffectC2Ev @ 187 NONAME + _ZN26CPhoneMainResourceResolver8InstanceEv @ 188 NONAME + _ZN26CPhoneResourceResolverBase14BaseConstructLEv @ 189 NONAME + _ZN26CPhoneResourceResolverBaseC1Ev @ 190 NONAME + _ZN26CPhoneResourceResolverBaseC2Ev @ 191 NONAME + _ZN26CPhoneResourceResolverBaseD0Ev @ 192 NONAME + _ZN26CPhoneResourceResolverBaseD1Ev @ 193 NONAME + _ZN26CPhoneResourceResolverBaseD2Ev @ 194 NONAME + _ZN26TPhoneCmdParamCustomDialer16DialerControllerEv @ 195 NONAME + _ZN26TPhoneCmdParamCustomDialer19SetDialerControllerEP22MPhoneDialerController @ 196 NONAME + _ZN26TPhoneCmdParamCustomDialerC1Ev @ 197 NONAME + _ZN26TPhoneCmdParamCustomDialerC2Ev @ 198 NONAME + _ZN26TPhoneCmdParamProgressNote11SetWaitTimeE27TTimeIntervalMicroSeconds32 @ 199 NONAME + _ZN26TPhoneCmdParamProgressNote13SetResourceIdEi @ 200 NONAME + _ZN26TPhoneCmdParamProgressNoteC1Ev @ 201 NONAME + _ZN26TPhoneCmdParamProgressNoteC2Ev @ 202 NONAME + _ZN27TPhoneCmdParamCallStateData12SetCallStateEi @ 203 NONAME + _ZN27TPhoneCmdParamCallStateData9SetCallIdEi @ 204 NONAME + _ZN27TPhoneCmdParamCallStateDataC1Ev @ 205 NONAME + _ZN27TPhoneCmdParamCallStateDataC2Ev @ 206 NONAME + _ZN27TPhoneCmdParamMessageEditor14SetMessageDataEP12CMessageData @ 207 NONAME + _ZN27TPhoneCmdParamMessageEditorC1Ev @ 208 NONAME + _ZN27TPhoneCmdParamMessageEditorC2Ev @ 209 NONAME + _ZN28TPhoneCmdParamCallHeaderData10SetCLITextERK7TDesC16N14CBubbleManager23TPhoneClippingDirectionE @ 210 NONAME + _ZN28TPhoneCmdParamCallHeaderData10SetPictureERK7TDesC16 @ 211 NONAME + _ZN28TPhoneCmdParamCallHeaderData11AddCallFlagEN14CBubbleManager19TPhoneCallTypeFlagsE @ 212 NONAME + _ZN28TPhoneCmdParamCallHeaderData11SetCNAPTextERK7TDesC16N14CBubbleManager23TPhoneClippingDirectionE @ 213 NONAME + _ZN28TPhoneCmdParamCallHeaderData11SetCallFlagEN14CBubbleManager19TPhoneCallTypeFlagsE @ 214 NONAME + _ZN28TPhoneCmdParamCallHeaderData11SetCallTypeEi @ 215 NONAME + _ZN28TPhoneCmdParamCallHeaderData12SetCallStateEi @ 216 NONAME + _ZN28TPhoneCmdParamCallHeaderData12SetCipheringEi @ 217 NONAME + _ZN28TPhoneCmdParamCallHeaderData12SetLabelTextERK7TDesC16 @ 218 NONAME + _ZN28TPhoneCmdParamCallHeaderData12SetServiceIdEm @ 219 NONAME + _ZN28TPhoneCmdParamCallHeaderData12SetThumbnailEP10CFbsBitmap @ 220 NONAME + _ZN28TPhoneCmdParamCallHeaderData13SetCallerTextERK7TDesC16 @ 221 NONAME + _ZN28TPhoneCmdParamCallHeaderData13SetNumberTypeEi @ 222 NONAME + _ZN28TPhoneCmdParamCallHeaderData14SetContactLinkERK6TDesC8 @ 223 NONAME + _ZN28TPhoneCmdParamCallHeaderData15SetHasThumbnailEi @ 224 NONAME + _ZN28TPhoneCmdParamCallHeaderData17SetShortLabelTextERK7TDesC16 @ 225 NONAME + _ZN28TPhoneCmdParamCallHeaderData20SetRemotePhoneNumberERK7TDesC16 @ 226 NONAME + _ZN28TPhoneCmdParamCallHeaderData21SetParticipantListCLIENS_24TPhoneParticipantListCLIE @ 227 NONAME + _ZN28TPhoneCmdParamCallHeaderData28SetCipheringIndicatorAllowedEi @ 228 NONAME + _ZN28TPhoneCmdParamCallHeaderData8SetLine2Ei @ 229 NONAME + _ZN28TPhoneCmdParamCallHeaderDataC1Ev @ 230 NONAME + _ZN28TPhoneCmdParamCallHeaderDataC2Ev @ 231 NONAME + _ZN28TPhoneCmdParamReconnectQuery14SetPhoneNumberE7TPtrC16 @ 232 NONAME + _ZN28TPhoneCmdParamReconnectQuery17SetContactMatcherEP13CPhCntMatcher @ 233 NONAME + _ZN28TPhoneCmdParamReconnectQuery21SetIncludeVideoOptionEi @ 234 NONAME + _ZN28TPhoneCmdParamReconnectQueryC1ER27MCaUiReconnectQueryObserver @ 235 NONAME + _ZN28TPhoneCmdParamReconnectQueryC2ER27MCaUiReconnectQueryObserver @ 236 NONAME + _ZN29TPhoneCmdParamSingleItemFetch16SetCbaResourceIdEi @ 237 NONAME + _ZN29TPhoneCmdParamSingleItemFetch22SetTitlePaneResourceIdEi @ 238 NONAME + _ZN29TPhoneCmdParamSingleItemFetch4TypeEv @ 239 NONAME + _ZN29TPhoneCmdParamSingleItemFetch7SetTypeEN21CPhCntSingleItemFetch10TFetchTypeE @ 240 NONAME + _ZN29TPhoneCmdParamSingleItemFetch9SetStringEP6TDes16 @ 241 NONAME + _ZN29TPhoneCmdParamSingleItemFetchC1Ev @ 242 NONAME + _ZN29TPhoneCmdParamSingleItemFetchC2Ev @ 243 NONAME + _ZN30CPhoneMainErrorMessagesHandler8InstanceEv @ 244 NONAME + _ZN31TPhoneCmdParamAudioAvailability17SetBTAccAvailableEi @ 245 NONAME + _ZN31TPhoneCmdParamAudioAvailability20SetWiredAccAvailableEi @ 246 NONAME + _ZN31TPhoneCmdParamAudioAvailabilityC1Ev @ 247 NONAME + _ZN31TPhoneCmdParamAudioAvailabilityC2Ev @ 248 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData12SetCallStateEi @ 249 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData12SetCipheringEi @ 250 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData12SetEmergencyEi @ 251 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData22SetLittleBubbleVisibleEi @ 252 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData28SetCipheringIndicatorAllowedEi @ 253 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData7SetModeEi @ 254 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData7SetMuteEi @ 255 NONAME + _ZN33TPhoneCmdParamIncallIndicatorData8SetLine2Ei @ 256 NONAME + _ZN33TPhoneCmdParamIncallIndicatorDataC1Ev @ 257 NONAME + _ZN33TPhoneCmdParamIncallIndicatorDataC2Ev @ 258 NONAME + _ZN33TPhoneCmdParamNumberEntryObserver11SetObserverE9TCallBack @ 259 NONAME + _ZN33TPhoneCmdParamNumberEntryObserver8ObserverEv @ 260 NONAME + _ZN33TPhoneCmdParamNumberEntryObserverC1Ev @ 261 NONAME + _ZN33TPhoneCmdParamNumberEntryObserverC2Ev @ 262 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderData12SetCipheringEi @ 263 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderData12SetLabelTextERK7TDesC16 @ 264 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderData13SetHeaderTextERK7TDesC16 @ 265 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderData21SetOwnPhoneNumberTextERK7TDesC16 @ 266 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderData28SetCipheringIndicatorAllowedEi @ 267 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderDataC1Ev @ 268 NONAME + _ZN37TPhoneCmdParamEmergencyCallHeaderDataC2Ev @ 269 NONAME + _ZNK17CPhoneCenRepProxy4FindERK4TUidmmR6RArrayImE @ 270 NONAME + _ZNK17CPhoneCenRepProxy6GetIntERK4TUidjRi @ 271 NONAME + _ZNK17CPhoneCenRepProxy7GetRealERK4TUidjRd @ 272 NONAME + _ZNK17CPhoneCenRepProxy9GetStringERK4TUidjR6TDes16 @ 273 NONAME + _ZNK18TPhoneCmdParamNote10ResourceIdEv @ 274 NONAME + _ZNK18TPhoneCmdParamNote14TextResourceIdEv @ 275 NONAME + _ZNK18TPhoneCmdParamNote4TextEv @ 276 NONAME + _ZNK18TPhoneCmdParamNote4ToneEv @ 277 NONAME + _ZNK18TPhoneCmdParamNote4TypeEv @ 278 NONAME + _ZNK18TPhoneCmdParamNote7TimeoutEv @ 279 NONAME + _ZNK18TPhoneCommandParam7ParamIdEv @ 280 NONAME + _ZNK19CPhoneQwertyHandler13IsQwertyInputEv @ 281 NONAME + _ZNK19TPhoneCmdParamQuery10ContentCbaEv @ 282 NONAME + _ZNK19TPhoneCmdParamQuery10DefaultCbaEv @ 283 NONAME + _ZNK19TPhoneCmdParamQuery11QueryPromptEv @ 284 NONAME + _ZNK19TPhoneCmdParamQuery14SendKeyEnabledEv @ 285 NONAME + _ZNK19TPhoneCmdParamQuery15QueryResourceIdEv @ 286 NONAME + _ZNK19TPhoneCmdParamQuery17CbaCommandMappingEi @ 287 NONAME + _ZNK19TPhoneCmdParamQuery25ItemTextArrayForListQueryEv @ 288 NONAME + _ZNK19TPhoneCmdParamQuery26GetCustomCommandForTimeOutERi @ 289 NONAME + _ZNK19TPhoneCmdParamQuery4ToneEv @ 290 NONAME + _ZNK19TPhoneCmdParamQuery7TimeOutEv @ 291 NONAME + _ZNK19TPhoneCmdParamQuery8DataTextEv @ 292 NONAME + _ZNK19TPhoneCmdParamQuery9QueryTypeEv @ 293 NONAME + _ZNK20TPhoneCmdParamBitmap10MaskBitmapEv @ 294 NONAME + _ZNK20TPhoneCmdParamBitmap6BitmapEv @ 295 NONAME + _ZNK21TPhoneCmdParamAppInfo13CustomMessageEv @ 296 NONAME + _ZNK21TPhoneCmdParamAppInfo15CustomMessageIdEv @ 297 NONAME + _ZNK21TPhoneCmdParamAppInfo17MultipleInstancesEv @ 298 NONAME + _ZNK21TPhoneCmdParamAppInfo5ParamEv @ 299 NONAME + _ZNK21TPhoneCmdParamAppInfo6AppUidEv @ 300 NONAME + _ZNK21TPhoneCmdParamAppInfo7ViewUidEv @ 301 NONAME + _ZNK21TPhoneCmdParamBoolean7BooleanEv @ 302 NONAME + _ZNK21TPhoneCmdParamDynMenu10ResourceIdEv @ 303 NONAME + _ZNK21TPhoneCmdParamInteger7IntegerEv @ 304 NONAME + _ZNK21TPhoneCmdParamPointer7PointerEv @ 305 NONAME + _ZNK21TPhoneCmdParamSfiData4NameEv @ 306 NONAME + _ZNK21TPhoneCmdParamSfiData6NumberEv @ 307 NONAME + _ZNK22CPhoneCallThemeMonitor22CallImageThemeFilePathEv @ 308 NONAME + _ZNK22CPhoneCallThemeMonitor22CallImageThemeSettingsEv @ 309 NONAME + _ZNK22TPhoneCmdParamKeyEvent8KeyEventEv @ 310 NONAME + _ZNK22TPhoneCmdParamKeyEvent9EventCodeEv @ 311 NONAME + _ZNK22TPhoneCmdParamRingTone11RingingTypeEv @ 312 NONAME + _ZNK22TPhoneCmdParamRingTone4TypeEv @ 313 NONAME + _ZNK22TPhoneCmdParamRingTone6VolumeEv @ 314 NONAME + _ZNK22TPhoneCmdParamRingTone8RingToneEv @ 315 NONAME + _ZNK22TPhoneCmdParamRingTone9TextToSayEv @ 316 NONAME + _ZNK23TPhoneCmdParamSpeedDial9ServiceIdEv @ 317 NONAME + _ZNK24TPhoneCmdParamGlobalNote12WaitForReadyEv @ 318 NONAME + _ZNK24TPhoneCmdParamGlobalNote14TextResourceIdEv @ 319 NONAME + _ZNK24TPhoneCmdParamGlobalNote4TextEv @ 320 NONAME + _ZNK24TPhoneCmdParamGlobalNote4ToneEv @ 321 NONAME + _ZNK24TPhoneCmdParamGlobalNote4TypeEv @ 322 NONAME + _ZNK24TPhoneCmdParamGlobalNote8SoftkeysEv @ 323 NONAME + _ZNK24TPhoneCmdParamKeyCapture11CaptureTypeEv @ 324 NONAME + _ZNK24TPhoneCmdParamKeyCapture3KeyEv @ 325 NONAME + _ZNK24TPhoneCmdParamKeyCapture7KeyCodeEv @ 326 NONAME + _ZNK25TPhoneCmdParamAudioOutput11AudioOutputEv @ 327 NONAME + _ZNK25TPhoneCmdParamTransEffect4TypeEv @ 328 NONAME + _ZNK26CPhoneResourceResolverBase17ResolveResourceIDERKi @ 329 NONAME + _ZNK26CPhoneResourceResolverBase27IsTelephonyFeatureSupportedEi @ 330 NONAME + _ZNK26TPhoneCmdParamProgressNote10ResourceIdEv @ 331 NONAME + _ZNK26TPhoneCmdParamProgressNote8WaitTimeEv @ 332 NONAME + _ZNK27TPhoneCmdParamCallStateData6CallIdEv @ 333 NONAME + _ZNK27TPhoneCmdParamCallStateData9CallStateEv @ 334 NONAME + _ZNK27TPhoneCmdParamMessageEditor11MessageDataEv @ 335 NONAME + _ZNK28TPhoneCmdParamCallHeaderData10CallerTextEv @ 336 NONAME + _ZNK28TPhoneCmdParamCallHeaderData10NumberTypeEv @ 337 NONAME + _ZNK28TPhoneCmdParamCallHeaderData11ContactLinkEv @ 338 NONAME + _ZNK28TPhoneCmdParamCallHeaderData12HasThumbnailEv @ 339 NONAME + _ZNK28TPhoneCmdParamCallHeaderData14ParticipantCLIEv @ 340 NONAME + _ZNK28TPhoneCmdParamCallHeaderData14ShortLabelTextEv @ 341 NONAME + _ZNK28TPhoneCmdParamCallHeaderData17RemotePhoneNumberEv @ 342 NONAME + _ZNK28TPhoneCmdParamCallHeaderData24CLITextClippingDirectionEv @ 343 NONAME + _ZNK28TPhoneCmdParamCallHeaderData25CNAPTextClippingDirectionEv @ 344 NONAME + _ZNK28TPhoneCmdParamCallHeaderData25CipheringIndicatorAllowedEv @ 345 NONAME + _ZNK28TPhoneCmdParamCallHeaderData5Line2Ev @ 346 NONAME + _ZNK28TPhoneCmdParamCallHeaderData7CLITextEv @ 347 NONAME + _ZNK28TPhoneCmdParamCallHeaderData7PictureEv @ 348 NONAME + _ZNK28TPhoneCmdParamCallHeaderData8CNAPTextEv @ 349 NONAME + _ZNK28TPhoneCmdParamCallHeaderData8CallFlagEv @ 350 NONAME + _ZNK28TPhoneCmdParamCallHeaderData8CallTypeEv @ 351 NONAME + _ZNK28TPhoneCmdParamCallHeaderData9CallStateEv @ 352 NONAME + _ZNK28TPhoneCmdParamCallHeaderData9CipheringEv @ 353 NONAME + _ZNK28TPhoneCmdParamCallHeaderData9LabelTextEv @ 354 NONAME + _ZNK28TPhoneCmdParamCallHeaderData9ServiceIdEv @ 355 NONAME + _ZNK28TPhoneCmdParamCallHeaderData9ThumbnailEv @ 356 NONAME + _ZNK28TPhoneCmdParamReconnectQuery11PhoneNumberEv @ 357 NONAME + _ZNK28TPhoneCmdParamReconnectQuery14ContactMatcherEv @ 358 NONAME + _ZNK28TPhoneCmdParamReconnectQuery22IncludeVideoCallOptionEv @ 359 NONAME + _ZNK28TPhoneCmdParamReconnectQuery22ReconnectQueryObserverEv @ 360 NONAME + _ZNK29TPhoneCmdParamSingleItemFetch13CbaResourceIdEv @ 361 NONAME + _ZNK29TPhoneCmdParamSingleItemFetch19TitlePaneResourceIdEv @ 362 NONAME + _ZNK29TPhoneCmdParamSingleItemFetch6StringEv @ 363 NONAME + _ZNK31TPhoneCmdParamAudioAvailability16IsBTAccAvailableEv @ 364 NONAME + _ZNK31TPhoneCmdParamAudioAvailability19IsWiredAccAvailableEv @ 365 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData19LittleBubbleVisibleEv @ 366 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData25CipheringIndicatorAllowedEv @ 367 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData4ModeEv @ 368 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData4MuteEv @ 369 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData5Line2Ev @ 370 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData9CallStateEv @ 371 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData9CipheringEv @ 372 NONAME + _ZNK33TPhoneCmdParamIncallIndicatorData9EmergencyEv @ 373 NONAME + _ZNK37TPhoneCmdParamEmergencyCallHeaderData10HeaderTextEv @ 374 NONAME + _ZNK37TPhoneCmdParamEmergencyCallHeaderData18OwnPhoneNumberTextEv @ 375 NONAME + _ZNK37TPhoneCmdParamEmergencyCallHeaderData25CipheringIndicatorAllowedEv @ 376 NONAME + _ZNK37TPhoneCmdParamEmergencyCallHeaderData9CipheringEv @ 377 NONAME + _ZNK37TPhoneCmdParamEmergencyCallHeaderData9LabelTextEv @ 378 NONAME + _ZTI11CPhoneTimer @ 379 NONAME + _ZTI12CPhoneLogger @ 380 NONAME + _ZTI17CPhoneCenRepProxy @ 381 NONAME + _ZTI17CPhonePubSubProxy @ 382 NONAME + _ZTI18CPhoneMethodLogger @ 383 NONAME + _ZTI19CPhoneQwertyHandler @ 384 NONAME + _ZTI20CPhoneClearBlacklist @ 385 NONAME + _ZTI20CPhoneRecoverySystem @ 386 NONAME + _ZTI22CPhoneCallThemeMonitor @ 387 NONAME + _ZTI22CPhoneLibraryContainer @ 388 NONAME + _ZTI23CPhoneQwertyModeMonitor @ 389 NONAME + _ZTI24CPhoneCenRepEventHandler @ 390 NONAME + _ZTI24CPhoneLangSettingMonitor @ 391 NONAME + _ZTI25CPhonePublishSubscriberAO @ 392 NONAME + _ZTI26CPhoneMainResourceResolver @ 393 NONAME + _ZTI26CPhoneResourceResolverBase @ 394 NONAME + _ZTI30CPhoneMainErrorMessagesHandler @ 395 NONAME + _ZTV11CPhoneTimer @ 396 NONAME + _ZTV12CPhoneLogger @ 397 NONAME + _ZTV17CPhoneCenRepProxy @ 398 NONAME + _ZTV17CPhonePubSubProxy @ 399 NONAME + _ZTV18CPhoneMethodLogger @ 400 NONAME + _ZTV19CPhoneQwertyHandler @ 401 NONAME + _ZTV20CPhoneClearBlacklist @ 402 NONAME + _ZTV20CPhoneRecoverySystem @ 403 NONAME + _ZTV22CPhoneCallThemeMonitor @ 404 NONAME + _ZTV22CPhoneLibraryContainer @ 405 NONAME + _ZTV23CPhoneQwertyModeMonitor @ 406 NONAME + _ZTV24CPhoneCenRepEventHandler @ 407 NONAME + _ZTV24CPhoneLangSettingMonitor @ 408 NONAME + _ZTV25CPhonePublishSubscriberAO @ 409 NONAME + _ZTV26CPhoneMainResourceResolver @ 410 NONAME + _ZTV26CPhoneResourceResolverBase @ 411 NONAME + _ZTV30CPhoneMainErrorMessagesHandler @ 412 NONAME + _ZThn4_N12CPhoneLoggerD0Ev @ 413 NONAME + _ZThn4_N12CPhoneLoggerD1Ev @ 414 NONAME + _ZThn4_N26CPhoneResourceResolverBaseD0Ev @ 415 NONAME + _ZThn4_N26CPhoneResourceResolverBaseD1Ev @ 416 NONAME + _ZThn4_NK26CPhoneResourceResolverBase17ResolveResourceIDERKi @ 417 NONAME + _ZN19CPhoneQwertyHandler22AddQwertyModeObserverLER24MPhoneQwertyModeObserver @ 418 NONAME diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/group/phoneuiutils.mmp --- a/phoneapp/phoneuiutils/group/phoneuiutils.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/group/phoneuiutils.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -53,7 +53,6 @@ SOURCE phoneloggerviewcommands.cpp SOURCE phonestatestrings.cpp SOURCE phonestatestringsgsm.cpp -SOURCE cphonestorage.cpp SOURCE rphoneanimclearblacklist.cpp SOURCE tphonecmdparamappinfo.cpp SOURCE tphonecmdparamaudiooutput.cpp diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/cphoneqwertyhandler.h --- a/phoneapp/phoneuiutils/inc/cphoneqwertyhandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/inc/cphoneqwertyhandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -68,6 +68,11 @@ */ IMPORT_C TInt NumericKeyCode( const TKeyEvent& aKeyEvent ); + /** + * Add qwerty mode observer. + */ + IMPORT_C void AddQwertyModeObserverL( MPhoneQwertyModeObserver& aObserver ); + private: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/cphonestorage.h --- a/phoneapp/phoneuiutils/inc/cphonestorage.h Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -/* -* Copyright (c) 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: Storage of data -* -*/ - - -#ifndef CPHONESTORAGE_H -#define CPHONESTORAGE_H - -#include "mphonestorage.h" -#include - - -// CLASS DECLARATION - -/** - * Data storage. - * - * @lib PhoneUIUtils.lib - * @since S60 v5.0 - */ -class CPhoneStorage : - public CBase, public MPhoneStorage - { -public: - - IMPORT_C static CPhoneStorage* NewL(); - - IMPORT_C virtual ~CPhoneStorage(); - - /** - * AppendBlockedKeysListL. - * - * @since S60 v5.0 - */ - IMPORT_C void AppendBlockedKeysListL( TStdScanCode aScanCode ); - - /** - * GetBlockedKeyList. - * - * @since S60 v5.0 - */ - IMPORT_C const RArray& GetBlockedKeyList() const; - - /** - * ResetBlockedKeysList. - * - * @since S60 v5.0 - */ - IMPORT_C void ResetBlockedKeysList(); - - /** - * IsBlockedKeysListEmpty. - */ - IMPORT_C TBool IsBlockedKeysListEmpty(); - - /** - * SetScreenLocked. - */ - IMPORT_C void SetScreenLocked( TBool aLocked ); - - /** - * IsScreenLocked. - */ - IMPORT_C TBool IsScreenLocked(); - - /** - * SetNeedToEnableKeylock. - */ - IMPORT_C void SetNeedToEnableKeylock( TBool aNeedToEnableKeylock ); - - /** - * NeedToEnableKeylock. - */ - IMPORT_C TBool NeedToEnableKeylock(); - -private: - - CPhoneStorage(); - - void ConstructL(); - -private: // data - - // Blocked key list - RArray iBlockedKeysScanCode; - - // Is touch screen locked there is an incoming call - TBool iIsScreenLocked; - - // ETrue, if keylock must enable when call ends - TBool iNeedToEnableKeylock; - }; -#endif // CPHONESTORAGE_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/mphonestorage.h --- a/phoneapp/phoneuiutils/inc/mphonestorage.h Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 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: Storage for data. -* -*/ - - -#ifndef __MPHONESTORAGE_H -#define __MPHONESTORAGE_H - -// INCLUDES - -#include -#include - -// CLASS DECLARATION - -class MPhoneStorage - { - public: - - /** - * Destructor. - */ - virtual ~MPhoneStorage() {}; - - virtual void AppendBlockedKeysListL( TStdScanCode aScanCode ) = 0; - - virtual const RArray& GetBlockedKeyList() const = 0; - - virtual void ResetBlockedKeysList() = 0; - - virtual TBool IsBlockedKeysListEmpty() = 0; - - virtual void SetScreenLocked( TBool aLocked ) = 0; - - virtual TBool IsScreenLocked() = 0; - - virtual TBool NeedToEnableKeylock() = 0; - - virtual void SetNeedToEnableKeylock( TBool aEnableKeylock ) = 0; - }; - -#endif // __MPHONESTORAGE_H - -// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/phoneconstants.h --- a/phoneapp/phoneuiutils/inc/phoneconstants.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/inc/phoneconstants.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2010 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" @@ -63,6 +63,9 @@ const TUid KPhoneUidLogStm = { 0x01002982 }; // Id for stm for Log application _LIT8( KPhoneStmLoadMagicString, "outside" ); // Message for activating view of an application +// SimLock Ui UID to launch the SimLock App +const TUid KSimLockUIApplicationUid= {0x2000B0FA}; + // Used in CPhoneKeyEventHandler // Seconds in microseconds const TInt KPhoneSecondInMicroseconds = 1000000; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/phoneloggerviewcommands.h --- a/phoneapp/phoneuiutils/inc/phoneloggerviewcommands.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/inc/phoneloggerviewcommands.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,21 +1,23 @@ /* -* 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". +* ============================================================================ +* Name : phoneloggerviewcommands.h +* Part of : PhoneUI / phoneuiutils.dll +* +* Description: +* Macro definition file for logging. +* Version: * -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Macro definition file for logging. -* +* Copyright © 2007 Nokia Corporation. +* This material, including documentation and any related +* computer programs, is protected by copyright controlled by +* Nokia Corporation. All rights are reserved. Copying, +* including reproducing, storing, adapting or translating, any +* or all of this material requires the prior written consent of +* Nokia Corporation. This material also contains confidential +* information which may not be disclosed to others without the +* prior written consent of Nokia Corporation. +* ============================================================================ */ - // Autogenerated from phoneloggerviewcommands.st by the stringtable tool - Do not edit #ifndef STRINGTABLE_PhoneLoggerviewCommands @@ -255,8 +257,6 @@ EPhoneViewSetStatusPaneVisible, /** EPhoneViewEnableKeyLock */ EPhoneViewEnableKeyLock, - /** EPhoneViewEnableKeyLockWithoutNote */ - EPhoneViewEnableKeyLockWithoutNote, /** EPhoneViewLaunchFaxModem */ EPhoneViewLaunchFaxModem, /** EPhoneViewUpdateFSW */ @@ -293,8 +293,8 @@ EPhoneViewIsStraightCallToVideoMailBox, /** EPhoneViewSetDtmfDialerViewVisible */ EPhoneViewSetDtmfDialerViewVisible, - /** EPhoneViewSetRetrictedDialer */ - EPhoneViewSetRetrictedDialer, + /** EPhoneViewSetRestrictedDialer */ + EPhoneViewSetRestrictedDialer, /** EPhoneViewIsConferenceInExpandedMode */ EPhoneViewIsConferenceInExpandedMode, /** EPhoneViewIsMenuBarVisible */ @@ -367,10 +367,6 @@ EPhoneViewCancelAllNotications, /** EPhoneViewSetVideoCallDTMFVisibilityFlag */ EPhoneViewSetVideoCallDTMFVisibilityFlag, - /** EPhoneViewIsKeyLockEnabled */ - EPhoneViewIsKeyLockEnabled, - /** EPhoneViewDisableKeyLock */ - EPhoneViewDisableKeyLock, /** EPhoneViewLoadPlugins */ EPhoneViewLoadPlugins, /** PhoneViewServiceSelection */ @@ -415,6 +411,30 @@ EPhoneViewSetNoConnectedCalls, /** EPhoneViewIsDTMFEditorVisible */ EPhoneViewIsDTMFEditorVisible, + /** EPhoneViewSetToolbarDimming */ + EPhoneViewSetToolbarDimming, + /** EPhoneViewEnableToolbarButton */ + EPhoneViewEnableToolbarButton, + /** EPhoneViewHideToolbar */ + EPhoneViewHideToolbar, + /** EPhoneViewShowToolbar */ + EPhoneViewShowToolbar, + /** EPhoneViewGetEasyDialingInFocusStatus */ + EPhoneViewGetEasyDialingInFocusStatus, + /** EPhoneViewSetInvalidCsPhoneNumberFlag */ + EPhoneViewSetInvalidCsPhoneNumberFlag, + /** EPhoneViewGetInvalidCsPhoneNumberFlag */ + EPhoneViewGetInvalidCsPhoneNumberFlag, + /** EPhoneViewGetEasyDialingMenuId */ + EPhoneViewGetEasyDialingMenuId, + /** EPhoneViewGetEasyDialingCbaId */ + EPhoneViewGetEasyDialingCbaId, + /** EPhoneViewGetNeedToReturnToForegroundAppStatus */ + EPhoneViewGetNeedToReturnToForegroundAppStatus, + /** EPhoneViewSetNeedToReturnToForegroundAppStatus */ + EPhoneViewSetNeedToReturnToForegroundAppStatus, + /** EPhoneViewGetQwertyModeObserver */ + EPhoneViewGetQwertyModeObserver, /** , // Don't remove this, this should always be the last in list. */ EPhoneAmountOfCommands }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/phonerssbase.h --- a/phoneapp/phoneuiutils/inc/phonerssbase.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/inc/phonerssbase.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -37,7 +37,6 @@ EPhoneExitEmergencyModeQuery, EPhoneIncomingCallLabel, EPhoneIncomingCallLabelShort, - EPhoneIncomingCallKeysLocked, EPhoneOutgoingVideoCallLabel, EPhoneOutgoingVideoCallLabelShort, EPhoneOutgoingCallLabel, @@ -359,6 +358,7 @@ EPhoneNoteTTYNoAudioControl, //300 EPhoneInfoClirChange, EPhoneInfoCugInUse, + EPhoneSIMInvalidUICC, //the "DTMF number" list query EPhoneDtmfNumberListQuery, @@ -369,6 +369,7 @@ // Touch buttons EPhoneIncallButtons, + EPhoneIncallVideoShareButtons, EPhoneTwoSinglesButtons, EPhoneConferenceButtons, EPhoneParticipantListButtons, @@ -389,6 +390,8 @@ EPhoneNoteUnableToMakeVideoCallNotSupportedByOtherPhone, // cause 57,88 EPhoneNoteCalledNumberHasBarredIncomingCalls, // cause 21 + EPhoneEasyDialingCba, // the CBA resource id is asked from Easydialing plugin + // Last EPhoneRssBaseLast }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/inc/phonerssvoip.h --- a/phoneapp/phoneuiutils/inc/phonerssvoip.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/inc/phonerssvoip.h Fri Apr 23 14:59:43 2010 +0100 @@ -89,6 +89,8 @@ EPhoneVoIPCallsNotSupported, EPhoneVoIPNotAvailableWhenConnecting, EPhoneVoIPDefectiveSettings, + EPhoneVoIPTransferCallBackHeader, + EPhoneVoIPTransferCallBackText, // Last EPhoneVoIPLast }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/cphonepubsubproxy.cpp --- a/phoneapp/phoneuiutils/src/cphonepubsubproxy.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/cphonepubsubproxy.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -301,22 +301,6 @@ // Remove observer observerRemoved = ETrue; iObserverArray->Delete( i ); - - // Remove this observers' subscriptions - TInt pubSubCount = iPublishSubscriberArray->Count(); - - for ( TInt j = pubSubCount - 1; j >= 0; j++ ) - { - CPhonePublishSubscriberAO* publishSubscriber = - iPublishSubscriberArray->At( j ); - - if ( publishSubscriber->Category() == observerTag.iCategory && - publishSubscriber->Key() == observerTag.iKey ) - { - iPublishSubscriberArray->Delete( i ); - delete publishSubscriber; - } - } } } } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/cphoneqwertyhandler.cpp --- a/phoneapp/phoneuiutils/src/cphoneqwertyhandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/cphoneqwertyhandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -228,4 +228,18 @@ return EKeyNull; } +// ----------------------------------------------------------------------------- +// CPhoneQwertyHandler::AddQwertyModeObserverL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CPhoneQwertyHandler::AddQwertyModeObserverL( + MPhoneQwertyModeObserver& aObserver ) + { + iQwertyModeMonitor->AddObserverL( aObserver ); + + // Observer need to be notified with a current qwerty status so that + // status dependent objects would get correct initial value. + aObserver.HandleQwertyModeChange( iQwertyMode ); + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/cphoneqwertymodemonitor.cpp --- a/phoneapp/phoneuiutils/src/cphoneqwertymodemonitor.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/cphoneqwertymodemonitor.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -126,6 +126,9 @@ if ( aKey == KAknQwertyInputModeActive ) { iQwertyMode = aValue; + + __PHONELOG1( EBasic, EPhoneUIUtils, + "CPhoneQwertyModeMonitor::HandlePropertyChangedL KAknQwertyInputModeActive = %d", aValue ); for ( TInt i = 0; i < iObserverArray.Count(); i++ ) { @@ -136,6 +139,9 @@ #ifdef RD_INTELLIGENT_TEXT_INPUT else if ( aKey == KAknKeyBoardLayout ) { + __PHONELOG1( EBasic, EPhoneUIUtils, + "CPhoneQwertyModeMonitor::HandlePropertyChangedL KAknKeyBoardLayout = %d", aValue ); + for ( TInt i = 0; i < iObserverArray.Count(); i++ ) { iKeyboard = aValue; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/cphoneresourceresolverbase.cpp --- a/phoneapp/phoneuiutils/src/cphoneresourceresolverbase.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/cphoneresourceresolverbase.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -964,10 +964,6 @@ retVal = R_PHONE_EXIT_EMERGENCY_MODE_QUERY; break; - case EPhoneIncomingCallKeysLocked: - retVal = R_NOTETEXT_USE_KEYGUARD_TO_UNLOCK; - break; - case EPhoneIncomingCallLabel: retVal = R_PHONEUI_MTCAL_INCOMING_CALL; break; @@ -1113,7 +1109,7 @@ break; case EPhoneInformationWaitNote: - retVal = R_PHONE_INFORMATION_NOTE_WITH_WAIT; + retVal = R_PHONE_INFORMATION_NOTE_WITH_CBA; break; case EPhoneInformationErrorNote: @@ -1307,6 +1303,9 @@ retVal = R_PHONEUI_SIM_REMOVED; break; + case EPhoneSIMInvalidUICC: + retVal = R_SIM_INVALID_UICC; + break; case EPhoneRebootRequired: retVal = R_PHONEUI_REBOOT_REQUIRED; break; @@ -1371,6 +1370,10 @@ retVal = R_PHONEUI_INCALL_BUTTONS; break; + case EPhoneIncallVideoShareButtons: + retVal = R_PHONEUI_INCALL_VIDEO_SHARE_BUTTONS; + break; + case EPhoneTwoSinglesButtons: retVal = R_PHONEUI_TWO_SINGLES_BUTTONS; break; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/cphonestorage.cpp --- a/phoneapp/phoneuiutils/src/cphonestorage.cpp Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -/* -* Copyright (c) 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: Storage of data -* -*/ - - -#include -#include -#include "cphonestorage.h" -#include "phonelogger.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Constructor -// --------------------------------------------------------------------------- -// -CPhoneStorage::CPhoneStorage() - : iIsScreenLocked( EFalse ), - iNeedToEnableKeylock( EFalse ) - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::CPhoneStorage()"); - } - -// --------------------------------------------------------------------------- -// Second phase constructor -// --------------------------------------------------------------------------- -// -void CPhoneStorage::ConstructL() - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::ConstructL()"); - } - -// --------------------------------------------------------------------------- -// Static constructor -// --------------------------------------------------------------------------- -// -EXPORT_C CPhoneStorage* CPhoneStorage::NewL() - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::NewL()"); - CPhoneStorage* self = - new (ELeave) CPhoneStorage(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -EXPORT_C CPhoneStorage::~CPhoneStorage() - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::~CPhoneStorage()"); - iBlockedKeysScanCode.Reset(); - iBlockedKeysScanCode.Close(); - } - -// --------------------------------------------------------------------------- -// CPhoneStorage::AppendBlockedKeysListL -// --------------------------------------------------------------------------- -// -EXPORT_C void CPhoneStorage::AppendBlockedKeysListL( TStdScanCode aScanCode ) - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::AppendBlockedKeysListL()"); - iBlockedKeysScanCode.AppendL( aScanCode ); - } - -// ----------------------------------------------------------- -// CPhoneStorage::GetBlockedKeyList -// ----------------------------------------------------------- -// -EXPORT_C const RArray& CPhoneStorage::GetBlockedKeyList() const - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::GetBlockedKeyList()"); - return iBlockedKeysScanCode; - } - -// ----------------------------------------------------------- -// CPhoneStorage::ResetBlockedKeysList -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneStorage::ResetBlockedKeysList() - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::ResetBlockedKeysList()"); - iBlockedKeysScanCode.Reset(); - } - -// ----------------------------------------------------------- -// CPhoneStorage::IsBlockedKeysListSet -// ----------------------------------------------------------- -// -EXPORT_C TBool CPhoneStorage::IsBlockedKeysListEmpty() - { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneStorage::IsBlockedKeysListSet()"); - TBool ret = ETrue; - if( iBlockedKeysScanCode.Count() ) - { - ret = EFalse; - } - return ret; - } - -// ----------------------------------------------------------- -// CPhoneStorage::SetScreenLocked -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneStorage::SetScreenLocked( TBool aLocked ) - { - iIsScreenLocked = aLocked; - } - -// ----------------------------------------------------------- -// CPhoneStorage::IsScreenLocked -// ----------------------------------------------------------- -// -EXPORT_C TBool CPhoneStorage::IsScreenLocked() - { - return iIsScreenLocked; - } - -// ----------------------------------------------------------- -// CPhoneStorage::NeedToEnableKeylock -// ----------------------------------------------------------- -// -EXPORT_C TBool CPhoneStorage::NeedToEnableKeylock() - { - return iNeedToEnableKeylock; - } - - -// ----------------------------------------------------------- -// CPhoneStorage::NeedToEnableKeylock -// ----------------------------------------------------------- -// -EXPORT_C void CPhoneStorage::SetNeedToEnableKeylock( TBool aNeedToEnableKeylock ) - { - iNeedToEnableKeylock = aNeedToEnableKeylock; - } - -// END diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/cphonetimer.cpp --- a/phoneapp/phoneuiutils/src/cphonetimer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/cphonetimer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,6 @@ // INCLUDE FILES #include "cphonetimer.h" #include "phoneui.pan" -#include "phonelogger.h" // ================= MEMBER FUNCTIONS ======================= @@ -31,7 +30,6 @@ CPhoneTimer::CPhoneTimer( TInt aPriority ) : CTimer( aPriority) { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::CPhoneTimer() "); CActiveScheduler::Add( this ); } @@ -41,7 +39,6 @@ // void CPhoneTimer::ConstructL() { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::ConstructL() "); CTimer::ConstructL(); } @@ -51,7 +48,6 @@ // EXPORT_C CPhoneTimer* CPhoneTimer::NewL( TInt aPriority ) { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::NewL() "); CPhoneTimer* self = new (ELeave) CPhoneTimer( aPriority ); CleanupStack::PushL( self ); @@ -67,7 +63,6 @@ // EXPORT_C CPhoneTimer::~CPhoneTimer() { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::~CPhoneTimer() "); Cancel(); } @@ -77,10 +72,6 @@ // void CPhoneTimer::RunL() { - __PHONELOG1( EBasic, EPhoneUIUtils, - "CPhoneTimer::RunL iStatus(%d)", - iStatus.Int() ); - if ( iStatus != KErrNone ) { //error code is ignored, as CPeriodic. @@ -89,14 +80,10 @@ if ( !iTimerObserver ) { - __PHONELOG( EBasic, EPhoneUIUtils, - "CPhoneTimer::RunL CallBack" ); iCallBack.CallBack(); } else { - __PHONELOG( EBasic, EPhoneUIUtils, - "CPhoneTimer::RunL HandleTimeOutL" ); iTimerObserver->HandleTimeOutL(); } } @@ -109,7 +96,6 @@ TTimeIntervalMicroSeconds32 anInterval, TCallBack aCallBack ) { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::After() "); if ( IsActive() ) { @@ -129,7 +115,6 @@ TTimeIntervalMicroSeconds32 anInterval, MPhoneTimer* aObserver ) { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::After() "); __ASSERT_DEBUG( aObserver, Panic( EPhoneUtilsParameterNotInitialized ) ); @@ -147,7 +132,6 @@ // EXPORT_C void CPhoneTimer::CancelTimer() { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::CancelTimer() "); Cancel(); } @@ -157,7 +141,6 @@ // void CPhoneTimer::DoCancel() { - __LOGMETHODSTARTEND(EPhoneUIUtils, "CPhoneTimer::DoCancel() "); iTimerObserver = NULL; CTimer::DoCancel(); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/phoneloggerviewcommands.cpp --- a/phoneapp/phoneuiutils/src/phoneloggerviewcommands.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/phoneloggerviewcommands.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,21 +1,23 @@ /* -* 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". +* ============================================================================ +* Name : phoneloggerviewcommands.cpp +* Part of : PhoneUI / phoneuiutils.dll +* +* Description: +* Macro definition file for logging. +* Version: * -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Macro definition file for logging. -* +* Copyright © 2007 Nokia Corporation. +* This material, including documentation and any related +* computer programs, is protected by copyright controlled by +* Nokia Corporation. All rights are reserved. Copying, +* including reproducing, storing, adapting or translating, any +* or all of this material requires the prior written consent of +* Nokia Corporation. This material also contains confidential +* information which may not be disclosed to others without the +* prior written consent of Nokia Corporation. +* ============================================================================ */ - // Autogenerated from phoneloggerviewcommands.st by the stringtable tool - Do not edit #include #include @@ -137,87 +139,96 @@ _STLIT8(K110, "EPhoneViewGetSecurityModeStatus"); _STLIT8(K111, "EPhoneViewSetStatusPaneVisible"); _STLIT8(K112, "EPhoneViewEnableKeyLock"); -_STLIT8(K113, "EPhoneViewEnableKeyLockWithoutNote"); -_STLIT8(K114, "EPhoneViewLaunchFaxModem"); -_STLIT8(K115, "EPhoneViewUpdateFSW"); -_STLIT8(K116, "EPhoneViewIsQuery"); -_STLIT8(K117, "EPhoneViewBringIdleToForeground"); -_STLIT8(K118, "EPhoneViewSetIdleTopApplication"); -_STLIT8(K119, "EPhoneViewBeginUpdate"); -_STLIT8(K120, "EPhoneViewEndUpdate"); -_STLIT8(K121, "EPhoneViewSetConfrenceOptionsFlag"); -_STLIT8(K122, "EPhoneViewRemoveConferenceBubble"); -_STLIT8(K123, "EPhoneViewGetSoftRejectWindowGroupId"); -_STLIT8(K124, "EPhoneViewSetTouchPaneButtons"); -_STLIT8(K125, "EPhoneViewSetTouchPaneVisible"); -_STLIT8(K126, "EPhoneViewEnableTouchButton"); -_STLIT8(K127, "EPhoneViewDisableTouchButton"); -_STLIT8(K128, "EPhoneResetTouchButtons"); -_STLIT8(K129, "EPhoneViewGetIsConferenceInSelectionMode"); -_STLIT8(K130, "EPhoneViewIsStraightCallToVideoMailBox"); -_STLIT8(K131, "EPhoneViewSetDtmfDialerViewVisible"); -_STLIT8(K132, "EPhoneViewSetRetrictedDialer"); -_STLIT8(K133, "EPhoneViewIsConferenceInExpandedMode"); -_STLIT8(K134, "EPhoneViewIsMenuBarVisible"); -_STLIT8(K135, "EPhoneViewGetBlockingDialogStatus"); -_STLIT8(K136, "EPhoneViewYesSingleItemFetch"); -_STLIT8(K137, "EPhoneViewNoSingleItemFetch"); -_STLIT8(K138, "EPhoneViewGetLocalizedNumberFromEntry"); -_STLIT8(K139, "EPhoneViewIsNoteActive"); -_STLIT8(K140, "EPhoneViewOpenNumberEntry"); -_STLIT8(K141, "EPhoneViewOpenCallHandling"); -_STLIT8(K142, "EPhoneViewGetConferenceAndSingleFlag"); -_STLIT8(K143, "EPhoneViewSetConferenceAndSingleFlag"); -_STLIT8(K144, "EPhoneViewSetVideoCallFlag"); -_STLIT8(K145, "EPhoneViewSetDtmfOptionsFlag"); -_STLIT8(K146, "EPhoneViewShowVTSetupFailedCreateCallToSameContactQuery"); -_STLIT8(K147, "EPhoneViewGetAudioVolumeLevel"); -_STLIT8(K148, "EPhoneViewIsIdleTopApp"); -_STLIT8(K149, "EPhoneViewUpdateToolbar"); -_STLIT8(K150, "EPhoneViewSetControlAndVisibility"); -_STLIT8(K151, "EPhoneViewAllowWaitingCallHeader"); -_STLIT8(K152, "EPhoneViewBeginTransEffect"); -_STLIT8(K153, "EPhoneViewEndTransEffect"); -_STLIT8(K154, "EPhoneViewSetDialerControlVisible"); -_STLIT8(K155, "EPhoneViewCloseSingleItemFetchDialog"); -_STLIT8(K156, "EPhoneViewGetActivatePreviousApp"); -_STLIT8(K157, "EPhoneViewActivatePreviousApp"); -_STLIT8(K158, "EPhoneViewSetPointerCapture"); -_STLIT8(K159, "EPhoneViewSetSendKeyDialerActivationFlag"); -_STLIT8(K160, "EPhoneViewPrepareIcons"); -_STLIT8(K161, "EPhoneViewKeypadAudioEnabled"); -_STLIT8(K162, "EPhoneViewKeypadAudioDisabled"); -_STLIT8(K163, "EPhoneViewUpdateCallHeaderRemoteInfoDataAndLabel"); -_STLIT8(K164, "EPhoneViewRemoveDtmfNote"); -_STLIT8(K165, "EPhoneViewUpdatePhoneIconToFSW"); -_STLIT8(K166, "EPhoneViewSetEikonNotifiersDisabled"); -_STLIT8(K167, "EPhoneViewCancelAllNotications"); -_STLIT8(K168, "EPhoneViewSetVideoCallDTMFVisibilityFlag"); -_STLIT8(K169, "EPhoneViewIsKeyLockEnabled"); -_STLIT8(K170, "EPhoneViewDisableKeyLock"); -_STLIT8(K171, "EPhoneViewLoadPlugins"); -_STLIT8(K172, "PhoneViewServiceSelection"); -_STLIT8(K173, "EPhoneViewOpenVirtualKeyBoard"); -_STLIT8(K174, "EPhoneViewUpdateNoteSoftkeys"); -_STLIT8(K175, "EPhoneViewShowCustomizedDialer"); -_STLIT8(K176, "EPhoneViewHideCustomizedDialer"); -_STLIT8(K177, "EPhoneViewGetCustomizedDialerMenuResourceId"); -_STLIT8(K178, "EPhoneViewGetCustomizedDialerCbaResourceId"); -_STLIT8(K179, "EPhoneViewCreatePhoneBookServices"); -_STLIT8(K180, "EPhoneViewDisableKeyLockWithoutNote"); -_STLIT8(K181, "EPhoneViewGetKeyLockStatus"); -_STLIT8(K182, "EPhoneViewSetNumberEntryObserver"); -_STLIT8(K183, "EPhoneViewGetSingleItemFetchType"); -_STLIT8(K184, "EPhoneViewRemoveGlobalWaitNote"); -_STLIT8(K185, "EPhoneViewSetPhoneCustomization"); -_STLIT8(K186, "EPhoneViewSetViewCustomization"); -_STLIT8(K187, "EPhoneViewSetButtonCustomization"); -_STLIT8(K188, "EPhoneViewUpdateContactByString"); -_STLIT8(K189, "EPhoneViewAddContactByString"); -_STLIT8(K190, "EPhoneViewIsActiveNoteDissmissableByKeyEvent"); -_STLIT8(K191, "EPhoneViewSetNoConnectedCalls"); -_STLIT8(K192, "EPhoneViewIsDTMFEditorVisible"); -_STLIT8(K193, ", // Don't remove this, this should always be the last in list."); +_STLIT8(K113, "EPhoneViewLaunchFaxModem"); +_STLIT8(K114, "EPhoneViewUpdateFSW"); +_STLIT8(K115, "EPhoneViewIsQuery"); +_STLIT8(K116, "EPhoneViewBringIdleToForeground"); +_STLIT8(K117, "EPhoneViewSetIdleTopApplication"); +_STLIT8(K118, "EPhoneViewBeginUpdate"); +_STLIT8(K119, "EPhoneViewEndUpdate"); +_STLIT8(K120, "EPhoneViewSetConfrenceOptionsFlag"); +_STLIT8(K121, "EPhoneViewRemoveConferenceBubble"); +_STLIT8(K122, "EPhoneViewGetSoftRejectWindowGroupId"); +_STLIT8(K123, "EPhoneViewSetTouchPaneButtons"); +_STLIT8(K124, "EPhoneViewSetTouchPaneVisible"); +_STLIT8(K125, "EPhoneViewEnableTouchButton"); +_STLIT8(K126, "EPhoneViewDisableTouchButton"); +_STLIT8(K127, "EPhoneResetTouchButtons"); +_STLIT8(K128, "EPhoneViewGetIsConferenceInSelectionMode"); +_STLIT8(K129, "EPhoneViewIsStraightCallToVideoMailBox"); +_STLIT8(K130, "EPhoneViewSetDtmfDialerViewVisible"); +_STLIT8(K131, "EPhoneViewSetRestrictedDialer"); +_STLIT8(K132, "EPhoneViewIsConferenceInExpandedMode"); +_STLIT8(K133, "EPhoneViewIsMenuBarVisible"); +_STLIT8(K134, "EPhoneViewGetBlockingDialogStatus"); +_STLIT8(K135, "EPhoneViewYesSingleItemFetch"); +_STLIT8(K136, "EPhoneViewNoSingleItemFetch"); +_STLIT8(K137, "EPhoneViewGetLocalizedNumberFromEntry"); +_STLIT8(K138, "EPhoneViewIsNoteActive"); +_STLIT8(K139, "EPhoneViewOpenNumberEntry"); +_STLIT8(K140, "EPhoneViewOpenCallHandling"); +_STLIT8(K141, "EPhoneViewGetConferenceAndSingleFlag"); +_STLIT8(K142, "EPhoneViewSetConferenceAndSingleFlag"); +_STLIT8(K143, "EPhoneViewSetVideoCallFlag"); +_STLIT8(K144, "EPhoneViewSetDtmfOptionsFlag"); +_STLIT8(K145, "EPhoneViewShowVTSetupFailedCreateCallToSameContactQuery"); +_STLIT8(K146, "EPhoneViewGetAudioVolumeLevel"); +_STLIT8(K147, "EPhoneViewIsIdleTopApp"); +_STLIT8(K148, "EPhoneViewUpdateToolbar"); +_STLIT8(K149, "EPhoneViewSetControlAndVisibility"); +_STLIT8(K150, "EPhoneViewAllowWaitingCallHeader"); +_STLIT8(K151, "EPhoneViewBeginTransEffect"); +_STLIT8(K152, "EPhoneViewEndTransEffect"); +_STLIT8(K153, "EPhoneViewSetDialerControlVisible"); +_STLIT8(K154, "EPhoneViewCloseSingleItemFetchDialog"); +_STLIT8(K155, "EPhoneViewGetActivatePreviousApp"); +_STLIT8(K156, "EPhoneViewActivatePreviousApp"); +_STLIT8(K157, "EPhoneViewSetPointerCapture"); +_STLIT8(K158, "EPhoneViewSetSendKeyDialerActivationFlag"); +_STLIT8(K159, "EPhoneViewPrepareIcons"); +_STLIT8(K160, "EPhoneViewKeypadAudioEnabled"); +_STLIT8(K161, "EPhoneViewKeypadAudioDisabled"); +_STLIT8(K162, "EPhoneViewUpdateCallHeaderRemoteInfoDataAndLabel"); +_STLIT8(K163, "EPhoneViewRemoveDtmfNote"); +_STLIT8(K164, "EPhoneViewUpdatePhoneIconToFSW"); +_STLIT8(K165, "EPhoneViewSetEikonNotifiersDisabled"); +_STLIT8(K166, "EPhoneViewCancelAllNotications"); +_STLIT8(K167, "EPhoneViewSetVideoCallDTMFVisibilityFlag"); +_STLIT8(K168, "EPhoneViewLoadPlugins"); +_STLIT8(K169, "PhoneViewServiceSelection"); +_STLIT8(K170, "EPhoneViewOpenVirtualKeyBoard"); +_STLIT8(K171, "EPhoneViewUpdateNoteSoftkeys"); +_STLIT8(K172, "EPhoneViewShowCustomizedDialer"); +_STLIT8(K173, "EPhoneViewHideCustomizedDialer"); +_STLIT8(K174, "EPhoneViewGetCustomizedDialerMenuResourceId"); +_STLIT8(K175, "EPhoneViewGetCustomizedDialerCbaResourceId"); +_STLIT8(K176, "EPhoneViewCreatePhoneBookServices"); +_STLIT8(K177, "EPhoneViewDisableKeyLockWithoutNote"); +_STLIT8(K178, "EPhoneViewGetKeyLockStatus"); +_STLIT8(K179, "EPhoneViewSetNumberEntryObserver"); +_STLIT8(K180, "EPhoneViewGetSingleItemFetchType"); +_STLIT8(K181, "EPhoneViewRemoveGlobalWaitNote"); +_STLIT8(K182, "EPhoneViewSetPhoneCustomization"); +_STLIT8(K183, "EPhoneViewSetViewCustomization"); +_STLIT8(K184, "EPhoneViewSetButtonCustomization"); +_STLIT8(K185, "EPhoneViewUpdateContactByString"); +_STLIT8(K186, "EPhoneViewAddContactByString"); +_STLIT8(K187, "EPhoneViewIsActiveNoteDissmissableByKeyEvent"); +_STLIT8(K188, "EPhoneViewSetNoConnectedCalls"); +_STLIT8(K189, "EPhoneViewIsDTMFEditorVisible"); +_STLIT8(K190, "EPhoneViewSetToolbarDimming"); +_STLIT8(K191, "EPhoneViewEnableToolbarButton"); +_STLIT8(K192, "EPhoneViewHideToolbar"); +_STLIT8(K193, "EPhoneViewShowToolbar"); +_STLIT8(K194, "EPhoneViewGetEasyDialingInFocusStatus"); +_STLIT8(K195, "EPhoneViewSetInvalidCsPhoneNumberFlag"); +_STLIT8(K196, "EPhoneViewGetInvalidCsPhoneNumberFlag"); +_STLIT8(K197, "EPhoneViewGetEasyDialingMenuId"); +_STLIT8(K198, "EPhoneViewGetEasyDialingCbaId"); +_STLIT8(K199, "EPhoneViewGetNeedToReturnToForegroundAppStatus"); +_STLIT8(K200, "EPhoneViewSetNeedToReturnToForegroundAppStatus"); +_STLIT8(K201, "EPhoneViewGetQwertyModeObserver"); +_STLIT8(K202, ", // Don't remove this, this should always be the last in list."); // Intermediate const void * const KStringPointers[] = @@ -414,8 +425,17 @@ (const void*)&K190, (const void*)&K191, (const void*)&K192, - (const void*)&K193 + (const void*)&K193, + (const void*)&K194, + (const void*)&K195, + (const void*)&K196, + (const void*)&K197, + (const void*)&K198, + (const void*)&K199, + (const void*)&K200, + (const void*)&K201, + (const void*)&K202 }; -const TStringTable PhoneLoggerviewCommands::Table = {193, KStringPointers, EFalse}; +const TStringTable PhoneLoggerviewCommands::Table = {202, KStringPointers, EFalse}; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiutils/src/phoneloggerviewcommands.st --- a/phoneapp/phoneuiutils/src/phoneloggerviewcommands.st Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiutils/src/phoneloggerviewcommands.st Fri Apr 23 14:59:43 2010 +0100 @@ -112,7 +112,6 @@ EPhoneViewGetSecurityModeStatus EPhoneViewGetSecurityModeStatus EPhoneViewSetStatusPaneVisible EPhoneViewSetStatusPaneVisible EPhoneViewEnableKeyLock EPhoneViewEnableKeyLock -EPhoneViewEnableKeyLockWithoutNote EPhoneViewEnableKeyLockWithoutNote EPhoneViewLaunchFaxModem EPhoneViewLaunchFaxModem EPhoneViewUpdateFSW EPhoneViewUpdateFSW EPhoneViewIsQuery EPhoneViewIsQuery @@ -131,7 +130,7 @@ EPhoneViewGetIsConferenceInSelectionMode EPhoneViewGetIsConferenceInSelectionMode EPhoneViewIsStraightCallToVideoMailBox EPhoneViewIsStraightCallToVideoMailBox EPhoneViewSetDtmfDialerViewVisible EPhoneViewSetDtmfDialerViewVisible -EPhoneViewSetRetrictedDialer EPhoneViewSetRetrictedDialer +EPhoneViewSetRestrictedDialer EPhoneViewSetRestrictedDialer EPhoneViewIsConferenceInExpandedMode EPhoneViewIsConferenceInExpandedMode EPhoneViewIsMenuBarVisible EPhoneViewIsMenuBarVisible EPhoneViewGetBlockingDialogStatus EPhoneViewGetBlockingDialogStatus @@ -168,8 +167,6 @@ EPhoneViewSetEikonNotifiersDisabled EPhoneViewSetEikonNotifiersDisabled EPhoneViewCancelAllNotications EPhoneViewCancelAllNotications EPhoneViewSetVideoCallDTMFVisibilityFlag EPhoneViewSetVideoCallDTMFVisibilityFlag -EPhoneViewIsKeyLockEnabled EPhoneViewIsKeyLockEnabled -EPhoneViewDisableKeyLock EPhoneViewDisableKeyLock EPhoneViewLoadPlugins EPhoneViewLoadPlugins PhoneViewServiceSelection PhoneViewServiceSelection EPhoneViewOpenVirtualKeyBoard EPhoneViewOpenVirtualKeyBoard @@ -192,4 +189,16 @@ EPhoneViewIsActiveNoteDissmissableByKeyEvent EPhoneViewIsActiveNoteDissmissableByKeyEvent EPhoneViewSetNoConnectedCalls EPhoneViewSetNoConnectedCalls EPhoneViewIsDTMFEditorVisible EPhoneViewIsDTMFEditorVisible +EPhoneViewSetToolbarDimming EPhoneViewSetToolbarDimming +EPhoneViewEnableToolbarButton EPhoneViewEnableToolbarButton +EPhoneViewHideToolbar EPhoneViewHideToolbar +EPhoneViewShowToolbar EPhoneViewShowToolbar +EPhoneViewGetEasyDialingInFocusStatus EPhoneViewGetEasyDialingInFocusStatus +EPhoneViewSetInvalidCsPhoneNumberFlag EPhoneViewSetInvalidCsPhoneNumberFlag +EPhoneViewGetInvalidCsPhoneNumberFlag EPhoneViewGetInvalidCsPhoneNumberFlag +EPhoneViewGetEasyDialingMenuId EPhoneViewGetEasyDialingMenuId +EPhoneViewGetEasyDialingCbaId EPhoneViewGetEasyDialingCbaId +EPhoneViewGetNeedToReturnToForegroundAppStatus EPhoneViewGetNeedToReturnToForegroundAppStatus +EPhoneViewSetNeedToReturnToForegroundAppStatus EPhoneViewSetNeedToReturnToForegroundAppStatus +EPhoneViewGetQwertyModeObserver EPhoneViewGetQwertyModeObserver EPhoneAmountOfCommands, // Don't remove this, this should always be the last in list. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/bwins/phoneuiviewu.def --- a/phoneapp/phoneuiview/bwins/phoneuiviewu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/bwins/phoneuiviewu.def Fri Apr 23 14:59:43 2010 +0100 @@ -1,27 +1,40 @@ EXPORTS ?HandleResourceChangeL@CPhoneViewController@@QAEXH@Z @ 1 NONAME ; void CPhoneViewController::HandleResourceChangeL(int) - ?ExecuteCommand@CPhoneViewController@@UAEXHPAVTPhoneCommandParam@@@Z @ 2 NONAME ; void CPhoneViewController::ExecuteCommand(int, class TPhoneCommandParam *) - ?DoFetchForegroundApplicationWindowGroupIdL@CPhoneViewController@@SAHAAVCEikonEnv@@@Z @ 3 NONAME ; int CPhoneViewController::DoFetchForegroundApplicationWindowGroupIdL(class CEikonEnv &) - ?ExecuteCommandL@CPhoneViewController@@UAEXHHPAVTPhoneCommandParam@@@Z @ 4 NONAME ; void CPhoneViewController::ExecuteCommandL(int, int, class TPhoneCommandParam *) - ?SetBlockingDialogIsDisplayed@CPhoneViewController@@UAEXH@Z @ 5 NONAME ; void CPhoneViewController::SetBlockingDialogIsDisplayed(int) - ?BlockingDialogIsDisplayed@CPhoneViewController@@QBEHXZ @ 6 NONAME ; int CPhoneViewController::BlockingDialogIsDisplayed(void) const - ?NewL@CPhoneSingleItemFetch@@SAPAV1@AAVCEikonEnv@@AAVCPhoneViewController@@AAVCPhoneContactController@@AAVCPhoneStatusPane@@@Z @ 7 NONAME ; class CPhoneSingleItemFetch * CPhoneSingleItemFetch::NewL(class CEikonEnv &, class CPhoneViewController &, class CPhoneContactController &, class CPhoneStatusPane &) - ?HelpContext@CPhoneViewController@@QAEABVTDesC16@@XZ @ 8 NONAME ; class TDesC16 const & CPhoneViewController::HelpContext(void) - ?ExecuteCommandL@CPhoneViewController@@UAEXHH@Z @ 9 NONAME ; void CPhoneViewController::ExecuteCommandL(int, int) - ?IdleWindowGroupId@CPhoneViewController@@QAEHXZ @ 10 NONAME ; int CPhoneViewController::IdleWindowGroupId(void) - ?ExecuteCommandL@CPhoneViewController@@UAEXHHAAVTDesC16@@@Z @ 11 NONAME ; void CPhoneViewController::ExecuteCommandL(int, int, class TDesC16 &) - ?PhoneView@CPhoneViewController@@QAEPAVCPhoneView@@XZ @ 12 NONAME ; class CPhoneView * CPhoneViewController::PhoneView(void) - ?SetHiddenL@CPhoneViewController@@QAEXH@Z @ 13 NONAME ; void CPhoneViewController::SetHiddenL(int) - ?HandleLayoutChange@CPhoneViewController@@QAEXVTRect@@@Z @ 14 NONAME ; void CPhoneViewController::HandleLayoutChange(class TRect) - ?HandleCommandL@CPhoneViewController@@UAEHHPAVTPhoneCommandParam@@@Z @ 15 NONAME ; int CPhoneViewController::HandleCommandL(int, class TPhoneCommandParam *) - ?ApplicationWindowGroupId@CPhoneViewController@@QAEHXZ @ 16 NONAME ; int CPhoneViewController::ApplicationWindowGroupId(void) - ?NewL@CPhoneViewController@@SAPAV1@VTRect@@@Z @ 17 NONAME ; class CPhoneViewController * CPhoneViewController::NewL(class TRect) - ?ExecuteCommand@CPhoneViewController@@UAEXH@Z @ 18 NONAME ; void CPhoneViewController::ExecuteCommand(int) - ?ForegroundApplicationWindowGroupId@CPhoneViewController@@QAEHXZ @ 19 NONAME ; int CPhoneViewController::ForegroundApplicationWindowGroupId(void) - ?StatusPaneDisplayed@CPhoneViewController@@QAEHXZ @ 20 NONAME ; int CPhoneViewController::StatusPaneDisplayed(void) - ??1CPhoneViewController@@UAE@XZ @ 21 NONAME ; CPhoneViewController::~CPhoneViewController(void) - ?ExecuteCommandL@CPhoneViewController@@UAEXH@Z @ 22 NONAME ; void CPhoneViewController::ExecuteCommandL(int) - ?ExecuteCommandL@CPhoneViewController@@UAEXHPAVTPhoneCommandParam@@@Z @ 23 NONAME ; void CPhoneViewController::ExecuteCommandL(int, class TPhoneCommandParam *) - ?FetchContent@CPhoneViewController@@UAEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CPhoneViewController::FetchContent(void) - ?HandleCommandL@CPhoneViewController@@UAEHH@Z @ 25 NONAME ; int CPhoneViewController::HandleCommandL(int) + ?DoFetchForegroundApplicationWindowGroupIdL@CPhoneViewController@@SAHAAVCEikonEnv@@@Z @ 2 NONAME ; int CPhoneViewController::DoFetchForegroundApplicationWindowGroupIdL(class CEikonEnv &) + ?SetBlockingDialogIsDisplayed@CPhoneViewController@@UAEXH@Z @ 3 NONAME ; void CPhoneViewController::SetBlockingDialogIsDisplayed(int) + ?BlockingDialogIsDisplayed@CPhoneViewController@@QBEHXZ @ 4 NONAME ; int CPhoneViewController::BlockingDialogIsDisplayed(void) const + ?ButtonState@CPhoneDialerController@@UBEHW4TButtonIndex@MPhoneDialerController@@@Z @ 5 NONAME ; int CPhoneDialerController::ButtonState(enum MPhoneDialerController::TButtonIndex) const + ?ExecuteCommandL@CPhoneViewController@@UAEXHHAAVTDesC16@@@Z @ 6 NONAME ; void CPhoneViewController::ExecuteCommandL(int, int, class TDesC16 &) + ?ConstructL@CPhoneDialerController@@IAEXXZ @ 7 NONAME ; void CPhoneDialerController::ConstructL(void) + ?SetHiddenL@CPhoneViewController@@QAEXH@Z @ 8 NONAME ; void CPhoneViewController::SetHiddenL(int) + ??0CPhoneDialerController@@IAE@PAVCPhoneBubbleWrapper@@AAVCCoeEnv@@@Z @ 9 NONAME ; CPhoneDialerController::CPhoneDialerController(class CPhoneBubbleWrapper *, class CCoeEnv &) + ?HandleLayoutChange@CPhoneViewController@@QAEXVTRect@@@Z @ 10 NONAME ; void CPhoneViewController::HandleLayoutChange(class TRect) + ?SetNumberEntryIsEmpty@CPhoneDialerController@@UAEXH@Z @ 11 NONAME ; void CPhoneDialerController::SetNumberEntryIsEmpty(int) + ?ApplicationWindowGroupId@CPhoneViewController@@QAEHXZ @ 12 NONAME ; int CPhoneViewController::ApplicationWindowGroupId(void) + ?EasyDialingAllowed@CPhoneDialerController@@UBEHXZ @ 13 NONAME ; int CPhoneDialerController::EasyDialingAllowed(void) const + ?EmergencyCallActive@CPhoneDialerController@@IBEHXZ @ 14 NONAME ; int CPhoneDialerController::EmergencyCallActive(void) const + ?ExecuteCommand@CPhoneViewController@@UAEXH@Z @ 15 NONAME ; void CPhoneViewController::ExecuteCommand(int) + ?ForegroundApplicationWindowGroupId@CPhoneViewController@@QAEHXZ @ 16 NONAME ; int CPhoneViewController::ForegroundApplicationWindowGroupId(void) + ?GetButtonData@CPhoneDialerController@@UBEHW4TButtonIndex@MPhoneDialerController@@AAV?$RPointerArray@VCButtonData@MPhoneDialerController@@@@@Z @ 17 NONAME ; int CPhoneDialerController::GetButtonData(enum MPhoneDialerController::TButtonIndex, class RPointerArray &) const + ??1CPhoneDialerController@@UAE@XZ @ 18 NONAME ; CPhoneDialerController::~CPhoneDialerController(void) + ?CbaResourceId@CPhoneDialerController@@UBEHXZ @ 19 NONAME ; int CPhoneDialerController::CbaResourceId(void) const + ?ExecuteCommand@CPhoneViewController@@UAEXHPAVTPhoneCommandParam@@@Z @ 20 NONAME ; void CPhoneViewController::ExecuteCommand(int, class TPhoneCommandParam *) + ?ExecuteCommandL@CPhoneViewController@@UAEXHHPAVTPhoneCommandParam@@@Z @ 21 NONAME ; void CPhoneViewController::ExecuteCommandL(int, int, class TPhoneCommandParam *) + ?NumberEntryPromptTextL@CPhoneDialerController@@UAEABVTDesC16@@XZ @ 22 NONAME ; class TDesC16 const & CPhoneDialerController::NumberEntryPromptTextL(void) + ?ExecuteCommandL@CPhoneViewController@@UAEXHH@Z @ 23 NONAME ; void CPhoneViewController::ExecuteCommandL(int, int) + ?HelpContext@CPhoneViewController@@QAEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CPhoneViewController::HelpContext(void) + ?NewL@CPhoneSingleItemFetch@@SAPAV1@AAVCEikonEnv@@AAVCPhoneViewController@@AAVCPhoneContactController@@AAVCPhoneStatusPane@@@Z @ 25 NONAME ; class CPhoneSingleItemFetch * CPhoneSingleItemFetch::NewL(class CEikonEnv &, class CPhoneViewController &, class CPhoneContactController &, class CPhoneStatusPane &) + ?IdleWindowGroupId@CPhoneViewController@@QAEHXZ @ 26 NONAME ; int CPhoneViewController::IdleWindowGroupId(void) + ?MenuResourceId@CPhoneDialerController@@UBEHXZ @ 27 NONAME ; int CPhoneDialerController::MenuResourceId(void) const + ?PhoneView@CPhoneViewController@@QAEPAVCPhoneView@@XZ @ 28 NONAME ; class CPhoneView * CPhoneViewController::PhoneView(void) + ?HandleSecurityModeChanged@CPhoneViewController@@UAEXH@Z @ 29 NONAME ; void CPhoneViewController::HandleSecurityModeChanged(int) + ?ButtonDimmed@CPhoneDialerController@@UBEHW4TButtonIndex@MPhoneDialerController@@@Z @ 30 NONAME ; int CPhoneDialerController::ButtonDimmed(enum MPhoneDialerController::TButtonIndex) const + ?HandleCommandL@CPhoneViewController@@UAEHHPAVTPhoneCommandParam@@@Z @ 31 NONAME ; int CPhoneViewController::HandleCommandL(int, class TPhoneCommandParam *) + ?NewL@CPhoneViewController@@SAPAV1@VTRect@@@Z @ 32 NONAME ; class CPhoneViewController * CPhoneViewController::NewL(class TRect) + ?StatusPaneDisplayed@CPhoneViewController@@QAEHXZ @ 33 NONAME ; int CPhoneViewController::StatusPaneDisplayed(void) + ??1CPhoneViewController@@UAE@XZ @ 34 NONAME ; CPhoneViewController::~CPhoneViewController(void) + ?ExecuteCommandL@CPhoneViewController@@UAEXH@Z @ 35 NONAME ; void CPhoneViewController::ExecuteCommandL(int) + ?ExecuteCommandL@CPhoneViewController@@UAEXHPAVTPhoneCommandParam@@@Z @ 36 NONAME ; void CPhoneViewController::ExecuteCommandL(int, class TPhoneCommandParam *) + ?FetchContent@CPhoneViewController@@UAEABVTDesC16@@XZ @ 37 NONAME ; class TDesC16 const & CPhoneViewController::FetchContent(void) + ?HandleCommandL@CPhoneViewController@@UAEHH@Z @ 38 NONAME ; int CPhoneViewController::HandleCommandL(int) diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/eabi/phoneuiviewu.def --- a/phoneapp/phoneuiview/eabi/phoneuiviewu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/eabi/phoneuiviewu.def Fri Apr 23 14:59:43 2010 +0100 @@ -16,92 +16,123 @@ _ZN20CPhoneViewController19StatusPaneDisplayedEv @ 15 NONAME _ZN20CPhoneViewController21HandleResourceChangeLEi @ 16 NONAME _ZN20CPhoneViewController24ApplicationWindowGroupIdEv @ 17 NONAME - _ZN20CPhoneViewController28SetBlockingDialogIsDisplayedEi @ 18 NONAME - _ZN20CPhoneViewController34ForegroundApplicationWindowGroupIdEv @ 19 NONAME - _ZN20CPhoneViewController42DoFetchForegroundApplicationWindowGroupIdLER9CEikonEnv @ 20 NONAME - _ZN20CPhoneViewController4NewLE5TRect @ 21 NONAME - _ZN20CPhoneViewController9PhoneViewEv @ 22 NONAME - _ZN21CPhoneSingleItemFetch4NewLER9CEikonEnvR20CPhoneViewControllerR23CPhoneContactControllerR16CPhoneStatusPane @ 23 NONAME - _ZNK20CPhoneViewController25BlockingDialogIsDisplayedEv @ 24 NONAME - _ZTI10CPhoneNote @ 25 NONAME - _ZTI10CPhoneView @ 26 NONAME - _ZTI15CPhoneTextQuery @ 27 NONAME - _ZTI16CPhoneDialerView @ 28 NONAME - _ZTI16CPhoneStatusPane @ 29 NONAME - _ZTI17CPhoneAudioPlayer @ 30 NONAME - _ZTI17CPhoneQueryDialog @ 31 NONAME - _ZTI17CPhoneRingingTone @ 32 NONAME - _ZTI17CPhoneVmbxHandler @ 33 NONAME - _ZTI18CPhoneProgressNote @ 34 NONAME - _ZTI19CPhoneBubbleMapping @ 35 NONAME - _ZTI19CPhoneBubbleWrapper @ 36 NONAME - _ZTI19CPhoneTextTitlePane @ 37 NONAME - _ZTI20CPhoneMenuController @ 38 NONAME - _ZTI20CPhoneNoteController @ 39 NONAME - _ZTI20CPhoneUIDisabledNote @ 40 NONAME - _ZTI20CPhoneViewController @ 41 NONAME - _ZTI21CPhoneApplicationExit @ 42 NONAME - _ZTI21CPhoneAudioController @ 43 NONAME - _ZTI21CPhoneBubbleExtension @ 44 NONAME - _ZTI21CPhoneDtmfSendingNote @ 45 NONAME - _ZTI21CPhoneIncallIndicator @ 46 NONAME - _ZTI21CPhoneListQueryDialog @ 47 NONAME - _ZTI21CPhoneQueryController @ 48 NONAME - _ZTI21CPhoneSingleItemFetch @ 49 NONAME - _ZTI23CPhoneContactController @ 50 NONAME - _ZTI25CPhoneBubbleExtensionData @ 51 NONAME - _ZTI25CPhoneDtmfNumberListQuery @ 52 NONAME - _ZTI25CPhoneRingingTonePlayerAO @ 53 NONAME - _ZTI26CPhoneKeyCaptureController @ 54 NONAME - _ZTI28CPhoneBubbleExtensionManager @ 55 NONAME - _ZTI29CPhoneCallHeaderTextAnimation @ 56 NONAME - _ZTIN21CPhoneApplicationExit11CElementUidE @ 57 NONAME - _ZTIN21CPhoneApplicationExit13CElementBasicE @ 58 NONAME - _ZTIN21CPhoneApplicationExit13CElementDriveE @ 59 NONAME - _ZTV10CPhoneNote @ 60 NONAME - _ZTV10CPhoneView @ 61 NONAME - _ZTV15CPhoneTextQuery @ 62 NONAME - _ZTV16CPhoneDialerView @ 63 NONAME - _ZTV16CPhoneStatusPane @ 64 NONAME - _ZTV17CPhoneAudioPlayer @ 65 NONAME - _ZTV17CPhoneQueryDialog @ 66 NONAME - _ZTV17CPhoneRingingTone @ 67 NONAME - _ZTV17CPhoneVmbxHandler @ 68 NONAME - _ZTV18CPhoneProgressNote @ 69 NONAME - _ZTV19CPhoneBubbleMapping @ 70 NONAME - _ZTV19CPhoneBubbleWrapper @ 71 NONAME - _ZTV19CPhoneTextTitlePane @ 72 NONAME - _ZTV20CPhoneMenuController @ 73 NONAME - _ZTV20CPhoneNoteController @ 74 NONAME - _ZTV20CPhoneUIDisabledNote @ 75 NONAME - _ZTV20CPhoneViewController @ 76 NONAME - _ZTV21CPhoneApplicationExit @ 77 NONAME - _ZTV21CPhoneAudioController @ 78 NONAME - _ZTV21CPhoneBubbleExtension @ 79 NONAME - _ZTV21CPhoneDtmfSendingNote @ 80 NONAME - _ZTV21CPhoneIncallIndicator @ 81 NONAME - _ZTV21CPhoneListQueryDialog @ 82 NONAME - _ZTV21CPhoneQueryController @ 83 NONAME - _ZTV21CPhoneSingleItemFetch @ 84 NONAME - _ZTV23CPhoneContactController @ 85 NONAME - _ZTV25CPhoneBubbleExtensionData @ 86 NONAME - _ZTV25CPhoneDtmfNumberListQuery @ 87 NONAME - _ZTV25CPhoneRingingTonePlayerAO @ 88 NONAME - _ZTV26CPhoneKeyCaptureController @ 89 NONAME - _ZTV28CPhoneBubbleExtensionManager @ 90 NONAME - _ZTV29CPhoneCallHeaderTextAnimation @ 91 NONAME - _ZTVN21CPhoneApplicationExit11CElementUidE @ 92 NONAME - _ZTVN21CPhoneApplicationExit13CElementBasicE @ 93 NONAME - _ZTVN21CPhoneApplicationExit13CElementDriveE @ 94 NONAME - _ZThn12_N20CPhoneViewController28SetBlockingDialogIsDisplayedEi @ 95 NONAME - _ZThn4_N20CPhoneViewController12FetchContentEv @ 96 NONAME - _ZThn4_N20CPhoneViewController14ExecuteCommandEi @ 97 NONAME - _ZThn4_N20CPhoneViewController14ExecuteCommandEiP18TPhoneCommandParam @ 98 NONAME - _ZThn4_N20CPhoneViewController14HandleCommandLEi @ 99 NONAME - _ZThn4_N20CPhoneViewController14HandleCommandLEiP18TPhoneCommandParam @ 100 NONAME - _ZThn4_N20CPhoneViewController15ExecuteCommandLEi @ 101 NONAME - _ZThn4_N20CPhoneViewController15ExecuteCommandLEiP18TPhoneCommandParam @ 102 NONAME - _ZThn4_N20CPhoneViewController15ExecuteCommandLEii @ 103 NONAME - _ZThn4_N20CPhoneViewController15ExecuteCommandLEiiP18TPhoneCommandParam @ 104 NONAME - _ZThn4_N20CPhoneViewController15ExecuteCommandLEiiR7TDesC16 @ 105 NONAME + _ZN20CPhoneViewController25HandleSecurityModeChangedEi @ 18 NONAME + _ZN20CPhoneViewController28SetBlockingDialogIsDisplayedEi @ 19 NONAME + _ZN20CPhoneViewController34ForegroundApplicationWindowGroupIdEv @ 20 NONAME + _ZN20CPhoneViewController42DoFetchForegroundApplicationWindowGroupIdLER9CEikonEnv @ 21 NONAME + _ZN20CPhoneViewController4NewLE5TRect @ 22 NONAME + _ZN20CPhoneViewController9PhoneViewEv @ 23 NONAME + _ZN21CPhoneSingleItemFetch4NewLER9CEikonEnvR20CPhoneViewControllerR23CPhoneContactControllerR16CPhoneStatusPane @ 24 NONAME + _ZN22CPhoneDialerController10ConstructLEv @ 25 NONAME + _ZN22CPhoneDialerController21SetNumberEntryIsEmptyEi @ 26 NONAME + _ZN22CPhoneDialerController22NumberEntryPromptTextLEv @ 27 NONAME + _ZN22CPhoneDialerControllerC1EP19CPhoneBubbleWrapperR7CCoeEnv @ 28 NONAME + _ZN22CPhoneDialerControllerC2EP19CPhoneBubbleWrapperR7CCoeEnv @ 29 NONAME + _ZN22CPhoneDialerControllerD0Ev @ 30 NONAME + _ZN22CPhoneDialerControllerD1Ev @ 31 NONAME + _ZN22CPhoneDialerControllerD2Ev @ 32 NONAME + _ZNK20CPhoneViewController25BlockingDialogIsDisplayedEv @ 33 NONAME + _ZNK22CPhoneDialerController11ButtonStateEN22MPhoneDialerController12TButtonIndexE @ 34 NONAME + _ZNK22CPhoneDialerController12ButtonDimmedEN22MPhoneDialerController12TButtonIndexE @ 35 NONAME + _ZNK22CPhoneDialerController13CbaResourceIdEv @ 36 NONAME + _ZNK22CPhoneDialerController13GetButtonDataEN22MPhoneDialerController12TButtonIndexER13RPointerArrayINS0_11CButtonDataEE @ 37 NONAME + _ZNK22CPhoneDialerController14MenuResourceIdEv @ 38 NONAME + _ZNK22CPhoneDialerController18EasyDialingAllowedEv @ 39 NONAME + _ZNK22CPhoneDialerController19EmergencyCallActiveEv @ 40 NONAME + _ZTI10CPhoneNote @ 41 NONAME + _ZTI10CPhoneView @ 42 NONAME + _ZTI15CPhoneTextQuery @ 43 NONAME + _ZTI16CPhoneDialerView @ 44 NONAME + _ZTI16CPhoneStatusPane @ 45 NONAME + _ZTI17CPhoneAudioPlayer @ 46 NONAME + _ZTI17CPhoneQueryDialog @ 47 NONAME + _ZTI17CPhoneRingingTone @ 48 NONAME + _ZTI17CPhoneVmbxHandler @ 49 NONAME + _ZTI18CPhoneProgressNote @ 50 NONAME + _ZTI19CPhoneBubbleMapping @ 51 NONAME + _ZTI19CPhoneBubbleWrapper @ 52 NONAME + _ZTI19CPhoneTextTitlePane @ 53 NONAME + _ZTI20CPhoneMenuController @ 54 NONAME + _ZTI20CPhoneNoteController @ 55 NONAME + _ZTI20CPhoneViewController @ 56 NONAME + _ZTI21CPhoneApplicationExit @ 57 NONAME + _ZTI21CPhoneAudioController @ 58 NONAME + _ZTI21CPhoneBubbleExtension @ 59 NONAME + _ZTI21CPhoneDtmfSendingNote @ 60 NONAME + _ZTI21CPhoneIncallIndicator @ 61 NONAME + _ZTI21CPhoneListQueryDialog @ 62 NONAME + _ZTI21CPhoneQueryController @ 63 NONAME + _ZTI21CPhoneSingleItemFetch @ 64 NONAME + _ZTI22CPhoneDialerController @ 65 NONAME + _ZTI23CPhoneContactController @ 66 NONAME + _ZTI23CPhoneRingingToneServer @ 67 NONAME + _ZTI25CPhoneBubbleExtensionData @ 68 NONAME + _ZTI25CPhoneDtmfNumberListQuery @ 69 NONAME + _ZTI25CPhoneRingingTonePlayerAO @ 70 NONAME + _ZTI26CPhoneKeyCaptureController @ 71 NONAME + _ZTI28CPhoneBubbleExtensionManager @ 72 NONAME + _ZTI28CPhoneRingingToneSrvPlayerAO @ 73 NONAME + _ZTI29CPhoneCallHeaderTextAnimation @ 74 NONAME + _ZTI30CPhoneRingingToneServerSession @ 75 NONAME + _ZTIN21CPhoneApplicationExit11CElementUidE @ 76 NONAME + _ZTIN21CPhoneApplicationExit13CElementBasicE @ 77 NONAME + _ZTIN21CPhoneApplicationExit13CElementDriveE @ 78 NONAME + _ZTV10CPhoneNote @ 79 NONAME + _ZTV10CPhoneView @ 80 NONAME + _ZTV15CPhoneTextQuery @ 81 NONAME + _ZTV16CPhoneDialerView @ 82 NONAME + _ZTV16CPhoneStatusPane @ 83 NONAME + _ZTV17CPhoneAudioPlayer @ 84 NONAME + _ZTV17CPhoneQueryDialog @ 85 NONAME + _ZTV17CPhoneRingingTone @ 86 NONAME + _ZTV17CPhoneVmbxHandler @ 87 NONAME + _ZTV18CPhoneProgressNote @ 88 NONAME + _ZTV19CPhoneBubbleMapping @ 89 NONAME + _ZTV19CPhoneBubbleWrapper @ 90 NONAME + _ZTV19CPhoneTextTitlePane @ 91 NONAME + _ZTV20CPhoneMenuController @ 92 NONAME + _ZTV20CPhoneNoteController @ 93 NONAME + _ZTV20CPhoneViewController @ 94 NONAME + _ZTV21CPhoneApplicationExit @ 95 NONAME + _ZTV21CPhoneAudioController @ 96 NONAME + _ZTV21CPhoneBubbleExtension @ 97 NONAME + _ZTV21CPhoneDtmfSendingNote @ 98 NONAME + _ZTV21CPhoneIncallIndicator @ 99 NONAME + _ZTV21CPhoneListQueryDialog @ 100 NONAME + _ZTV21CPhoneQueryController @ 101 NONAME + _ZTV21CPhoneSingleItemFetch @ 102 NONAME + _ZTV22CPhoneDialerController @ 103 NONAME + _ZTV23CPhoneContactController @ 104 NONAME + _ZTV23CPhoneRingingToneServer @ 105 NONAME + _ZTV25CPhoneBubbleExtensionData @ 106 NONAME + _ZTV25CPhoneDtmfNumberListQuery @ 107 NONAME + _ZTV25CPhoneRingingTonePlayerAO @ 108 NONAME + _ZTV26CPhoneKeyCaptureController @ 109 NONAME + _ZTV28CPhoneBubbleExtensionManager @ 110 NONAME + _ZTV28CPhoneRingingToneSrvPlayerAO @ 111 NONAME + _ZTV29CPhoneCallHeaderTextAnimation @ 112 NONAME + _ZTV30CPhoneRingingToneServerSession @ 113 NONAME + _ZTVN21CPhoneApplicationExit11CElementUidE @ 114 NONAME + _ZTVN21CPhoneApplicationExit13CElementBasicE @ 115 NONAME + _ZTVN21CPhoneApplicationExit13CElementDriveE @ 116 NONAME + _ZThn12_N20CPhoneViewController28SetBlockingDialogIsDisplayedEi @ 117 NONAME + _ZThn20_N20CPhoneViewController25HandleSecurityModeChangedEi @ 118 NONAME + _ZThn4_N20CPhoneViewController12FetchContentEv @ 119 NONAME + _ZThn4_N20CPhoneViewController14ExecuteCommandEi @ 120 NONAME + _ZThn4_N20CPhoneViewController14ExecuteCommandEiP18TPhoneCommandParam @ 121 NONAME + _ZThn4_N20CPhoneViewController14HandleCommandLEi @ 122 NONAME + _ZThn4_N20CPhoneViewController14HandleCommandLEiP18TPhoneCommandParam @ 123 NONAME + _ZThn4_N20CPhoneViewController15ExecuteCommandLEi @ 124 NONAME + _ZThn4_N20CPhoneViewController15ExecuteCommandLEiP18TPhoneCommandParam @ 125 NONAME + _ZThn4_N20CPhoneViewController15ExecuteCommandLEii @ 126 NONAME + _ZThn4_N20CPhoneViewController15ExecuteCommandLEiiP18TPhoneCommandParam @ 127 NONAME + _ZThn4_N20CPhoneViewController15ExecuteCommandLEiiR7TDesC16 @ 128 NONAME + _ZThn4_N22CPhoneDialerController21SetNumberEntryIsEmptyEi @ 129 NONAME + _ZThn4_N22CPhoneDialerController22NumberEntryPromptTextLEv @ 130 NONAME + _ZThn4_NK22CPhoneDialerController11ButtonStateEN22MPhoneDialerController12TButtonIndexE @ 131 NONAME + _ZThn4_NK22CPhoneDialerController12ButtonDimmedEN22MPhoneDialerController12TButtonIndexE @ 132 NONAME + _ZThn4_NK22CPhoneDialerController13CbaResourceIdEv @ 133 NONAME + _ZThn4_NK22CPhoneDialerController13GetButtonDataEN22MPhoneDialerController12TButtonIndexER13RPointerArrayINS0_11CButtonDataEE @ 134 NONAME + _ZThn4_NK22CPhoneDialerController14MenuResourceIdEv @ 135 NONAME + _ZThn4_NK22CPhoneDialerController18EasyDialingAllowedEv @ 136 NONAME diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/group/bld.inf --- a/phoneapp/phoneuiview/group/bld.inf Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -24,7 +24,8 @@ DEFAULT PRJ_EXPORTS - +../inc/mphonedialercontroller.h |../../../inc/mphonedialercontroller.h +../inc/cphonedialercontroller.h |../../../inc/cphonedialercontroller.h // Stub SIS files: ../group/phoneuiview_stub.sis /epoc32/data/z/system/install/phoneuiview_stub.sis diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/group/phoneuiview.mmp --- a/phoneapp/phoneuiview/group/phoneuiview.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/group/phoneuiview.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -42,7 +42,6 @@ SOURCE cphonekeycapturecontroller.cpp SOURCE cphonemenucontroller.cpp SOURCE cphonenote.cpp -SOURCE cphoneuidisablednote.cpp SOURCE cphonenotecontroller.cpp SOURCE cphoneprogressnote.cpp SOURCE cphonequerycontroller.cpp @@ -65,7 +64,12 @@ SOURCE phonebubbleextension.cpp SOURCE phonebubbleextensiondata.cpp SOURCE cphonetoolbarcontroller.cpp - +SOURCE cphoneeasydialingcontroller.cpp +SOURCE cphonedtmfdialercontroller.cpp +SOURCE phoneringingtonesrvplayerao.cpp +SOURCE phoneringingtonesrv.cpp +SOURCE phoneringingtonesrvsession.cpp +SOURCE phoneringingtoneclient.cpp /* Languages */ LANG SC @@ -164,4 +168,6 @@ LIBRARY platformenv.lib // PathInfo LIBRARY phonemediatorcenter.lib -LIBRARY serviceprovidersettings.lib \ No newline at end of file +LIBRARY serviceprovidersettings.lib + +LIBRARY musmanagerclient.lib diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonedialercontroller.h --- a/phoneapp/phoneuiview/inc/cphonedialercontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphonedialercontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009, 2010 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" @@ -20,299 +20,198 @@ #define CPHONEDIALERCONTROLLER_H #include -#include -#include +#include "mphonedialercontroller.h" #include "mphonenumberentrychangedhandler.h" -class CAknToolbar; class CPhoneBubbleWrapper; class CCoeEnv; -class CPhoneMenuController; +class MAknsSkinInstance; class TPhoneCommandParam; -class CAknButton; -class TAknsItemID; -class MPhoneDialerController; -class TPhoneCommandParam; +class CPhoneEasyDialingController; /** - * Dialer controller, updates toolbar buttons + * Dialer controller, provides toolbar button data for the normal mode dialer * * @lib PhoneUIView.lib * @since S60 v5.0 */ -NONSHARABLE_CLASS( CPhoneDialerController ): - public CBase, public MAknToolbarObserver, public MNumberEntryObserver, - public MPhoneNumberEntryChangedHandler +class CPhoneDialerController : + public CBase, + public MPhoneDialerController { -public: +public: // constructor and destructor /** * Two-phased constructor. - * @param aBubbleWrapper - * @param aCoeEnv - * @param aMenuController + * @param aBubbleWrapper Handle to bubble wrapper. Ownership not transferred. + * May be NULL, but then emergency call state can't be identified + * @param aCoeEnv Handle to coeenv. Ownership not transferred. */ - static CPhoneDialerController* NewL( CPhoneBubbleWrapper& aBubbleWrapper, - CCoeEnv& aCoeEnv, - CPhoneMenuController& aMenuController ); + static CPhoneDialerController* NewL( CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ); /** * Destructor. */ - virtual ~CPhoneDialerController(); - - /** - * Updates toolbar buttons according to numberentry state. - * - * @since S60 v5.0 - */ - void UpdateToolbar(); - - /** - * Sets state of dtmf dialer visibility. - * - * @since S60 v5.0 - * @param aVisible - */ - void SetDtmfDialerVisibleL( TBool aVisible ); - - /** - * Returns dtmf dialer visibility status. - * - * @since S60 v5.0 - * @return ETrue if DTMF Dialer is visible - */ - TBool IsDTMFDialerVisible() const; - - /** - * Sets state of restricted dialer. - * - * @since S60 v5.0 - * @param aRestricted - */ - void SetRestrictedDialer( TBool aRestricted ); - - /** - * Sets state of service code flag. - * - * @since S60 v5.0 - * @param aCommandParam - */ - void SetServiceCodeFlagL( TPhoneCommandParam* aCommandParam ); - - /** - * Enables toolbar - * - * @since S60 v5.0 - */ - void ShowToolbar(); - - /** - * Disables toolbar - * - * @since S60 v5.0 - */ - void HideToolbar(); - - /** - * Sets custom dialer visible. - * @param aCustomController Pointer to dialer extension implementation - * @since S60 v5.1 - */ - void ShowCustomizedDialerL( - MPhoneDialerController* aCustomController ); + IMPORT_C virtual ~CPhoneDialerController(); - /** - * Sets custom dialer visible. - * @since S60 v5.1 - */ - void HideCustomizedDialer(); - - /** - * Returns flag indicating if customized dialer is visible. - * @return ETrue if customized dialer visible, else EFalse - * @since S60 v5.1 - */ - TBool IsCustomizedDialerVisible() const; - - /** - * Returns sotkeys resource of the customized dialer - * @return Customized dialer softkeys resource id - * @since S60 v5.1 - */ - TInt CustomizedCbaResourceId() const; - - /** - * Returns menu resource of the customized dialer - * @return Customized dialer menu resource id - * @since S60 v5.1 - */ - TInt CustomizedMenuResourceId() const; - -public: // from MAknToolbarObserver - /** - * From base class MAknToolbarObserver - * Handles toolbar events for a certain toolbar item. - * - * @param aCommand The command ID of some toolbar item. - */ - void OfferToolbarEventL( TInt aCommand ); - - /** - * From base class MAknToolbarObserver - * Should be used to set the properties of some toolbar components - * before it is drawn. - * - * @param aResourceId The resource ID for particular toolbar - * @param aToolbar The toolbar object pointer - */ - void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar ); - -public: // from MNumberEntryObserver - /** - * From base class MNumberEntryObserver - * Indication that numberentry state changed - * - * @since S60 v5.0 - */ - void NumberEntryStateChanged( TBool aHidePromptText ); - -public: // from base class MPhoneNumberEntryChangedHandler - - /** - * From MPhoneNumberEntryChangedHandler - * - * Handles number entry state change. - * Checks has the content of the number entry been modifed. - * Informs the via call back functionality the party interested about - * the change. (at the moment phone state machine) - * - * @since S60 5.0 - */ - void HandleNumberEntryChanged( ); - - /** - * From MPhoneNumberEntryChangedHandler - * - * Sets the call back function that is used to get notification when the - * content of the Number Entry has changed. (Used by the the phone - * statemachine.) - * - * @since S60 5.0 - */ - void SetNumberEntryChangedCallBack( TPhoneCommandParam* aCommandParam ); - -private: - - /** - * Creates CAknButton with given parameters and leaves it to - * CleanupStack. - * - * @param aNormalIconId - * @param aNormalMaskId - * @param aTooltipText - * @param aSkinIconId - * @param aCommand - */ - CAknButton* CreateButtonLC( TInt aNormalIconId, - TInt aNormalMaskId, - const TDesC& aTooltipText, - const TAknsItemID& aSkinIconId, - TInt aCommand ); - - /** - * Creates button set for an empty Number Entry. - */ - void CreateButtonSetNumberEntryEmpty(); - - /** - * Creates button set for Number Entry when some charaters - * have been entered. - */ - void CreateButtonSetNumberEntryNotEmpty(); +protected: // constructors /** * Constructor. * * @param aBubbleWrapper * @param aCoeEnv - * @param aMenuController */ - CPhoneDialerController( CPhoneBubbleWrapper& aBubbleWrapper, - CCoeEnv& aCoeEnv, - CPhoneMenuController& aMenuController ); + IMPORT_C CPhoneDialerController( CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ); /** * Symbian 2nd phase constructor. * */ - void ConstructL(); + IMPORT_C void ConstructL(); + +public: // new methods /** - * Searches the skin id for the given icon. + * Sets state of restricted dialer. + * + * @since S60 v5.0 + * @param aRestricted + */ + void SetRestrictedDialer( TBool aRestricted ); + + /** + * Sets state of service code flag. + * + * @since S60 v5.0 + * @param aCommandParam + */ + void SetServiceCodeFlag( TPhoneCommandParam* aCommandParam ); + + /** + * Sets handle to the Easy Dialing controller. + * + * @since S60 v5.2 + * @param aController Easy Dialing controller. Ownership not transferred. */ - inline TAknsItemID SkinId( TInt aIconIndex ); + void SetEasyDialingController( CPhoneEasyDialingController* aController ); + +public: // From MPhoneDialerController + + /** + * @see MPhoneDialerController + */ + IMPORT_C TInt CbaResourceId() const; + + /** + * @see MPhoneDialerController + */ + IMPORT_C TInt MenuResourceId() const; + + /** + * @see MPhoneDialerController + */ + IMPORT_C const TDesC& NumberEntryPromptTextL(); + + /** + * @see MPhoneDialerController + */ + + /** + * @see MPhoneDialerController + */ + IMPORT_C TInt GetButtonData( TButtonIndex aIndex, RPointerArray& aData ) const; /** - * Searches the tooltip text for the button using the - * the given command id. - * - * @param aCommandId the command id - * @param aText the searched tooltip text + * @see MPhoneDialerController + */ + IMPORT_C void SetNumberEntryIsEmpty( TBool aEmpty ); + + /** + * @see MPhoneDialerController */ - void GetTooltipTextL( TInt aCommandId, HBufC*& aText ); + IMPORT_C TInt ButtonState( TButtonIndex aIndex ) const; -private: // data /** - * AknToolbar. - * Not own. + * @see MPhoneDialerController */ - CAknToolbar* iToolbar; + IMPORT_C TBool ButtonDimmed( TButtonIndex aIndex ) const; /** - * The reference to the Bubblewrapper + * @see MPhoneDialerController + */ + IMPORT_C TBool EasyDialingAllowed() const; + +public: // data types + /** + * Initialization data for one toolbar button state. */ - CPhoneBubbleWrapper& iBubbleWrapper; + struct TLocalButtonData + { + TInt iCommandId; + TInt iSkinItemIdMinor; + TInt iBitmapIndex; + TInt iBitmapMaskIndex; + TInt iTooltipResourceId; + }; + +protected: // methods + + /** + * Check is there an emergency call ongoing. + * @return ETrue if there's an active emergency call. + * EFalse otherwise. + */ + TBool EmergencyCallActive() const; /** + * Check if Easy Dialing contact listbox is in focus. + * @return ETrue if contact list is in focus + * EFalse otherwise (may be also because there's no ED + * present in the device) + */ + TBool EasyDialingFocused() const; + + /** + * Create button data object from given source data. + * @param aSourceData Defines, where the data should be loaded. + * @param aSkin Skin instance. Ownership not transferred. + * @param aMifFile Full path to the MIF file holding the fallback graphics. + * @return New CButtonData instance. Ownership is transferred. + */ + CButtonData* CreateButtonDataL( const TLocalButtonData& aSourceData, + MAknsSkinInstance* aSkin, const TDesC& aMifFile ) const; + +protected: // data + /** * CoeEnv */ CCoeEnv& iCoeEnv; /** - * Menucontroller + * Handle to the Bubblewrapper. May be NULL. Not owned. */ - CPhoneMenuController& iMenuController; + CPhoneBubbleWrapper* iBubbleWrapper; /** - * Used to check is the Dialer in DTMF mode + * Handle to Easy Dialing controller. May be NULL. Not owned. */ - TBool iDtmfDialerVisible; - + CPhoneEasyDialingController* iEasyDialingController; + /** * Used to check is the Dialer in the restricted mode. - * 'Send' and 'Add to Contacts' buttons are dimmed. */ - TBool iRestrictedDialer; + TBool iRestrictedDialer; /** - * Used to check is the service code flag set. - * Tooltip text is changed between 'Send' or 'Call' + * Used to check is the service code flag set, meaning that number entry + * contains a service code rather than phone number. */ TBool iServiceCodeFlag; - /* - * Is used to check has the hide prompt text flag changed. + /** + * Store availability of phone number (etc) in the number entry. */ - TBool iPreviousHidePromptTextStatus; - - // Pointer to dialer extension implementation - MPhoneDialerController* iCustomizedDialer; - - /** - * Is used to check should toolbar be updated. - */ - TBool iUpdateToolbar; - + TBool iNumberAvailable; }; -#include "cphonedialercontroller.inl" - #endif // CPHONEDIALERCONTROLLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonedialercontroller.inl --- a/phoneapp/phoneuiview/inc/cphonedialercontroller.inl Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* Copyright (c) 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: private, CPhoneDialerController -* -*/ - -#ifndef CPHONEDIALERCONTROLLER_INL_ -#define CPHONEDIALERCONTROLLER_INL_ - -#include -#include - -// --------------------------------------------------------------------------- -// SkinId -// --------------------------------------------------------------------------- -// -inline TAknsItemID CPhoneDialerController::SkinId( TInt aIconIndex ) - { - TAknsItemID skinId; - - switch ( aIconIndex ) - { - case EMbmPhoneuiQgn_indi_dialer_call_send: - skinId = KAknsIIDQgnIndiDialerCallSend; - break; - case EMbmPhoneuiQgn_indi_button_send_dtmf: - skinId = KAknsIIDQgnIndiButtonSendDtmf; - break; - case EMbmPhoneuiQgn_indi_dialer_contacts: - skinId = KAknsIIDQgnIndiDialerContacts; - break; - case EMbmPhoneuiQgn_indi_dialer_add_contacts: - skinId = KAknsIIDQgnIndiDialerAddContacts; - break; - case EMbmPhoneuiQgn_indi_dialer_clear: - skinId = KAknsIIDQgnIndiDialerClear; - break; - default: - skinId = KAknsIIDNone; - break; - } - return skinId; - } - -#endif /*CPHONEDIALERCONTROLLER_INL_*/ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonedialerview.h --- a/phoneapp/phoneuiview/inc/cphonedialerview.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphonedialerview.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 - 2010 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" @@ -56,6 +56,13 @@ */ void HandleResourceChange( TInt aType ); + /** + * From CCoeControl + * @param aVisible : ETrue if view is to be shown + * EFalse if view is to be hidden + */ + void MakeVisible( TBool aVisible ); + public: // New functions /** @@ -69,20 +76,6 @@ * @return aControl The control. */ CCoeControl* Control() const; - - /** - * Sets the security mode flag ETrue or EFalse - * @param aStatus ETrue for the security mode. EFalse for the - * normal mode. - */ - void SetSecurityMode ( TBool aStatus ); - - /** - * Get state of the security mode flag - * @return aStatus ETrue for the security mode. EFalse for the - * normal mode. - */ - TBool IsSecurityMode(); public: // Functions from base classes @@ -200,9 +193,7 @@ //MainPane TRect iMainPane; - - //Is security mode or not - TBool iSecurityMode; + }; #endif // __CPHONEDIALERVIEW_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonedtmfdialercontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/cphonedtmfdialercontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,102 @@ +/* +* Copyright (c) 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: Controller for DTMF mode of Dialer +* +*/ + +#ifndef CPHONEDTMFDIALERCONTROLLER_H +#define CPHONEDTMFDIALERCONTROLLER_H + +// INCLUDES +#include +#include +#include "cphonedialercontroller.h" + +// CLASS DECLARATION + +/** + * CPhoneDtmfDialerController + * + * Provides data for the DTMF mode of the dialer. + */ +NONSHARABLE_CLASS( CPhoneDtmfDialerController ) : public CPhoneDialerController + { +public: // Constructors and destructor + + /** + * Destructor. + */ + ~CPhoneDtmfDialerController(); + + /** + * Two-phased constructor. + */ + static CPhoneDtmfDialerController* NewL( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ); + + /** + * Two-phased constructor. + */ + static CPhoneDtmfDialerController* NewLC( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ); + +private: + + /** + * Constructor for performing 1st stage construction + */ + CPhoneDtmfDialerController( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ); + + /** + * Symbian default constructor for performing 2nd stage construction + */ + void ConstructL(); + +public: // from CPhoneDialerController + + /** + * @see MPhoneDialerController + */ + const TDesC& NumberEntryPromptTextL(); + + /** + * @see MPhoneDialerController + */ + TInt GetButtonData( TButtonIndex aIndex, RPointerArray& aData ) const; + + /** + * @see MPhoneDialerController + */ + TInt ButtonState( TButtonIndex aIndex ) const; + + /** + * @see MPhoneDialerController + */ + TBool ButtonDimmed( TButtonIndex aIndex ) const; + + /** + * @see MPhoneDialerController + */ + TBool EasyDialingAllowed() const; + +private: // data + + HBufC* iPromptText; // OWN + }; + +#endif // CPHONEDTMFDIALERCONTROLLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphoneeasydialingcontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/cphoneeasydialingcontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,76 @@ +/* +* Copyright (c) 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: Class handles Easy dialing specific commands +* +*/ + +#ifndef CPHONEEASYDIALINGCONTROLLER_H +#define CPHONEEASYDIALINGCONTROLLER_H + +//INCLUDES +#include +#include "phoneviewcommanddefinitions.h" + +//FORWARD +class CDialer; +class TPhoneCommandParam; +class CDialingExtensionInterface; + +/** + * Class takes care of Easy dialing + * + * @lib phoneuicontrol + * @since S60 v9.2 + */ +NONSHARABLE_CLASS( CPhoneEasyDialingController ) : public CBase + { + public: + + /** + * Creates new instance of CPhoneEasyDialingController + * @param aDialer: reference to dialer + * @return CPhoneEasyDialingController* object + */ + static CPhoneEasyDialingController* NewL( + CDialer& aDialer ); + + /** + * Destructor. + */ + virtual ~CPhoneEasyDialingController(); + + void ExecuteCommandL( + TPhoneViewCommandId aCmdId, + TPhoneCommandParam* aCommandParam ); + + TPhoneViewResponseId HandleCommandL( TPhoneViewCommandId aCmdId ); + + TBool InitializeEasyDialingMenuL( TPhoneCommandParam* aCommandParam ); + + private: + + /** + * C++ default constructor. + */ + CPhoneEasyDialingController(CDialer& aDialer); + + private: + // Dialer. Not owned + CDialer& iDialer; + + // Easydialing in interface. Not owned. + CDialingExtensionInterface* iEasyDialing; + }; + +#endif //CPHONEEASYDIALINGCONTROLLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonemenucontroller.h --- a/phoneapp/phoneuiview/inc/cphonemenucontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphonemenucontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -70,6 +70,8 @@ void GetConferenceAndSingleFlag( TPhoneCommandParam* aCommandParam ); + void SetConferenceAndWaitingVideoFlag( TBool aIsConfAndWaitingVideo ); + void SetSoftRejectFlag( TPhoneCommandParam* aCommandParam ); void GetSoftRejectFlag( TPhoneCommandParam* aCommandParam ); @@ -116,7 +118,13 @@ void SendAiwCommandL( TPhoneCommandParam* aCommandParam ); void SetContextMenu( TPhoneCommandParam* aCommandParam ); + + void SetInvalidCsPhoneNumberFlag( TPhoneCommandParam* aCommandParam ); + + void GetInvalidCsPhoneNumberFlag( TPhoneCommandParam* aCommandParam ); + void SetSecurityMode( TBool aMode ); + public: //from base class void HandlePropertyChangedL( @@ -162,6 +170,7 @@ TBool iMuteFlag; TBool iHoldFlag; TBool iConferenceAndSingleFlag; + TBool iConferenceAndWaitingVideoFlag; TBool iSoftRejectFlag; TBool iServiceCodeFlag; TBool iWiredAccFlag; @@ -181,6 +190,8 @@ TBool iAllowDtmfOptionsFlag; TBool iVoipEnabledFlag; TBool iHideVideoCallDTMFVisibility; + TBool iInvalidCsPhoneNumber; + TBool iSecurityMode; // Eikon environment delivered from CPhoneViewController CEikonEnv& iEikEnv; // Pointer to AIW service handler. OWNED. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonenote.h --- a/phoneapp/phoneuiview/inc/cphonenote.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphonenote.h Fri Apr 23 14:59:43 2010 +0100 @@ -64,6 +64,8 @@ protected: + void PreLayoutDynInitL(); + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonenotecontroller.h --- a/phoneapp/phoneuiview/inc/cphonenotecontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphonenotecontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -30,7 +30,6 @@ class CPhoneTimer; class CEikonEnv; class CPhoneNote; -class CPhoneUIDisabledNote; class CPhoneNoteController : public CBase, public MPhoneTimer { diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphoneringingtoneplayerao.h --- a/phoneapp/phoneuiview/inc/cphoneringingtoneplayerao.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphoneringingtoneplayerao.h Fri Apr 23 14:59:43 2010 +0100 @@ -22,12 +22,11 @@ // INCLUDES #include #include -#include "mphoneaudioplayerobserver.h" #include "mphonevideoplayerobserver.h" #include "mphonecenrepobserver.h" -#include "cphoneaudioplayer.h" #include "mphonetimer.h" #include "mphonevideoplayer.h" +#include "phoneringingtoneclient.h" // FORWARD DECLARATIONS //class MPhoneRingingToneObserver; @@ -51,7 +50,6 @@ class CPhoneRingingTonePlayerAO : public CActive, public MPhoneCenRepObserver, - private MPhoneAudioPlayerObserver, private MPhoneTimer, private MPhoneVideoPlayerObserver { @@ -60,19 +58,18 @@ enum TState { EIdleState, - EDeletingAudioPlayer, EDeletingVideoPlayer, EPlayingDefaultVideo }; public: - + /** * Two-phased constructor. * @return new instance. */ static CPhoneRingingTonePlayerAO* NewL(); - + /** * Destructor. */ @@ -86,6 +83,8 @@ /** * Play audio ring tone + * @param aVolume Volume used to play the ringing tone. + * @param aRingingType Ringing type. */ void PlayAudioRingTone( TInt aVolume, @@ -109,7 +108,7 @@ * @since S60 5.0 */ void PlayUnsecureVoIPTone(); - + /** * Stops playing the ringing tone. * Method does not do anything if ringing tone is not playing. @@ -121,13 +120,13 @@ * Stream not closed ( If music player was ongoing ) */ void MuteRingingToneOnAnswer(); - + /** * Continues video playback with muted audio. * Ringing tone is stopped. */ void MuteRingingTone(); - + /** * Sets video player. * @since Series 60 v3.2 @@ -135,7 +134,6 @@ */ void SetVideoPlayer( MPhoneVideoPlayer* aVideoPlayer ); - /** * Play TTS tone simultaneously with Personal or Default tones. * This method does not command phone to play TTS immediately. Instead @@ -174,15 +172,7 @@ * @return ETrue if extended security is required. */ TBool ExtendedSecurity() const; - - /** - * This function is called when Mediator receives response to the sent - * ShowMultiMediaRingingTone command. - * @param aStatus - Standard Symbian error code indicating the - * success of the command. - */ - void ShowMultimediaRingingToneResponseL( TInt aStatus ); - + public: // From MPhoneCenRepObserver /** @@ -198,92 +188,36 @@ private: /** - * Handle the error of audio file player. - */ - virtual void HandleAudioPlayerError( - TPhoneAudioPlayerErrorEvent aEvent, - TInt aError, - TInt aId = KPhoneAudioPlayerNotSpecified ); - - /** - * Handle audio player initialize complete. - */ - virtual void HandleAudioPlayerInitComplete( - TInt aId = KPhoneAudioPlayerNotSpecified ); - - /** - * Handle auido file playing complete successfully. - */ - virtual void HandlePlayingComplete( - TInt aId = KPhoneAudioPlayerNotSpecified ); - - /** * @see MPhoneTimer */ virtual void HandleTimeOutL(); /** - * HandleVideoPlayerError + * This function is called for video player errors. + * @param aEvent The error event happend in initializing or playing. + * @param aError The error code return by MMF video player. */ virtual void HandleVideoPlayerError( TPhoneVideoPlayerErrorEvent aEvent, TInt aError ); /** - * HandleVideoPlayerInitComplete + * This function is called when video player initialization complete */ virtual void HandleVideoPlayerInitComplete(); /** - * HandleVideoPlayerPlayingComplete + * This function is called after the playing completes successfully */ virtual void HandleVideoPlayerPlayingComplete(); - /** - * Enumerates identifiers for each player: - * EPlayerAudio - audio - * EPlayerBeepOnce - beep once - * EPlayerSilent - silent - * EPlayerDefault - default - * EPlayerBackup - backup - * - * EPlayerFirst and EPlayerLast are alias - * to other identifiers. - * EPlayerFirst - first player - * EPlayerLast - last player - */ - enum TPlayerId - { - EPlayerFirst, - EPlayerAudio = EPlayerFirst, - EPlayerBeepOnce, - EPlayerSilent, - EPlayerUnsecureVoIP, - EPlayerDefault, - EPlayerBackup, - EPlayerTts, - EPlayerLast = EPlayerTts, - EPlayerCount - }; - - /** - * Enumerates how many times TTs is played - * ESaidOnce -once - * ESaidTwice twice - */ - enum TTtsStatus - { - ESaidOnce, - ESaidTwice - }; - /** * C++ default constructor. */ CPhoneRingingTonePlayerAO(); /** - * By default Symbian OS constructor is private. + * Symbian 2nd phase constructor. */ void ConstructL(); @@ -306,35 +240,6 @@ TProfileRingingType aRingingType ); /** - * Do construct tone. - * @param aRingingTone Ringing tone. - * @return The instance of the player. NULL is returned if it's failed. - */ - CPhoneAudioPlayer* ConstructTonePlayer( - const CPhoneRingingTone& aRingingTone, - TInt aId ); - - /** - * Handle audio player error. - * @param aDelete ETrue if deletion of the player allowed, - * EFalse otherwise. - * @param aSync ETrue if synchronous deletion of players is allowed, - * EFalse otherwise. - */ - void DoHandlePlayerError( - TBool aDelete, - TBool aSync ); - - /** - * Convert ringing type from PhoneAppEnging to the ringing type in - * CPhoneAudioPlayer. - * @param aRingingType the ringing type form PhoneAppEngine. - * @return ringing type of CPhoneAudioPlayer. - */ - CPhoneAudioPlayer::TRingingType ConvertRingingType( - TProfileRingingType aRingingType ); - - /** * Convert ringing type from PhoneAppEnging to the ringing type in * MPhoneVideoPlayer. * @since Series 60 3.1 @@ -344,41 +249,6 @@ MPhoneVideoPlayer::TPlayMode ConvertVideoRingingType( TProfileRingingType aRingingType ); - /** - * Construct media server and backup tone player. - */ - TInt ConstructPlayers(); - - /** - * Construct media server and backup tone player. - */ - void ConstructPlayersL(); - - /** - * Construct sequence players. - * @param aPlayer player to be constructed. - */ - void ConstructSequencePlayer( - TPlayerId aPlayer ); - - /** - * Construct sequence players. - * @param aPlayer player to be constructed. - */ - void ConstructSequencePlayerL( - TPlayerId aPlayer ); - - /** - * Cleanup players. - */ - void CleanupPlayers(); - - /** - * Deletes player asynchronoysly. - * @param aPlayer player to be deleted. - */ - void DeletePlayerAsync( - TPlayerId aPlayer ); /** * Plays default L1 or L2 video ring tone asynchronously. * @since Series 60 3.1 @@ -401,49 +271,7 @@ * @see CActive::DoCancel. */ void DoCancel(); - - /** - * Wrapper of DoHandleTtsDelayTimeout, that can be used as TCallback. - * Immediately passes control to DoHandleTtsDelayTimeout method. - * @since Series 60 3.0 - * @param object Object to call DoHandleTtsDelayTimeout() on, . - * instance of CPhoneRingingTonePlayer. - * @return KErrNone. - */ - static TInt HandleTtsDelayTimeout( TAny* object ); - - /** - * It is called after TTS delay elapsed. Starts playing TTS. - */ - void DoHandleTtsDelayTimeout(); - - /** - * Checks if TTS component should be played for the current ringtone - * playback and initializes the TTS playback. This method is to be - * called from within PlayXXXXTone methods - * @since Series 60 3.0 - * @param aRingingType ringing type - */ - void AddTtsPlaybackIfNeeded( TProfileRingingType aRingingType ); - - /** - * Returns currently active player which is used wit TTS player. - * @return pointer to CPhoneAudioPlayer. - */ - CPhoneAudioPlayer* GetCurrentlyActiveAudioPlayerWithTTs(); - - /** - * TTs cases only. Calculates new volume and ramptimes - * for Ascending TTS ringing case and normal TTS ringing case. - * @param aStatus -status of TTs player. - */ - void SolveNewVolumeAndRamptime( TTtsStatus aStatus ); - - /** - * Retarts currently active ringingtone player. - */ - void ReStartRingingTonePlayer(); - + /** * Checks if ringing tone file's size is larger than the size limit. * If size limit is exceeded, default tone is played instead. @@ -459,13 +287,13 @@ * Checks if ringing tone file's size is larger than the size limit. * @since 3.1 * @param aFile File to check. - * aSizeLimitKB the size limit in kB is set to this variable. + * @param aSizeLimitKB the size limit in kB is set to this variable. * @return KErrNone if the file can be used as a ringing tone. * KErrTooBig if the file size limit is exceeded. * Other error value if error happened during size checking. */ TInt CheckToneFileSize( const TDesC& aFile, TInt aSizeLimitKB ); - + /** * Reads from central repository the file size limit of following tones: * -contact's personal ringing tone @@ -477,69 +305,17 @@ * @return leaves on error. */ void GetMaxToneFileSizeL( TInt& aSizeLimitKB ) const; - - /** - * Returns currently active audio player. - * @return Currently active audio player or NULL if none active. - */ - CPhoneAudioPlayer* ActiveAudioPlayer(); - - /** - * Mutes the ringing tone. - */ - void DoMuteRingingTone(); - private: // Data - - // Audio ring tone player. Memory allocated during construction. - // After constructed, no leave may be caused during audio playing - CPhoneAudioPlayer* iAudioPlayer; - - // Audio player for beep once. - CPhoneAudioPlayer* iBeepOncePlayer; - - // Audio player for silent tone. - CPhoneAudioPlayer* iSilentPlayer; - - // Audio player for unsecure VoIP tone. - CPhoneAudioPlayer* iUnsecureVoIPTonePlayer; - - // Default player. - CPhoneAudioPlayer* iDefaultPlayer; - - // Tts player. - CPhoneAudioPlayer* iTtsPlayer; - - // Backup ringing tone. Incase all default player failed. - CPhoneAudioPlayer* iBackupPlayer; - - // Default player - CPhoneRingingTone* iDefaultRingingTone; - - // Media server. - CMdaServer* iMdaServer; // Indicate which tone is playing or need to be played: // EIdle - idle, - // EAudioTonePlaying - audio playing, - // EBeepOnce - beep once playing, - // ESilentTonePlaying - silent tone playing, - // EUnsecureVoIPTonePlaying - unsecure tone playing (VoIP), - // EDefaultTonePlaying - default tone playing, - // EBackupTonePlaying - backup tone playing, // EVideoTonePlaying - playing video ringing tone // ESilentVideoTonePlaying - silent playing video ringing tone // EPersonalVideoTonePlaying - personal playing video ringing tone enum TTonePlayingStatus { EIdle, - EAudioTonePlaying, - EBeepOnce, - ESilentTonePlaying, - EUnsecureVoIPTonePlaying, - EDefaultTonePlaying, - EBackupTonePlaying, EVideoTonePlaying, ESilentVideoTonePlaying, EPersonalVideoTonePlaying @@ -547,28 +323,12 @@ // Current playing status. TTonePlayingStatus iTonePlayingStatus; - - // True if Tts is currently playing. Is different from - // iTonePlayingStatus, because TTS is played in - // parallel with the other tone types - TBool iTtsTonePlaying; - - // Index of the TTS delay that is "executed" currently or is to be - // "executed" after the current playing of the TTS tone. Is zero based - TInt iTtsDelayIndex; - - // True if TTS tone should be played when the next playing of the - // default or personal tone is fired. - TBool iTtsToneToBePlayed; // Audio/Video tone, not owned CPhoneRingingTone* iAudioVideoRingingTone; // Volume for backup tone playing. TInt iVolume; - - // Volume of the text pronounced by the TTS engine - TInt iTtsVolume; // Ringing type for backup tone playing. TProfileRingingType iRingingType; @@ -576,40 +336,26 @@ // Timer. CPhoneTimer* iTimer; - // Timer, that tracks delays before playing TTS - CPhoneTimer* iTtsDelayTimer; - - // Number of times TTS tone should be played for the CURRENT ringtone - // If ringing tone is to be played just once, iTtsDelayCount == 1, - // otherwise iTtsDelayCount == KTtsDelayCount - TInt iTtsDelaysCount; - - // Player to be deleted asynchronously. - RPointerArray iAsyncDeletePlayers; - // DRM extend security TBool iExtSecNeeded; - + // Video ringing tone player MPhoneVideoPlayer* iVideoPlayer; - + // State of this active object TState iState; - - // RingingType for TtsPlayer only. - TProfileRingingType iTtsRingingType; - - // Counter for TTs timeouts - TInt iTTsTimeOutCounter; - + // Voice call ringing tone file size max value. - TInt iToneFileSizeLimitKB; + TInt iToneFileSizeLimitKB; // Flag. Indicates video scaling capability of the device. TBool iArbitraryVideoScaling; + // Ringing tone server. + RPhoneRingingTonePlayer iToneServer; + }; #endif // CPHONERINGINGTONEPLAYERAO_H - + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphonetoolbarcontroller.h --- a/phoneapp/phoneuiview/inc/cphonetoolbarcontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphonetoolbarcontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -72,6 +72,10 @@ void SetIhfFlag( TPhoneCommandParam* aCommandParam ); + void SetWiredAccFlag( TPhoneCommandParam* aCommandParam ); + + void SetCallInProgressFlag( TPhoneCommandParam* aCommandParam ); + /** * Dims (greys out) or undims all toolbar items. * @@ -110,7 +114,15 @@ * @param aToolbar The toolbar object pointer */ void DynInitToolbarL( TInt aResourceId, CAknToolbar* aToolbar ); - + +protected: + /** + * Constructor. + * + * @param aCoeEnv + */ + CPhoneToolbarController( CCoeEnv& aCoeEnv ); + private: /** @@ -131,12 +143,6 @@ /** - * Constructor. - * - * @param aCoeEnv - */ - CPhoneToolbarController( CCoeEnv& aCoeEnv ); - /** * Symbian 2nd phase constructor. * */ @@ -169,6 +175,10 @@ TBool iMuteFlag; TBool iIhfFlag; + + TBool iWiredAccFlag; + + TBool iCallInProgress; }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphoneuidisablednote.h --- a/phoneapp/phoneuiview/inc/cphoneuidisablednote.h Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* Copyright (c) 2005 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: PhoneUI Note -* -*/ - -/* -*/ - -#ifndef CPHONEUIDISABLEDNOTE_H -#define CPHONEUIDISABLEDNOTE_H - - -// INCLUDES -#include "tphonecmdparamnote.h" -#include "cphonenote.h" - -// FORWARD DECLARATIONS -class CAknNoteDialog; - -class CPhoneUIDisabledNote : public CPhoneNote - { - public: // Constructors and destructor - - /** - * Constructor. - * - * @param aSelfPtr Pointer to self. - * This pointer is set to NULL when the note is destroyed by the framework. - * @param aCommandObserver Observer to receive command events from the note. - */ - CPhoneUIDisabledNote( CEikDialog** aSelfPtr, MEikCommandObserver& aCommandObserver ); - - /** - * Destructor. - */ - virtual ~CPhoneUIDisabledNote(); - - /** - * Sets the type of the note. - */ - void SetNoteType( TPhoneNoteType aNoteType ); - - /** - * Gets the type of the note. - */ - TPhoneNoteType NoteType(); - - /** - * Updates softkeys to note - * @param aResourceId Resource id - */ - void UpdateSoftkeysL( TInt aResourceId ); - - protected: - - TKeyResponse OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ); - - TBool OkToExitL( TInt aCommand ); - - void HandlePointerEventL( - const TPointerEvent& aPointerEvent ); - - void SetSizeAndPosition( const TSize& aSize ); - - protected: // Data - - //The type of note. Not necessarily set. - //Used in security view - TPhoneNoteType iNoteType; - }; - -#endif // CPHONEUIDISABLEDNOTE_H - -// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphoneview.h --- a/phoneapp/phoneuiview/inc/cphoneview.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphoneview.h Fri Apr 23 14:59:43 2010 +0100 @@ -92,13 +92,6 @@ void SetSecurityMode ( TBool aStatus ); /** - * Get state of the security mode flag - * @return aStatus ETrue for the security mode. EFalse for the - * normal mode. - */ - TBool IsSecurityMode(); - - /** * Gets the previous app flag value. */ TBool GetActivatePreviousApp(); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/cphoneviewcontroller.h --- a/phoneapp/phoneuiview/inc/cphoneviewcontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/cphoneviewcontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -33,6 +33,8 @@ #include "tphonecmdparamtranseffect.h" #include "mphoneviewblockingdialogobserver.h" +#include "mnumberentry.h" +#include "mphonesecuritymodechangeobserver.h" // FORWARD DECLARATIONS class CPhoneButtonsController; @@ -41,7 +43,6 @@ class CPhoneDialerView; class TPhoneViewId; class TPhoneCommandParam; -class TPhoneCmdParamBoolean; class CEikButtonGroupContainer; class CPhoneMenuController; class CPhoneNoteController; @@ -76,12 +77,16 @@ class CDialer; class MPhoneNumberEntryChangedHandler; class MPhoneViewCustomization; +class CPhoneEasyDialingController; +class CPhoneDtmfDialerController; class CPhoneViewController : public CBase, public MPhoneViewCommandHandle, public MPhoneStatusPaneObserver, - public MPhoneViewBlockingDialogObserver + public MPhoneViewBlockingDialogObserver, + public MNumberEntryObserver, + public MPhoneSecurityModeChangeObserver { public: // Constructors and destructor @@ -245,8 +250,25 @@ */ IMPORT_C void SetBlockingDialogIsDisplayed( TBool aBlockingDialog ); + /** + * From base class MNumberEntryObserver + * Indication that numberentry state changed + */ + void NumberEntryStateChanged( TBool aEntryHasText ); + +// From MPhoneSecurityModeChangeObserver + + IMPORT_C void HandleSecurityModeChanged( TBool aIsEnabled ); + private: // New functions + /** + * Set security mode + * + * @param aMode ETrue if mode should be set enabled. + */ + void SetSecurityMode( TBool aMode ); + /** * read IdleApplicationUid from PubSub */ @@ -257,7 +279,7 @@ * background after being brought to the foreground using * BringToForeground() */ - TBool NeedToSendToBackground(); + TBool GetNeedToReturnToForegroundAppAfterCall() const; /** * Gets the blocking dialogs status @@ -267,7 +289,7 @@ /** * Sets the required background status of the application */ - void SetNeedToSendToBackground( TPhoneCommandParam* aCommandParam ); + void SetNeedToReturnToForegroundAppAfterCall( TPhoneCommandParam* aCommandParam ); /** * Sends application to background. @@ -329,6 +351,11 @@ void ActivateAppViewConventionalL( TPhoneCommandParam* aCommandParam ); /** + * Launches multimedia sharing (live video sharing) + */ + static void LaunchMultimediaSharingL(); + + /** * Launches application. */ void LaunchApplicationL(); @@ -494,16 +521,6 @@ /** * Set security mode to view and statuspane */ - void SetSecurityMode( TPhoneCommandParam* aCommandParam ); - - /** - * Get security mode status - */ - void GetSecurityModeStatus ( TPhoneCommandParam* aCommandParam ); - - /** - * Set security mode to view and statuspane - */ void SetStatusPaneVisible( TPhoneCommandParam* aCommandParam ); /** @@ -592,12 +609,6 @@ */ TInt FindAppByWgIDL( TInt aAppWgID ); - /** - * Returns pointer to the control that is responsible of handling - * Phone Number Entry Changed events. - */ - MPhoneNumberEntryChangedHandler* NumberEntryChangedHandler() const; - /** * Returns single item fetch type * @return single item fetch type @@ -605,14 +616,14 @@ TInt SingleItemFetchType() const; /** - * Checks screen lock status. - */ - TBool IsKeyLockEnabled(); + * Checks if DTMF dialer mode is currently active + */ + TBool IsDtmfDialerActive() const; /** - * Unlock keys & screen. - */ - void DisableKeyLock(); + * Checks if custom dialer mode is currently active + */ + TBool IsCustomDialerActive() const; private: // Data @@ -634,9 +645,15 @@ // Controls the touch buttons CPhoneDialerController* iDialerController; + // Controls touch dialer in DTMF mode + CPhoneDtmfDialerController* iDtmfDialerController; + // Controls the toolbar CPhoneToolbarController* iToolbarController; + // Handles easydialing commands. Owned. + CPhoneEasyDialingController* iEasyDialingController; + // For accessing incall indicator CPhoneIncallIndicator* iIncallIndicator; @@ -745,6 +762,15 @@ TInt iPrevious; TBool iPriotityChanged; + + /** + * Internal flag to define if security mode is enabled. + */ + TBool iSecurityMode; + + // Boolean flag. ETrue if the application needs to return + // to the foreground after call ended + TBool iNeedToReturnToForegroundAppAfterCall; }; #endif // CPHONEVIEWCONTROLLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/mphonedialercontroller.h --- a/phoneapp/phoneuiview/inc/mphonedialercontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/mphonedialercontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 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" @@ -18,27 +18,58 @@ #ifndef MPHONEDIALERCONTROLLER_H_ #define MPHONEDIALERCONTROLLER_H_ -// Forward declarations -class CAknToolbar; +#include +#include + /** - * Abstract custom dialer interface. - * + * Abstract dialer controller interface. + * Dialer controller provides data to be shown on dialer UI + * (e.g. prompt text and toolbar button contents), but is + * agnostic to implementation details and layout of the + * dialer UI components. * * @lib PhoneUiView.lib * @since S60 v5.0 */ class MPhoneDialerController { - -public: - +public: // data types + + /** + * Indices to refer to visual button slots in the dialer toolbar. + * The index order in not necessarily the same as the visual + * order of the buttons. The index names correspond to the button + * functions in the normal dialer mode. + * @since S60 v5.2 + */ + enum TButtonIndex + { + EClearButton = 0, //< Button normally used for backspce + ECallButton, //< Button normally used for "call" and "log" + EPhonebookButton, //< Button normally used for "Phonebook" and "Add to Phonebook" + + ENumberOfButtons //< Total number of buttons in the toolbar. + }; + /** - * Initializes the controller. - * @param aToolbar CAknToolbar instance. - * @since S60 v5.1 - */ - virtual void InitializeL( CAknToolbar& aToolbar ) = 0; + * Struct-like class encapsulating data of one toolbar button function. + * @since S60 v5.2 + */ + class CButtonData : public CBase + { + public: // data + TInt iCommandId; + CGulIcon* iIcon; // OWN + HBufC* iTooltip; // OWN + public: // constructors & destructor + inline CButtonData() {} + inline CButtonData( TInt aCommandId, CGulIcon* aIcon, HBufC* aTooltip ) : + iCommandId( aCommandId ), iIcon( aIcon ), iTooltip( aTooltip ) {} + inline ~CButtonData() { delete iIcon; delete iTooltip; } + }; + +public: /** * Returns Cba resource id @@ -60,20 +91,53 @@ * @since S60 v5.1 */ virtual const TDesC& NumberEntryPromptTextL() = 0; + + /** + * Get contents for given toolbar button. One button may have zero or more + * different functions. Which one is set active, depends on the return value + * of the member function ButtonState(). + * @param aIndex Index of the button for which data is queried. + * @param aData On return, contains all the possible states for the button. + * @return KErrNone if action was succesful. + * System wide error code if something went wrong. + * @since S60 v5.2 + */ + virtual TInt GetButtonData( TButtonIndex aIndex, RPointerArray& aData ) const = 0; + + /** + * Function used to tell controller if number entry is empty or not. + * In many cases this has an influence on the status of some or all toolbar buttons. + * @param aEmpty ETrue if number entry is empty, EFalse othwerwise. + * @since S60 v5.2 + */ + virtual void SetNumberEntryIsEmpty( TBool aEmpty ) = 0; /** - * Handles the number entry empty event - * @param aEmpty ETrue if numberentry is empty - * @since S60 v5.1 - */ - virtual void HandleNumberEntryIsEmpty( TBool aEmpty ) = 0; - + * Gets current state of the given button. + * @param aIndex Index of the button for which state is queried. + * @return Index of the button state which should be active. + * KErrNotFound if the given button has no states. + * @since S60 v5.2 + */ + virtual TInt ButtonState( TButtonIndex aIndex ) const = 0; + /** - * Sets visibility of buttons created by the implementation - * @param aShow ETrue if numberentry is empty - * @since S60 v5.1 - */ - virtual void ShowButtons( TBool aShow ) = 0; + * Gets dimming status of the given button + * @param aIndex Index of the button for which dimming status is queried. + * @return ETrue if the given button should be dimmed. + * EFalse otherwise. + * @since S60 v5.2 + */ + virtual TBool ButtonDimmed( TButtonIndex aIndex ) const = 0; + + /** + * Gets value indicating whether using Easy Dialing should be allowed in + * the current Dialer mode. + * @return ETrue if Easy Dialing can be enabled. + * EFalse if Easy Dialing must not be enabled. + * @since S60 v5.2 + */ + virtual TBool EasyDialingAllowed() const = 0; }; #endif /*MDIALERCONTROLLER_H_*/ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/mphoneringingtonesrv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/mphoneringingtonesrv.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,122 @@ +/* +* Copyright (c) 2002-2005 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: Interface class for phone ringing tone server. +* +*/ + + +#ifndef __MPHONERINGINGTONESRV_H +#define __MPHONERINGINGTONESRV_H + +// CLASS DECLARATION +class MPhoneRingingToneServer + { +public: + /** + * Increments sessions. + */ + virtual void IncrementSessions() = 0; + + /** + * Decrements sessions. + */ + virtual void DecrementSessions() = 0; + + // Ringing tone settings + + /** + * Sets extended security required flag. + * @param aNeeded Extended security required. + */ + virtual void SetExtendedSecurityNeeded( TBool aNeeded ) = 0; + + /** + * Sets extended security required flag. + * @param aLimit Extended security required. + */ + virtual void SetToneFileSizeLimit( TInt aLimit ) = 0; + + /** + * Sets ringing tone. + */ + virtual void SetRingingToneL( const RMessage2& aMessage ) = 0; + + /** + * Sets default ringing tone. + * @param aMessage Message from Client. + */ + virtual void SetDefaultRingingToneL( const RMessage2& aMessage ) = 0; + + // Playback control + + /** + * Play audio ring tone. + * @return True if the client message should not be completed. + * @param aMessage Message from Client. + */ + virtual TBool PlayAudioRingTone( const RMessage2& aMessage ) = 0; + + /** + * Play TTS tone simultaneously with Personal or Default tones. + * This method does not command phone to play TTS immediately. Instead + * it registers a request to play TTS, when Personal or default tones + * are played. + * @param aMessage Message from Client. + */ + virtual void PlayTtsTone( const RMessage2& aMessage ) = 0; + + /** + * Play default tone. + * @param aMessage Message from Client. + */ + virtual void PlayDefaultTone( const RMessage2& aMessage ) = 0; + + /** + * Play backup tone. + * @param aMessage Message from Client. + */ + virtual void PlayBackupTone( const RMessage2& aMessage ) = 0; + + /** + * Play silent tone. No_sound.wav will be played. If vibration alert + * is ON, it will vibrate. + */ + virtual void PlaySilentTone() = 0; + + /** + * Playing the Beep once. + * @param aMessage Message from Client. + */ + virtual void BeepOnce( const RMessage2& aMessage ) = 0; + + /** + * Play unsecure VoIP tone. + * Play tone if secure call fails and call is changed to unsecure call. + */ + virtual void PlayUnsecureVoIPTone() = 0; + + /** + * Mutes ringing tone. + */ + virtual void MuteRingingTone() = 0; + + /** + * Stops playing the ringing tone. + * Method does not do anything if ringing tone is not playing. + */ + virtual void StopPlaying() = 0; + + }; + +#endif // __MPHONERINGINGTONESRV_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneringingtoneclient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/phoneringingtoneclient.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,146 @@ +/* +* Copyright (c) 2002-2005 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: Client interface for phone ringing tone server. +* +*/ + + +#ifndef RPHONERINGINGTONEPLAYER_H +#define RPHONERINGINGTONEPLAYER_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class TPhoneCommandParam; + +// CLASS DECLARATION + +class RPhoneRingingTonePlayer : public RSessionBase + { +public: + /** + * C++ default constructor. + */ + RPhoneRingingTonePlayer(); + + /** + * Destructor. + */ + ~RPhoneRingingTonePlayer(); + + // Tone settings + + /** + * Sets extended security required flag. + * @param aNeeded Extended security required. + */ + void SetExtendedSecurityNeeded( TBool aNeeded ); + + /** + * Sets extended security required flag. + * @param aLimit Extended security required. + */ + void SetToneFileSizeLimit( TInt aLimit ); + + /** + * Sets ringing tone. + * @param aFilename Ringing tone. + */ + void SetRingingToneL( const TDesC& aFilename ); + + /** + * Sets default ringing tone. + * @param aFilename Ringing tone. + */ + void SetDefaultRingingToneL( const TDesC& aFilename ); + + // Playback control + + /** + * Play audio ring tone + * @param aVolume Volume used to play the ringing tone. + * @param aRingingType Ringing type. + */ + void PlayAudioRingTone( TInt aVolume, TProfileRingingType aRingingType ); + + /** + * Play TTS tone simultaneously with Personal or Default tones. + * This method does not command phone to play TTS immediately. Instead + * it registers a request to play TTS, when Personal or default tones + * are played. + * @param aTextToSay Text, that should be pronounced by the Text-To-Speech + * engine. This is normal descriptor, no UTF-8 and no "(tts)" prefix + * @param aVolume Volume for the TTS-tone, Does not effect the volume + * of the normal tone, that will be played simulteneously with the TTS + * @param aRingingType ringing type. + */ + void PlayTtsTone( const TDesC& aTextToSay, TInt aVolume, TProfileRingingType aRingingType ); + + /** + * Play default tone. + * @param aVolume volume used for the playing. + * @param aRingingType ringing type. + */ + void PlayDefaultTone( TInt aVolume, TProfileRingingType aRingingType ); + + /** + * Play backup tone. + * @param aVolume volume used for the playing. + * @param aRingingType ringing type. + */ + void PlayBackupTone( TInt aVolume, TProfileRingingType aRingingType ); + + /** + * Play silent tone. No_sound.wav will be played. If vibration alert + * is ON, it will vibrate. + */ + void PlaySilentTone(); + + /** + * Playing the Beep once. + * @param aVolume volume used to play the ringing tone. + */ + void BeepOnce( TInt aVolume ); + + /** + * Play unsecure VoIP tone. + * Play tone if secure call fails and call is changed to unsecure call + */ + void PlayUnsecureVoIPTone(); + + /** + * Continues video playback with muted audio. + * Ringing tone is stopped. + */ + void MuteRingingTone(); + + /** + * Stops playing the ringing tone. + * Method does not do anything if ringing tone is not playing. + */ + void StopPlaying(); + + +public: + /** + * Establishes a connection with Server. + * @return Result code indicating the success of operation. + */ + TInt Connect(); + }; + +#endif // CPHONERINGINGTONEPLAYERAO_H + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneringingtonesrv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/phoneringingtonesrv.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,190 @@ +/* +* Copyright (c) 2002-2005 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: Phone ringing tone server definitions. +* +*/ + + +#ifndef __PHONERINGINGTONESRV_H +#define __PHONERINGINGTONESRV_H + +// INCLUDES +#include +#include +#include "mphoneringingtonesrv.h" + +// CONSTANTS +_LIT( KRingingToneServerName, "PhoneRingingToneSrv" ); +const TInt KRingingToneSrvVersionMajor = 1; +const TInt KRingingToneSrvVersionMinor = 0; +const TInt KRingingToneSrvVersionBuild = 0; + +// FORWARD DECLARATIONS +class CPhoneRingingToneSrvPlayerAO; + +// CLASS DECLARATION +class CPhoneRingingToneServer : public CServer2, + public MPhoneRingingToneServer + { +public: + + /** + * Two-phased constructor. + * @return new instance. + */ + static CPhoneRingingToneServer* NewLC(); + + /** + * Destructor. + */ + ~CPhoneRingingToneServer(); + + /** + * Increments sessions. + */ + void IncrementSessions(); + + /** + * Decrements sessions. + */ + void DecrementSessions(); + + /** + * Thread entry function. + */ + static TInt ThreadEntryFunc( TAny* aPtr ); + + /** + * From CServer, create a new session. + * @param aVersion It is the version of the client api. + * @param aMessage Connect message from Client. + * @return Returns a new session. + */ + CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const; + +private: + /** + * C++ default constructor. + */ + CPhoneRingingToneServer(); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + +public: + // Ringing tone settings + + /** + * Sets extended security required flag. + * @param aNeeded Extended security required. + */ + void SetExtendedSecurityNeeded( TBool aNeeded ); + + /** + * Sets extended security required flag. + * @param aLimit Extended security required. + */ + void SetToneFileSizeLimit( TInt aLimit ); + + /** + * Sets ringing tone. + */ + void SetRingingToneL( const RMessage2& aMessage ); + + /** + * Sets default ringing tone. + * @param aMessage Message from Client. + */ + void SetDefaultRingingToneL( const RMessage2& aMessage ); + + // Playback control + + /** + * Play audio ring tone. + * @return True if the client message should not be completed. + * @param aMessage Message from Client. + */ + TBool PlayAudioRingTone( const RMessage2& aMessage ); + + /** + * Play TTS tone simultaneously with Personal or Default tones. + * This method does not command phone to play TTS immediately. Instead + * it registers a request to play TTS, when Personal or default tones + * are played. + * @param aMessage Message from Client. + */ + void PlayTtsTone( const RMessage2& aMessage ); + + /** + * Play default tone. + * @param aMessage Message from Client. + */ + void PlayDefaultTone( const RMessage2& aMessage ); + + /** + * Play backup tone. + * @param aMessage Message from Client. + */ + void PlayBackupTone( const RMessage2& aMessage ); + + /** + * Play silent tone. No_sound.wav will be played. If vibration alert + * is ON, it will vibrate. + */ + void PlaySilentTone(); + + /** + * Playing the Beep once. + * @param aMessage Message from Client. + */ + void BeepOnce( const RMessage2& aMessage ); + + /** + * Play unsecure VoIP tone. + * Play tone if secure call fails and call is changed to unsecure call. + */ + void PlayUnsecureVoIPTone(); + + /** + * Mutes ringing tone. + */ + void MuteRingingTone(); + + /** + * Stops playing the ringing tone. + * Method does not do anything if ringing tone is not playing. + */ + void StopPlaying(); + +private: + + /** + * Runs server. + */ + static void RunServerL(); + +private: + // File server connection + RFs iFs; + + // Number of active sessions + TInt iSessionCount; + + // Player active object + CPhoneRingingToneSrvPlayerAO* iPlayer; + }; + +#endif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneringingtonesrv.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/phoneringingtonesrv.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,42 @@ +/* +* Copyright (c) 2002-2005 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: Phone ringing tone server enumerations. +* +*/ + + +#ifndef __PHONERINGINGTONESRV_HRH +#define __PHONERINGINGTONESRV_HRH + +// ENUMERATIONS +enum TRingingToneSrvOpcodes + { + ESetExtendedSecurityNeeded, + ESetToneFileSizeLimit, + ESetAudioRingingTone, + ESetDefaultRingingTone, + + EPlayAudioRingTone, + EPlayTtsTone, + EPlayDefaultTone, + EPlayBackupTone, + EPlaySilentTone, + EBeepOnce, + EPlayUnsecureVoIPTone, + + EMuteRingingTone, + EStopPlaying + }; + +#endif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneringingtonesrvplayerao.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/phoneringingtonesrvplayerao.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,514 @@ +/* +* Copyright (c) 2002-2005 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: Active object which implements ringing tone functionality +* +*/ + + +#ifndef __PHONERINGINGTONESRVPLAYERAO_H +#define __PHONERINGINGTONESRVPLAYERAO_H + +// INCLUDES +#include +#include + +#include "mphoneaudioplayerobserver.h" +#include "mphonetimer.h" +#include "cphoneaudioplayer.h" + +// FORWARD DECLARATIONS +class RFs; +class CPhoneTimer; +class CMdaServer; +class CPhoneRingingTone; + +// CLASS DECLARATION +class CPhoneRingingToneSrvPlayerAO : + public CActive, + private MPhoneAudioPlayerObserver, + private MPhoneTimer + { + public: + // States for this active object + enum TState + { + EIdleState, + EDeletingAudioPlayer + }; + + public: + + /** + * Two-phased constructor. + * @return new instance. + */ + static CPhoneRingingToneSrvPlayerAO* NewL( RFs &aFs ); + + /** + * Destructor. + */ + ~CPhoneRingingToneSrvPlayerAO(); + + /** + * Play audio ring tone. + * @param aVolume Volume used to play the ringing tone. + * @param aRingingType Ringing type. + * @param aMessage Message from Client. + * @return ETrue if the client message should not be completed. + */ + TBool PlayAudioRingTone( + TInt aVolume, + TProfileRingingType aRingingType, + const RMessage2& aMessage ); + + /** + * Play default tone. + * @param aVolume volume used for the playing. + * @param aRingingType ringing type. + */ + void PlayDefaultTone( + TInt aVolume, + TProfileRingingType aRingingType ); + + /** + * Play backup tone. + * @param aVolume volume used for the playing. + * @param aRingingType ringing type. + */ + void PlayBackupTone( + TInt aVolume, + TProfileRingingType aRingingType ); + + /** + * Playing the Beep once. + * @param aVolume volume used to play the ringing tone. + */ + void BeepOnce( TInt aVolume ); + + /** + * Play silent tone. No_sound.wav will be played. If vibration alert + * is ON, it will vibrate. + */ + void PlaySilentTone(); + + /** + * Play unsecure VoIP tone. + * Play tone if secure call fails and call is changed to unsecure call. + */ + void PlayUnsecureVoIPTone(); + + /** + * Stops playing the ringing tone. + * Method does not do anything if ringing tone is not playing. + */ + void StopPlaying(); + + /** + * Mutes ringing tone. + */ + void MuteRingingTone(); + + /** + * Play TTS tone simultaneously with Personal or Default tones. + * This method does not command phone to play TTS immediately. Instead + * it registers a request to play TTS, when Personal or default tones + * are played. + * + * @since Series 60 3.0 + * @param aTextToSay Text, that should be pronounced by the + * Text-To-Speech engine. This is normal descriptor, no UTF-8 + * and no "(tts)" prefix + * @param aVolume Volume for the TTS-tone, Does not effect the volume + * of the normal tone, that will be played simulteneously with the TTS + * @param aRingingType ringing type. + */ + void PlayTtsTone( + const TDesC& aTextToSay, + TInt aVolume, + TProfileRingingType aRingingType ); + + /** + * Checks if extended security required. + * @since Series 60 3.1 + * @return ETrue if extended security is required. + */ + TBool ExtendedSecurity() const; + + public: + /** + * Sets extended security required flag. + * @param aNeeded Extended security required. + */ + void SetExtendedSecurityNeeded( TBool aNeeded ); + + /** + * Sets extended security required flag. + * @param aLimit Extended security required. + */ + void SetToneFileSizeLimit( TInt aLimit ); + + /** + * Sets default ringing tone. + * @param aFilename Ringing tone. + */ + void SetDefaultRingingToneL( const TDesC& aFilename ); + + /** + * Sets ringing tone. + * @param aFilename Ringing tone. + */ + void SetRingingToneL( const TDesC& aFilename ); + + private: + + /** + * Handle the error of audio file player. + * @param aEvent The error event happend in initializing or playing. + * @param aError The error code return by audio server. Observer can + * handle these two error code for recoverable + * and unrecoverable errors. + * @param aId Indicate which audio player is out of working. + */ + virtual void HandleAudioPlayerError( + TPhoneAudioPlayerErrorEvent aEvent, + TInt aError, + TInt aId = KPhoneAudioPlayerNotSpecified ); + + /** + * Handle audio player initialize complete. + * @param aId Indicate which audio player is out of working. + */ + virtual void HandleAudioPlayerInitComplete( + TInt aId = KPhoneAudioPlayerNotSpecified ); + + /** + * Handle audio file playing complete successfully. + * @param aId Indicate which audio player is out of working. + */ + virtual void HandlePlayingComplete( + TInt aId = KPhoneAudioPlayerNotSpecified ); + + /** + * @see MPhoneTimer + */ + virtual void HandleTimeOutL(); + + /** + * Enumerates identifiers for each player: + * EPlayerAudio - audio + * EPlayerBeepOnce - beep once + * EPlayerSilent - silent + * EPlayerUnsecureVoIP - unsecure VoIP + * EPlayerDefault - default + * EPlayerBackup - backup + * + * EPlayerFirst and EPlayerLast are alias + * to other identifiers. + * EPlayerFirst - first player + * EPlayerLast - last player + */ + enum TPlayerId + { + EPlayerFirst, + EPlayerAudio = EPlayerFirst, + EPlayerBeepOnce, + EPlayerSilent, + EPlayerUnsecureVoIP, + EPlayerDefault, + EPlayerBackup, + EPlayerTts, + EPlayerLast = EPlayerTts, + EPlayerCount + }; + + /** + * Enumerates how many times TTs is played + * ESaidOnce -once + * ESaidTwice twice + */ + enum TTtsStatus + { + ESaidOnce, + ESaidTwice + }; + + /** + * C++ default constructor. + */ + CPhoneRingingToneSrvPlayerAO( RFs& aFs ); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + /** + * Do construct tone. + * @param aRingingTone Ringing tone. + * @param aId Indicates the audio player. + * @return The instance of the player. NULL is returned if it's failed. + */ + CPhoneAudioPlayer* ConstructTonePlayer( + const CPhoneRingingTone& aRingingTone, + TInt aId ); + + /** + * Handle audio player error. + * @param aDelete ETrue if deletion of the player allowed, + * EFalse otherwise. + * @param aSync ETrue if synchronous deletion of players is allowed, + * EFalse otherwise. + */ + void DoHandlePlayerError( + TBool aDelete, + TBool aSync ); + + /** + * Convert ringing type from PhoneAppEnging to the ringing type in + * CPhoneAudioPlayer. + * @param aRingingType the ringing type form PhoneAppEngine. + * @return ringing type of CPhoneAudioPlayer. + */ + CPhoneAudioPlayer::TRingingType ConvertRingingType( + TProfileRingingType aRingingType ); + + /** + * Construct media server and backup tone player. + */ + TInt ConstructPlayers(); + + /** + * Construct media server and backup tone player. + */ + void ConstructPlayersL(); + + /** + * Construct sequence players. + * @param aPlayer player to be constructed. + */ + void ConstructSequencePlayer( + TPlayerId aPlayer ); + + /** + * Construct sequence players. + * @param aPlayer player to be constructed. + */ + void ConstructSequencePlayerL( + TPlayerId aPlayer ); + + /** + * Cleanup players. + */ + void CleanupPlayers(); + + /** + * Deletes player asynchronoysly. + * @param aPlayer player to be deleted. + */ + void DeletePlayerAsync( + TPlayerId aPlayer ); + + /** + * @see CActive::RunL. + */ + void RunL(); + + /** + * @see CActive::DoCancel. + */ + void DoCancel(); + + /** + * Wrapper of DoHandleTtsDelayTimeout, that can be used as TCallback. + * Immediately passes control to DoHandleTtsDelayTimeout method. + * @since Series 60 3.0 + * @param aObject Object to call DoHandleTtsDelayTimeout() on, + * instance of CPhoneRingingTonePlayer. + * @return KErrNone. + */ + static TInt HandleTtsDelayTimeout( TAny* aObject ); + + /** + * It is called after TTS delay elapsed. Starts playing TTS. + */ + void DoHandleTtsDelayTimeout(); + + /** + * Checks if TTS component should be played for the current ringtone + * playback and initializes the TTS playback. This method is to be + * called from within PlayXXXXTone methods + * @since Series 60 3.0 + * @param aRingingType ringing type + */ + void AddTtsPlaybackIfNeeded( TProfileRingingType aRingingType ); + + /** + * Returns currently active player which is used wit TTS player. + * @return pointer to CPhoneAudioPlayer. + */ + CPhoneAudioPlayer* GetCurrentlyActiveAudioPlayerWithTTs(); + + /** + * TTs cases only. Calculates new volume and ramptimes + * for Ascending TTS ringing case and normal TTS ringing case. + * @param aStatus -status of TTs player. + */ + void SolveNewVolumeAndRamptime( TTtsStatus aStatus ); + + /** + * Retarts currently active ringingtone player. + */ + void ReStartRingingTonePlayer(); + + /** + * Checks if ringing tone file's size is larger than the size limit. + * If size limit is exceeded, default tone is played instead. + * @since 3.1 + * @param aRingingTone Tone to check. + * @return EFalse if the limit was exceeded and thus default tone played. + * ETrue if tone file's size was valid and the checked tone + * can be played. + */ + TBool CheckAndHandleToneSizeLimit( CPhoneRingingTone* aRingingTone ); + + /** + * Checks if ringing tone file's size is larger than the size limit. + * @since 3.1 + * @param aFile File to check. + * aSizeLimitKB the size limit in kB is set to this variable. + * @return KErrNone if the file can be used as a ringing tone. + * KErrTooBig if the file size limit is exceeded. + * Other error value if error happened during size checking. + */ + TInt CheckToneFileSize( const TDesC& aFile, TInt aSizeLimitKB ); + + /** + * Returns currently active audio player. + * @return Currently active audio player or NULL if none active. + */ + CPhoneAudioPlayer* ActiveAudioPlayer(); + + private: // Data + // Handle to file server + RFs &iFs; + + // Audio ring tone player. Memory allocated during construction. + // After constructed, no leave may be caused during audio playing + CPhoneAudioPlayer* iAudioPlayer; + + // Audio player for beep once. + CPhoneAudioPlayer* iBeepOncePlayer; + + // Audio player for silent tone. + CPhoneAudioPlayer* iSilentPlayer; + + // Audio player for unsecure VoIP tone. + CPhoneAudioPlayer* iUnsecureVoIPTonePlayer; + + // Default player. + CPhoneAudioPlayer* iDefaultPlayer; + + // Tts player. + CPhoneAudioPlayer* iTtsPlayer; + + // Backup ringing tone. Incase all default player failed. + CPhoneAudioPlayer* iBackupPlayer; + + // Default ringing tone + CPhoneRingingTone* iDefaultRingingTone; + + // Media server. + CMdaServer* iMdaServer; + + // Indicate which tone is playing or need to be played: + // EIdle - idle, + // EAudioTonePlaying - audio playing, + // EBeepOnce - beep once playing, + // ESilentTonePlaying - silent tone playing, + // EDefaultTonePlaying - default tone playing, + // EBackupTonePlaying - backup tone playing, + enum TTonePlayingStatus + { + EIdle, + EAudioTonePlaying, + EBeepOnce, + ESilentTonePlaying, + EUnsecureVoIPTonePlaying, + EDefaultTonePlaying, + EBackupTonePlaying + }; + + // Current playing status. + TTonePlayingStatus iTonePlayingStatus; + + // True if Tts is currently playing. Is different from + // iTonePlayingStatus, because TTS is played in + // parallel with the other tone types + TBool iTtsTonePlaying; + + // Index of the TTS delay that is "executed" currently or is to be + // "executed" after the current playing of the TTS tone. Is zero based + TInt iTtsDelayIndex; + + // True if TTS tone should be played when the next playing of the + // default or personal tone is fired. + TBool iTtsToneToBePlayed; + + // Normal ringing tone + CPhoneRingingTone* iAudioVideoRingingTone; + + // Volume for backup tone playing. + TInt iVolume; + + // Volume of the text pronounced by the TTS engine + TInt iTtsVolume; + + // Ringing type for backup tone playing. + TProfileRingingType iRingingType; + + // Timer. + CPhoneTimer* iTimer; + + // Timer, that tracks delays before playing TTS + CPhoneTimer* iTtsDelayTimer; + + // Number of times TTS tone should be played for the CURRENT ringtone + // If ringing tone is to be played just once, iTtsDelayCount == 1, + // otherwise iTtsDelayCount == KTtsDelayCount + TInt iTtsDelaysCount; + + // Player to be deleted asynchronously. + RPointerArray iAsyncDeletePlayers; + + // DRM extend security + TBool iExtSecNeeded; + + // State of this active object + TState iState; + + // RingingType for TtsPlayer only. + TProfileRingingType iTtsRingingType; + + // Counter for TTs timeouts + TInt iTTsTimeOutCounter; + + // Voice call ringing tone file size max value. + TInt iToneFileSizeLimitKB; + + // Client message. + RMessage2 iClientMessage; + + }; + +#endif //__PHONERINGINGTONESRVPLAYERAO_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneringingtonesrvsession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/phoneringingtonesrvsession.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2002-2005 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: Session class for phone ringingtone server. +* +*/ + + +#ifndef __PHONERINGINGTONESRVSESSION_H +#define __PHONERINGINGTONESRVSESSION_H + +// FORWARD DECLARATIONS +class MPhoneRingingToneServer; + +// CLASS DECLARATION +class CPhoneRingingToneServerSession : public CSession2 + { +public: + /** + * Two-phased constructor. + * @param aServer It is the main server object. + * @return new instance. + */ + static CPhoneRingingToneServerSession* NewL( MPhoneRingingToneServer& aServer ); + + /** + * Destructor. + */ + ~CPhoneRingingToneServerSession(); + +protected: + /** + * C++ default constructor. + */ + CPhoneRingingToneServerSession( MPhoneRingingToneServer& aServer ); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + /** + * From CSession2, it is called whenever request is processed. + * @param aMessage It is the request. + */ + void ServiceL( const RMessage2& aMessage ); + +private: + // Server. + MPhoneRingingToneServer& iServer; + }; + +#endif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneuiviewtrace.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/inc/phoneuiviewtrace.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,69 @@ +/* +* ============================================================================ +* Name : phoneuiviewtrace.h +* Part of : PhoneUI / PhoneUIView +* Description : Macros for tracing. +* Version : +* +* Copyright © 2010 Nokia. All rights reserved. +* This material, including documentation and any related computer +* programs, is protected by copyright controlled by Nokia. All +* rights are reserved. Copying, including reproducing, storing, +* adapting or translating, any or all of this material requires the +* prior written consent of Nokia. This material also contains +* confidential information which may not be disclosed to others +* without the prior written consent of Nokia. +* ============================================================================ +* Template version: 4.1 +*/ + + +#ifndef PHONEUIVIEWTRACE_H +#define PHONEUIVIEWTRACE_H + +//#define __RINGINGTONE_LOGGING +#ifdef __RINGINGTONE_LOGGING + +// INCLUDES +#include + +// CONSTANTS + +const TInt KPhoneUiViewDebugBufferSize = 100; + +// MACROS + +typedef TBuf TPhoneUiViewDebBuf; + +#define PHONEUIVIEW_PRINT(x) { _LIT( KPhoneUiViewDebugPrintPrefix, "PhoneUiView: ");\ + TPhoneUiViewDebBuf buf( KPhoneUiViewDebugPrintPrefix);\ + if ((_L(x).Length()) + buf.Length() <= KPhoneUiViewDebugBufferSize )\ + buf.Append(_L(x)); RDebug::Print(buf); } + +#define PHONEUIVIEW_PRINTF(x,y) { _LIT( KPhoneUiViewDebugPrintPrefix, "PhoneUiView: ");\ + TPhoneUiViewDebBuf buf( KPhoneUiViewDebugPrintPrefix);\ + if ((_L(x).Length()) + buf.Length() <= KPhoneUiViewDebugBufferSize )\ + buf.Append(_L(x)); RDebug::Print(buf,y);} + +#define PHONEUIVIEW_PRINTF2(x,y,z) { _LIT( KPhoneUiViewDebugPrintPrefix, "PhoneUiView: ");\ + TPhoneUiViewDebBuf buf( KPhoneUiViewDebugPrintPrefix);\ + if ((_L(x).Length()) + buf.Length() <= KPhoneUiViewDebugBufferSize )\ + buf.Append(_L(x)); RDebug::Print(buf,y,z); } + +#define PHONEUIVIEW_PRINTF3(v,x,y,z) { _LIT( KPhoneUiViewDebugPrintPrefix, "PhoneUiView: ");\ + TPhoneUiViewDebBuf buf( KPhoneUiViewDebugPrintPrefix);\ + if ((_L(v).Length()) + buf.Length() <= KPhoneUiViewDebugBufferSize )\ + buf.Append(_L(v)); RDebug::Print(buf,x,y,z); } + +#else // !_DEBUG + +#define PHONEUIVIEW_PRINT(x) +#define PHONEUIVIEW_PRINTF(x,y) +#define PHONEUIVIEW_PRINTF2(x,y,z) +#define PHONEUIVIEW_PRINTF3(v,x,y,z) + +#endif // _DEBUG + +#endif // PHONEUIVIEWTRACE_H + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/inc/phoneviewcommanddefinitions.h --- a/phoneapp/phoneuiview/inc/phoneviewcommanddefinitions.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/inc/phoneviewcommanddefinitions.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -137,11 +137,8 @@ EPhoneViewSendMessage, EPhoneViewSetBlockingDialogStatus, EPhoneViewSetPhoneNumberAvailableInPhoneEngine, - EPhoneViewSetSecurityMode, - EPhoneViewGetSecurityModeStatus, EPhoneViewSetStatusPaneVisible, // 110 EPhoneViewEnableKeyLock, - EPhoneViewEnableKeyLockWithoutNote, EPhoneViewLaunchFaxModem, EPhoneViewUpdateFSW, EPhoneViewIsQuery, @@ -160,7 +157,7 @@ EPhoneViewGetIsConferenceInSelectionMode, EPhoneViewIsStraightCallToVideoMailBox, EPhoneViewSetDtmfDialerViewVisible, // 130 - EPhoneViewSetRetrictedDialer, + EPhoneViewSetRestrictedDialer, EPhoneViewIsConferenceInExpandedMode, EPhoneViewIsMenuBarVisible, EPhoneViewGetBlockingDialogStatus, @@ -197,8 +194,6 @@ EPhoneViewSetEikonNotifiersDisabled, EPhoneViewCancelAllNotications, EPhoneViewSetVideoCallDTMFVisibilityFlag, - EPhoneViewIsKeyLockEnabled, - EPhoneViewDisableKeyLock, EPhoneViewLoadPlugins, // 170 EPhoneViewOpenVirtualKeyBoard, EPhoneViewUpdateNoteSoftkeys, @@ -227,7 +222,18 @@ EPhoneViewSetToolbarDimming, EPhoneViewEnableToolbarButton, EPhoneViewHideToolbar, - EPhoneViewShowToolbar, + EPhoneViewShowToolbar, + EPhoneViewGetEasyDialingInFocusStatus, + EPhoneViewSetInvalidCsPhoneNumberFlag, + EPhoneViewGetInvalidCsPhoneNumberFlag, + EPhoneViewGetEasyDialingMenuId, + EPhoneViewGetEasyDialingCbaId, + EPhoneViewGetNeedToReturnToForegroundAppStatus, + EPhoneViewSetNeedToReturnToForegroundAppStatus, + EPhoneViewSetConferenceAndWaitingVideo, + EPhoneViewLaunchMultimediaSharing, + EPhoneViewGetQwertyModeObserver, + EPhoneAmountOfCommands, // Don't remove this, this should always be the last in list. }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphoneaudioplayer.cpp --- a/phoneapp/phoneuiview/src/cphoneaudioplayer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphoneaudioplayer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -30,7 +30,7 @@ #include "cphoneringingtone.h" #include "mphoneaudioplayerobserver.h" #include "phoneconstants.h" -#include "phonelogger.h" +#include "phoneuiviewtrace.h" #include "phoneui.pan" @@ -69,7 +69,7 @@ const TDesC& aFileName, CMdaServer* aMdaServer ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::ConstructL()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ConstructL() <" ); if ( iFormat == EFormatTone ) { iTonePlayer = CMdaAudioToneUtility::NewL( *this, aMdaServer ); @@ -79,9 +79,7 @@ else { //audio sample player - __PHONELOG3( - EBasic, - EPhoneUIView, + PHONEUIVIEW_PRINTF3( "CPhoneAudioPlayer::ConstructL - aFileName(%S), iPriority(%d), iPreference(%d)", &aFileName, iPriority, @@ -92,10 +90,11 @@ *this, iPriority, static_cast< TMdaPriorityPreference >( iPreference ), - aMdaServer ); + aMdaServer ); iPlayerStatus = EToneLoading; - + } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ConstructL() >" ); } // ----------------------------------------------------------------------------- @@ -106,11 +105,12 @@ const TDesC8& aSequence, CMdaServer* aMdaServer ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::ConstructSeqL()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ConstructSeqL() <" ); iTonePlayer = CMdaAudioToneUtility::NewL( *this, aMdaServer ); iSequence = aSequence.AllocL(); iTonePlayer->PrepareToPlayDesSequence( *iSequence ); iPlayerStatus = EToneLoading; + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ConstructSeqL() >" ); } // ----------------------------------------------------------------------------- @@ -122,19 +122,19 @@ TInt aPriority, TUint aPreference ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::ConstructTtsL()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ConstructTtsL() <" ); delete iTtsPlayer; // if any iTtsPlayer = NULL; iTtsPlayer = CMdaAudioPlayerUtility::NewL( *this, aPriority, static_cast< TMdaPriorityPreference >( aPreference ) ); - + delete iTtsText; // if any iTtsText = NULL; // UTF-8 strings can take up to 4 bytes per character iTtsText = HBufC8::NewL( aTtsText.Length() << KTimesToMultiply ); - + TPtr8 refText = iTtsText->Des(); User::LeaveIfError( CnvUtfConverter::ConvertFromUnicodeToUtf8( refText, aTtsText ) ); @@ -148,8 +148,9 @@ // ReAlloc failed, set back to original. iTtsText = oldText; } - + iTtsPlayer->OpenDesL( *iTtsText ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ConstructTtsL() >" ); } // ----------------------------------------------------------------------------- @@ -165,7 +166,7 @@ CMdaServer* aMdaServer, TBool aExtSecNeeded ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::New()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::New() <" ); CPhoneAudioPlayer* self = NULL; TRAPD( err, self = CPhoneAudioPlayer::NewL( aRingingTone, @@ -179,6 +180,7 @@ { return NULL; } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::New() >" ); return self; } @@ -195,23 +197,23 @@ CMdaServer* aMdaServer, TBool aExtSecNeeded ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::NewL()" ); - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneAudioPlayer::NewL - aExtSecNeeded(%d)", + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewL() <" ); + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::NewL - aExtSecNeeded(%d)", aExtSecNeeded ); - + // Check the file DRM property if extend secure is needed. if ( aExtSecNeeded ) { if ( !aRingingTone.IsFileInRom() && !aRingingTone.IsFileDrmProtected() ) { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::NewL - DRM extend security check permission denied" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewL - DRM extend security check permission denied" ); User::Leave( KErrPermissionDenied ); } - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::NewL - DRM extend security check ok" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewL - DRM extend security check ok" ); } - // RNG file types have to be played with CMdaAudioToneUtility player. - // Otherwise use sample player + // RNG file types have to be played with CMdaAudioToneUtility player. + // Otherwise use sample player TAudioDataFormat format = ( aRingingTone.MimeType().CompareF( KFileListRngMimeType ) == KErrNone ) ? EFormatTone :EFormatSample; @@ -223,11 +225,11 @@ aPriority, aPreference, aId ); - + CleanupStack::PushL( self ); self->ConstructL( aRingingTone.FileName(), aMdaServer ); CleanupStack::Pop( self ); - + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewL() >" ); return self; } @@ -244,7 +246,7 @@ CMdaServer* aMdaServer, TBool aExtSecNeeded ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::NewL()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewL() <" ); CPhoneRingingTone* tone = CPhoneRingingTone::NewL( aFileName ); CleanupStack::PushL( tone ); @@ -257,8 +259,8 @@ aExtSecNeeded ); CleanupStack::PopAndDestroy( tone ); - - return player; + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewL() >"); + return player; } // ----------------------------------------------------------------------------- @@ -273,7 +275,7 @@ TInt aId, CMdaServer* aMdaServer ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::NewSeqL()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewSeqL() <" ); CPhoneAudioPlayer* self = new (ELeave) CPhoneAudioPlayer( EFormatTone, @@ -281,11 +283,12 @@ aPriority, aPreference, aId ); - + CleanupStack::PushL( self ); self->ConstructSeqL( aSequence, aMdaServer ); CleanupStack::Pop( self ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewSeqL() >" ); return self; } @@ -300,7 +303,7 @@ MPhoneAudioPlayerObserver& aObserver, TInt aId ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::NewTtsL()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewTtsL() <" ); CPhoneAudioPlayer* self = new (ELeave) CPhoneAudioPlayer( EFormatTts, @@ -308,11 +311,11 @@ aPriority, aPreference, aId ); - + CleanupStack::PushL( self ); self->ConstructTtsL( aText, aPriority, aPreference ); CleanupStack::Pop( self ); - + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::NewTtsL() >" ); return self; } @@ -322,14 +325,14 @@ // CPhoneAudioPlayer::~CPhoneAudioPlayer() { - + if ( iAudioOutput ) { - delete iAudioOutput; - } - if ( iTonePlayer ) + delete iAudioOutput; + } + if ( iTonePlayer ) { - delete iTonePlayer; + delete iTonePlayer; } if ( i3DPlugin ) { @@ -338,22 +341,22 @@ } // ECom cleanup REComSession::FinalClose(); - if ( iSamplePlayer ) + if ( iSamplePlayer ) { delete iSamplePlayer; } if ( iTtsPlayer ) { - delete iTtsPlayer; + delete iTtsPlayer; } if ( iSequence ) { delete iSequence; } - if ( iTtsText ) + if ( iTtsText ) { delete iTtsText; - } + } } // ----------------------------------------------------------------------------- @@ -362,16 +365,12 @@ // void CPhoneAudioPlayer::Play( TRingingType aRingType, TInt aVolume, TInt aTTsToBePlayed ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::Play()" ); - __PHONELOG2( - EBasic, - EPhoneUIView, + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::Play() <" ); + PHONEUIVIEW_PRINTF2( "CPhoneAudioPlayer::Play - iFormat(%d), iPlayerStatus(%d)", iFormat, iPlayerStatus ); - __PHONELOG3( - EBasic, - EPhoneUIView, + PHONEUIVIEW_PRINTF3( "CPhoneAudioPlayer::Play - aRingType(%d), aVolume(%d), aTTsToBePlayed(%d)", aRingType, aVolume, @@ -379,7 +378,7 @@ iRingType = aRingType; iVolume = aVolume; iTTsToBePlayed = aTTsToBePlayed; - + if ( iFormat == EFormatTone ) { switch ( iPlayerStatus ) @@ -400,8 +399,7 @@ default: __ASSERT_DEBUG( EFalse, - - Panic( EPhoneViewCaseNotHandled ) ); + Panic( EPhoneViewCaseNotHandled ) ); } } else if ( iFormat == EFormatTts ) @@ -450,27 +448,25 @@ default: __ASSERT_DEBUG( EFalse, - Panic( EPhoneViewCaseNotHandled ) ); } } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::Play() >" ); } - + // ----------------------------------------------------------------------------- // CPhoneAudioPlayer::ReStartPlaying // ----------------------------------------------------------------------------- -// +// void CPhoneAudioPlayer::ReStartPlaying() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::ReStartPlaying()" ); - __PHONELOG3( - EBasic, - EPhoneUIView, + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ReStartPlaying() <" ); + PHONEUIVIEW_PRINTF3( "CPhoneAudioPlayer::ReStartPlaying - iFormat(%d), iRingType(%d), iVolume(%d)", iFormat, iRingType, iVolume ); - + if ( iFormat == EFormatTone ) { iTonePlayer->Play(); @@ -480,12 +476,13 @@ { iTtsPlayer->Play(); iPlayerStatus = ETonePlaying; - } + } else { iSamplePlayer->Play(); iPlayerStatus = ETonePlaying; - } + } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::ReStartPlaying() >" ); } // ----------------------------------------------------------------------------- @@ -494,9 +491,10 @@ // void CPhoneAudioPlayer::StopPlaying() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::StopPlaying()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::StopPlaying() <" ); + iToBePlaying = EFalse; - + if ( iFormat == EFormatTone ) { if ( EMdaAudioToneUtilityPrepared == iTonePlayer->State() ) @@ -522,11 +520,12 @@ } else { - iSamplePlayer->Stop(); + iSamplePlayer->Stop(); } } - + iPlayerStatus = EToneReady; + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::StopPlaying() >" ); } // ----------------------------------------------------------------------------- @@ -537,8 +536,8 @@ TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/ ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::MapcInitComplete()" ); - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneAudioPlayer::MapcInitComplete - aError(%d)", + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MapcInitComplete() <" ); + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::MapcInitComplete - aError(%d)", aError ); __ASSERT_DEBUG( ( ( iFormat == EFormatSample ) || ( iFormat == EFormatTts ) ) && ( iPlayerStatus == EToneLoading ), Panic( EPhoneViewGeneralError ) ); @@ -562,6 +561,7 @@ MPhoneAudioPlayerObserver::EAudioPlayerInitializingFailure, aError, iId ); } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MapcInitComplete() >" ); } // ----------------------------------------------------------------------------- @@ -570,8 +570,8 @@ // void CPhoneAudioPlayer::MapcPlayComplete( TInt aError ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::MapcPlayComplete()" ); - __PHONELOG2( EBasic, EPhoneUIView, "CPhoneAudioPlayer::MapcPlayComplete - iFormat(%d), aError(%d)", + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MapcPlayComplete() <" ); + PHONEUIVIEW_PRINTF2( "CPhoneAudioPlayer::MapcPlayComplete - iFormat(%d), aError(%d)", iFormat, aError ); iPlayerStatus = EToneReady; @@ -582,7 +582,7 @@ { i3DPlugin->Stop(); delete i3DPlugin; - i3DPlugin = NULL; + i3DPlugin = NULL; } if ( aError != KErrNone ) @@ -595,6 +595,7 @@ { iObserver.HandlePlayingComplete( iId ); } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MapcPlayComplete() >" ); } // ----------------------------------------------------------------------------- @@ -603,11 +604,11 @@ // void CPhoneAudioPlayer::MatoPrepareComplete( TInt aError ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::MatoPrepareComplete()" ); - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneAudioPlayer::MatoPrepareComplete - aError(%d)", + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MatoPrepareComplete() <" ); + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::MatoPrepareComplete - aError(%d)", aError ); - - __ASSERT_DEBUG( ( iFormat == EFormatTone ) && ( iPlayerStatus == EToneLoading ), + + __ASSERT_DEBUG( ( iFormat == EFormatTone ) && ( iPlayerStatus == EToneLoading ), Panic( EPhoneViewGeneralError ) ); if ( aError == KErrNone ) { @@ -629,6 +630,7 @@ MPhoneAudioPlayerObserver::EAudioPlayerInitializingFailure, aError, iId ); } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MatoPrepareComplete() >" ); } // ----------------------------------------------------------------------------- @@ -637,8 +639,8 @@ // void CPhoneAudioPlayer::MatoPlayComplete(TInt aError) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::MatoPlayComplete()" ); - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneAudioPlayer::MatoPlayComplete - aError(%d)", + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MatoPlayComplete() <" ); + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::MatoPlayComplete - aError(%d)", aError ); if ( aError != KErrNone ) { @@ -650,6 +652,7 @@ { iObserver.HandlePlayingComplete( iId ); } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::MatoPlayComplete() >" ); } // ----------------------------------------------------------------------------- @@ -658,12 +661,12 @@ // void CPhoneAudioPlayer::DoPlay() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::DoPlay()" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::DoPlay() <" ); __ASSERT_DEBUG( iPlayerStatus == ETonePlaying, Panic( EPhoneViewGeneralError ) ); - + SetRingingTypeProperties(); - + TInt err(KErrNone); if ( iFormat == EFormatTone ) { @@ -672,7 +675,7 @@ else if ( iFormat == EFormatTts ) { iTtsPlayer->Play(); - } + } else { TRAP( err,i3DPlugin = C3DRingingToneInterface::NewL( KNullUid ) ); @@ -685,28 +688,27 @@ { if ( !iAudioOutput ) { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::DoPlay c aud "); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::DoPlay c aud "); TRAP (err, iAudioOutput = CAudioOutput::NewL( *iSamplePlayer ) ); if ( err ) { - __PHONELOG1(EBasic, EPhoneUIView, - "P.AudPlayer.DoPlay.iAudioOutput.err ", err ); - } + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::DoPlay iAudioOutput.err ", err ); + } } if ( !err && iAudioOutput ) { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::DoPlay EALL "); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::DoPlay EALL "); TRAP (err, iAudioOutput->SetAudioOutputL( CAudioOutput::EAll ) ); if ( err ) { - __PHONELOG1( EBasic, EPhoneUIView, - "P.AudPlayer.DoPlay.SetAudioOutputL.err ", err ); + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::DoPlay SetAudioOutputL.err ", err ); } } iSamplePlayer->Play(); } } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::DoPlay() >" ); } // ----------------------------------------------------------------------------- @@ -715,10 +717,10 @@ // void CPhoneAudioPlayer::SetRingingTypeProperties() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::SetRingingTypeProperties()" ); - __PHONELOG2( EBasic, EPhoneUIView, "CPhoneAudioPlayer::SetRingingTypeProperties - iFormat(%d), iRingType(%d)", + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetRingingTypeProperties() <" ); + PHONEUIVIEW_PRINTF2( "CPhoneAudioPlayer::SetRingingTypeProperties - iFormat(%d), iRingType(%d)", iFormat, iRingType ); - TInt rampTime( 0 ); + TInt rampTime( 0 ); if ( iFormat == EFormatTone ) { switch ( iRingType ) @@ -726,7 +728,7 @@ case ETypeRinging: //If we have TTS activated and ringingtype is ringing: //We need to play TTS sequence again when ringingtone restarts. - //Thats why we need to set ringingtype to ETypeRingingOnce because + //Thats why we need to set ringingtype to ETypeRingingOnce because //it is the only way of knowing when ringingtone is completed. //Then we can restart it with new TTS iterations. if ( iTTsToBePlayed ) @@ -736,10 +738,7 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iTonePlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing tone with TTS, Set volume(%d) and ring once", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing tone with TTS, Set volume(%d) and ring once", iVolume ); } else @@ -748,10 +747,7 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iTonePlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing tone, Set volume(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing tone, Set volume(%d)", iVolume ); } break; @@ -762,10 +758,7 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iTonePlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ring once tone, set volume(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ring once tone, set volume(%d)", iVolume ); break; @@ -780,10 +773,7 @@ { //rampTime in this case is only 3 seconds and volume is 1. rampTime = KPhoneAudioAscendingRampDuration; - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending tone with TTS, Start from lowest volume, rampTime(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending tone with TTS, Start from lowest volume, rampTime(%d)", rampTime ); iTonePlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( rampTime ) ); @@ -795,16 +785,13 @@ { //rampTime: time for one step * volume level rampTime = KPhoneAudioAscendingRampDuration*iVolume; - __PHONELOG2( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending tone, Set volume(%d), rampTime(%d)", + PHONEUIVIEW_PRINTF2( "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending tone, Set volume(%d), rampTime(%d)", iVolume, rampTime ); iTonePlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( rampTime ) ); - + iCurrentVolume = 1; //we start from the lowest volume - iTonePlayer->SetVolume( ConvertVolume( iVolume ) ); + iTonePlayer->SetVolume( ConvertVolume( iVolume ) ); } break; @@ -813,10 +800,7 @@ break; } - __PHONELOG3( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Tone, iPriority(%d), iPreference(%d), iVolume(%d)", + PHONEUIVIEW_PRINTF3( "CPhoneAudioPlayer::SetRingingTypeProperties - Tone, iPriority(%d), iPreference(%d), iVolume(%d)", iPriority, iPreference, iVolume ); //Set priority and preference @@ -837,21 +821,15 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iTtsPlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - TTS, Set volume(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - TTS, Set volume(%d)", iVolume ); break; - + default: __ASSERT_DEBUG( EFalse, Panic( EPhoneViewCaseNotHandled ) ); } - __PHONELOG( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - TTS" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetRingingTypeProperties - TTS" ); } else { @@ -860,7 +838,7 @@ case ETypeRinging: //If we have TTS activated and ringingtype is ringing: //We need to play TTS sequence again when ringingtone restarts. - //Thats why we need to set ringingtype to ETypeRingingOnce because + //Thats why we need to set ringingtype to ETypeRingingOnce because //it is theonly way of knowing when ringingtone is completed. //Then we can restartit with new TTS iterations. if ( iTTsToBePlayed ) @@ -870,10 +848,7 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iSamplePlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing sample with TTS, Ring only once, Set volume(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing sample with TTS, Ring only once, Set volume(%d)", iVolume ); } else @@ -882,10 +857,7 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iSamplePlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing sample, Set volume(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ringing sample, Set volume(%d)", iVolume ); } break; @@ -895,10 +867,7 @@ TTimeIntervalMicroSeconds( KPhoneRingingRepeatsTrailPause ) ); iSamplePlayer->SetVolume( ConvertVolume( iVolume ) ); - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ring once sample, set volume(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ring once sample, set volume(%d)", iVolume ); break; @@ -913,10 +882,7 @@ { //rampTime in this case is only 3 seconds and volume is 1. rampTime = KPhoneAudioAscendingRampDuration; - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending sample with TTS, Start from lowest volume, rampTime(%d)", + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending sample with TTS, Start from lowest volume, rampTime(%d)", rampTime ); iSamplePlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( rampTime ) ); @@ -928,14 +894,11 @@ { //rampTime: time for one step * volume level rampTime = KPhoneAudioAscendingRampDuration*iVolume; - __PHONELOG2( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending sample, Set volume(%d), rampTime(%d)", + PHONEUIVIEW_PRINTF2( "CPhoneAudioPlayer::SetRingingTypeProperties - Ascending sample, Set volume(%d), rampTime(%d)", iVolume, rampTime ); iSamplePlayer->SetVolumeRamp( TTimeIntervalMicroSeconds( rampTime ) ); - + iCurrentVolume = 1; //we start from the lowest volume iSamplePlayer->SetVolume( ConvertVolume( iVolume ) ); } @@ -946,119 +909,116 @@ break; } - __PHONELOG( - EBasic, - EPhoneUIView, - "CPhoneAudioPlayer::SetRingingTypeProperties - Sample" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetRingingTypeProperties - Sample" ); } + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetRingingTypeProperties() >" ); } // ----------------------------------------------------------------------------- // CPhoneAudioPlayer::SetNewVolumeAndRamptime // ----------------------------------------------------------------------------- -// +// void CPhoneAudioPlayer::SetNewVolumeAndRamptime( TInt aVolume, TInt aRamptime ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneAudioPlayer::SetNewVolumeAndRamptime()" ); - + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetNewVolumeAndRamptime() <" ); + //Check that volume is in valid range. - TInt volume = aVolume<1 ? 1:aVolume; - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneAudioPlayer::SetNewVolumeAndRamptime - aVolume(%d)", + TInt volume = aVolume<1 ? 1:aVolume; + PHONEUIVIEW_PRINTF( "CPhoneAudioPlayer::SetNewVolumeAndRamptime - aVolume(%d)", aVolume ); - + if ( iFormat == EFormatTone && iTonePlayer ) { iTonePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( aRamptime ) ); iTonePlayer->SetVolume( ConvertVolume( volume ) ); - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::SetNewVolumeAndRamptime - Tone player" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetNewVolumeAndRamptime - Tone player" ); } else if ( iFormat == EFormatTts && iTtsPlayer ) { iTtsPlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( aRamptime ) ); iTtsPlayer->SetVolume( ConvertVolume( volume ) ); - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::SetNewVolumeAndRamptime - TTS player" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetNewVolumeAndRamptime - TTS player" ); } else { iSamplePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( aRamptime ) ); iSamplePlayer->SetVolume( ConvertVolume( volume ) ); - __PHONELOG( EBasic, EPhoneUIView, "CPhoneAudioPlayer::SetNewVolumeAndRamptime - Sample player" ); + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetNewVolumeAndRamptime - Sample player" ); } - + + PHONEUIVIEW_PRINT( "CPhoneAudioPlayer::SetNewVolumeAndRamptime() >" ); } - + // ----------------------------------------------------------------------------- // CPhoneAudioPlayer::ConvertVolume // ----------------------------------------------------------------------------- -// +// TInt CPhoneAudioPlayer::ConvertVolume( TInt aVolume ) { - //_DDPRINT( 5, "P.AudPlayer.ConvertVolume.aVolume", aVolume ); + TInt result( 0 ); - TInt result( 0 ); - - if ( iFormat == EFormatTone ) + if ( iFormat == EFormatTone && iTonePlayer ) { result = iTonePlayer->MaxVolume() * aVolume / KMaxVolumeLevel; } - else if ( iFormat == EFormatTts ) + else if ( iFormat == EFormatTts && iTtsPlayer ) { - result = iTtsPlayer->MaxVolume() * aVolume / KMaxVolumeLevel; + result = iTtsPlayer->MaxVolume() * aVolume / KMaxVolumeLevel; } else { - result = iSamplePlayer->MaxVolume() * aVolume / KMaxVolumeLevel; + result = iSamplePlayer->MaxVolume() * aVolume / KMaxVolumeLevel; } - - // if user has selected minimum volume level - // set HW volume 1 + + // if user has selected minimum volume level + // set HW volume 1 if ( aVolume == KMinVolumeLevel && result == 0 ) { result = 1; } - - //_DDPRINT( 5, "P.AudPlayer.ConvertVolume.result", result ); - return result; + + //_DDPRINT( 5, "P.AudPlayer.ConvertVolume.result", result ); + return result; } - + // ----------------------------------------------------------------------------- // CPhoneAudioPlayer::SetTTsToBePlayed // ----------------------------------------------------------------------------- -// +// void CPhoneAudioPlayer::SetTTsToBePlayed( TBool aTTsToBePlayed ) - { - iTTsToBePlayed = aTTsToBePlayed; - } + { + iTTsToBePlayed = aTTsToBePlayed; + } // ----------------------------------------------------------------------------- // CPhoneAudioPlayer::MutePlaying // ----------------------------------------------------------------------------- -// +// void CPhoneAudioPlayer::MutePlaying() { //_DPRINT( 5, "P.Aud.Mute" ); if ( iPlayerStatus == ETonePlaying ) { - if ( iFormat == EFormatTone ) + if ( iFormat == EFormatTone && iTonePlayer ) { iTonePlayer->SetVolume(0); } - else if ( iFormat == EFormatTts ) + else if ( iFormat == EFormatTts && iTtsPlayer ) { iTtsPlayer->SetVolume(0); } else // EFormatSample { - iSamplePlayer->SetVolume(0); + iSamplePlayer->SetVolume(0); } } else { // Mute called during EToneLoading state. - iToBePlaying = EFalse; - } + iToBePlaying = EFalse; + } } - -// End of File + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonebubblewrapper.cpp --- a/phoneapp/phoneuiview/src/cphonebubblewrapper.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonebubblewrapper.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -895,7 +895,11 @@ CCoeControl* control(NULL); if ( iUseDialer ) { - control = iDialerNumberEntry->GetNumberEntry(); + // TODO: We should try to clarify the dialer control hierarchy. + // Currently, we have three controls, each of which are somewhere + // referred as "number entry": CDialer, CDialerNumberEntry, and CAknPhoneNumberEditor. + // Each of these are present on the code line below. + control = iDialerNumberEntry->GetNumberEntry()->Parent(); } else { diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp --- a/phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonebuttonscontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2010 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" @@ -854,6 +854,13 @@ maskIndex = EMbmPhoneuiQgn_indi_button_silence_mask; break; } + case EPhoneInCallCmdShareLiveVideo: + { + skinId = KAknsIIDQgnIndiButtonVideoShare; + fileIndex = EMbmPhoneuiQgn_indi_button_video_share; + maskIndex = EMbmPhoneuiQgn_indi_button_video_share_mask; + break; + } default: return NULL; @@ -901,16 +908,6 @@ frameId = KAknsIIDQsnFrButtonNormalReject; break; } - case EPhoneInCallCmdHold: - { - frameId = KAknsIIDQsnFrButtonNormalHold; - break; - } - case EPhoneInCallCmdUnhold: - { - frameId = KAknsIIDQsnFrButtonNormalHold; - break; - } case EPhoneInCallCmdEndThisOutgoingCall: { frameId = KAknsIIDQsnFrButtonNormalReject; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonedialercontroller.cpp --- a/phoneapp/phoneuiview/src/cphonedialercontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonedialercontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009, 2010 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" @@ -21,67 +21,99 @@ #include #include #include -#include -#include #include +#include #include +#include #include #include #include "cphonedialercontroller.h" +#include "cphoneeasydialingcontroller.h" #include "cphonebubblewrapper.h" #include "phoneui.hrh" -#include "phonerssbase.h" #include "tphonecmdparaminteger.h" -#include "cphonemenucontroller.h" #include "cphonemainresourceresolver.h" #include "tphonecmdparamcallstatedata.h" #include "tphonecmdparamboolean.h" -#include "mphonedialercontroller.h" _LIT ( KPhoneMifFileName, "phoneui.mif" ); -_LIT( KDialerToolbarButtonEmptyStr, "" ); + -const TInt KNumberOfButtons = 6; -struct SPhoneDialerToolbarButton +/** States for Call button. */ +enum TCallButtonState + { + ECallButtonCallState = 0, + ECallButtonLogState, + ECallButtonSendState + }; +static const CPhoneDialerController::TLocalButtonData KCallButtonDataTable[] = { - TInt iIconIndex; - TInt iMaskIndex; - TInt iCommandId; + { EPhoneNumberAcqCmdSendCommand, + EAknsMinorGenericQgnIndiButtonAnswerWhite, + EMbmPhoneuiQgn_indi_button_answer_white, + EMbmPhoneuiQgn_indi_button_answer_white_mask, + R_PHONEUI_DIALER_TOOLTIP_CALL + }, + { EPhoneDialerCmdLog, + EAknsMinorGenericQgnIndiButtonLogdialerWhite, + EMbmPhoneuiQgn_indi_button_logdialer_white, + EMbmPhoneuiQgn_indi_button_logdialer_white_mask, + R_PHONEUI_DIALER_TOOLTIP_RECENT_CALLS + }, + { EPhoneNumberAcqCmdSendCommand, + EAknsMinorGenericQgnIndiButtonAnswerWhite, + EMbmPhoneuiQgn_indi_button_answer_white, + EMbmPhoneuiQgn_indi_button_answer_white_mask, + R_PHONEUI_DIALER_TOOLTIP_SEND + } }; +static const TInt KCallButtonDataTableCount = + sizeof( KCallButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData ); + -const SPhoneDialerToolbarButton bArray[KNumberOfButtons] = - { - { EMbmPhoneuiQgn_indi_dialer_call_send, - EMbmPhoneuiQgn_indi_dialer_call_send_mask, - EPhoneDialerCmdLog - }, - { EMbmPhoneuiQgn_indi_dialer_call_send, - EMbmPhoneuiQgn_indi_dialer_call_send_mask, - EPhoneNumberAcqCmdSendCommand - }, - - { EMbmPhoneuiQgn_indi_button_send_dtmf, - EMbmPhoneuiQgn_indi_button_send_dtmf_mask, - EPhoneCmdDtmfOk - }, - { EMbmPhoneuiQgn_indi_dialer_contacts, - EMbmPhoneuiQgn_indi_dialer_contacts_mask, - EPhoneDialerCmdContacts - }, - { EMbmPhoneuiQgn_indi_dialer_add_contacts, - EMbmPhoneuiQgn_indi_dialer_add_contacts_mask, - EPhoneNumberAcqCmdAddToContacts - }, - { EMbmPhoneuiQgn_indi_dialer_clear, - EMbmPhoneuiQgn_indi_dialer_clear_mask, - EPhoneDialerCmdClear - } - }; +/** States for Phonebook button */ +enum TPhonebookButtonState + { + EPhonebookButtonContactsState = 0, + EPhonebookButtonAddContactState + }; +static const CPhoneDialerController::TLocalButtonData KPhonebookButtonDataTable[] = + { + { EPhoneDialerCmdContacts, + EAknsMinorGenericQgnIndiDialerContacts, + EMbmPhoneuiQgn_indi_dialer_contacts, + EMbmPhoneuiQgn_indi_dialer_contacts_mask, + R_PHONEUI_DIALER_TOOLTIP_CONTACTS + }, + { EPhoneNumberAcqCmdAddToContacts, + EAknsMinorGenericQgnIndiDialerAddContacts, + EMbmPhoneuiQgn_indi_dialer_add_contacts, + EMbmPhoneuiQgn_indi_dialer_add_contacts_mask, + R_PHONEUI_DIALER_TOOLTIP_ADD_TO_CONTACTS + } + }; +static const TInt KPhonebookButtonDataTableCount = + sizeof( KPhonebookButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData ); -const TInt KDialerToolbarButtonCount = 6; -const TInt KDialerToolbarButtonKeyRepeatDelay = 300; -const TInt KDialerToolbarKeyRepeatInterval = 75; + +/** States for Clear button */ +enum TClearButtonState + { + EClearButtonClearState = 0 + }; +static const CPhoneDialerController::TLocalButtonData KClearButtonDataTable[] = + { + { EPhoneDialerCmdClear, + EAknsMinorGenericQgnIndiDialerClear, + EMbmPhoneuiQgn_indi_dialer_clear, + EMbmPhoneuiQgn_indi_dialer_clear_mask, + R_PHONEUI_DIALER_TOOLTIP_CLEAR + } + }; +static const TInt KClearButtonDataTableCount = + sizeof( KClearButtonDataTable ) / sizeof( CPhoneDialerController::TLocalButtonData ); + // ======== MEMBER FUNCTIONS ======== @@ -89,14 +121,11 @@ // Constructor // --------------------------------------------------------------------------- // -CPhoneDialerController::CPhoneDialerController( - CPhoneBubbleWrapper& aBubbleWrapper, - CCoeEnv& aCoeEnv, - CPhoneMenuController& aMenuController ): - iBubbleWrapper ( aBubbleWrapper ), - iCoeEnv ( aCoeEnv ), - iMenuController( aMenuController ), - iUpdateToolbar( EFalse ) +EXPORT_C CPhoneDialerController::CPhoneDialerController( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ): + iCoeEnv( aCoeEnv ), + iBubbleWrapper( aBubbleWrapper ) { } @@ -104,114 +133,20 @@ // Second phase constructor // --------------------------------------------------------------------------- // -void CPhoneDialerController::ConstructL() +EXPORT_C void CPhoneDialerController::ConstructL() { - - iBubbleWrapper.SetNumberEntryObserver( *this ); - - if ( !iToolbar ) - { - iToolbar = CAknToolbar::NewL( R_PHONEUI_TOOLBAR ); - } - - CEikAppUiFactory* appUiFactory = - static_cast( CEikonEnv::Static()->AppUiFactory() ); - appUiFactory->SetViewFixedToolbar( iToolbar ); - - if( iToolbar ) - { - iToolbar->SetToolbarObserver( - static_cast( this )); - iToolbar->SetWithSliding( EFalse ); - iToolbar->SetCloseOnAllCommands( EFalse ); - iToolbar->SetFocusing( EFalse ); - - CAknButton* button( NULL ); - - for( TInt i = 0; i < KDialerToolbarButtonCount; i++ ) - { - TAknsItemID skinId = SkinId( bArray[i].iIconIndex ); - // Load tooltip text. - HBufC* tooltipText; - GetTooltipTextL ( bArray[i].iCommandId, tooltipText ); - CleanupStack::PushL( tooltipText ); - - button = CreateButtonLC( - bArray[i].iIconIndex, - bArray[i].iMaskIndex, - *tooltipText, - skinId, - bArray[i].iCommandId ); - // Takes ownership of the button - iToolbar->AddItemL( button, EAknCtButton, bArray[i].iCommandId,0 ); - - CleanupStack::Pop( button ); - CleanupStack::PopAndDestroy( tooltipText ); - } - - // Hide 'Send dtmf' icon - iToolbar->HideItem( EPhoneCmdDtmfOk, ETrue, EFalse ); - TRAP_IGNORE(iToolbar->DisableToolbarL( ETrue )); - } } // --------------------------------------------------------------------------- -// CreateButtonL -// --------------------------------------------------------------------------- -// -CAknButton* CPhoneDialerController::CreateButtonLC( - TInt aNormalIconId, - TInt aNormalMaskId, - const TDesC& aTooltipText, - const TAknsItemID& aSkinIconId, - TInt aCommand ) - { - TFileName mifPath( KDriveZ ); - mifPath.Append( KDC_APP_BITMAP_DIR ); - mifPath.Append( KPhoneMifFileName ); - - - CAknButton* button = CAknButton::NewLC( - mifPath, - aNormalIconId, - aNormalMaskId, - -1, -1, // dimmed - -1, -1, // pressed - -1, -1, // hover - KDialerToolbarButtonEmptyStr(), - aTooltipText, // help - 0, // flags - 0, // state flags - aSkinIconId ); - - if( aCommand == EPhoneDialerCmdClear ) - { - button->SetButtonFlags( KAknButtonKeyRepeat ); - // delay 300 ms and repeat 75 ms interval - button->SetKeyRepeatInterval( KDialerToolbarButtonKeyRepeatDelay, - KDialerToolbarKeyRepeatInterval ); - } - - button->SetFocusing( EFalse ); - button->SetBackground( iToolbar ); - - return button; - } - - -// --------------------------------------------------------------------------- // Static constructor // --------------------------------------------------------------------------- // CPhoneDialerController* CPhoneDialerController::NewL( - CPhoneBubbleWrapper& aBubbleWrapper, - CCoeEnv& aCoeEnv, - CPhoneMenuController& aMenuController ) + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ) { - CPhoneDialerController* self = new (ELeave) CPhoneDialerController( - aBubbleWrapper - , aCoeEnv - , aMenuController ); + CPhoneDialerController* self = + new (ELeave) CPhoneDialerController( aBubbleWrapper, aCoeEnv ); CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); @@ -222,197 +157,11 @@ // Destructor // --------------------------------------------------------------------------- // -CPhoneDialerController::~CPhoneDialerController() - { - delete iToolbar; - } - -// --------------------------------------------------------------------------- -// NumberEntryStateChanged -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::NumberEntryStateChanged( TBool aHidePromptText ) - { - if( aHidePromptText != iPreviousHidePromptTextStatus ) - { - iPreviousHidePromptTextStatus = aHidePromptText; - iUpdateToolbar = ETrue; - } - - HandleNumberEntryChanged(); - - } - -// --------------------------------------------------------------------------- -// HandleNumberEntryChanged -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::HandleNumberEntryChanged() - { - if( iUpdateToolbar ) - { - UpdateToolbar(); - iUpdateToolbar = EFalse; - } - - iBubbleWrapper.HandleNumberEntryChanged(); - - } - -// --------------------------------------------------------------------------- -// HandleNumberEntryChanged -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::SetNumberEntryChangedCallBack( - TPhoneCommandParam* aCommandParam ) +EXPORT_C CPhoneDialerController::~CPhoneDialerController() { - iBubbleWrapper.SetNumberEntryChangedCallBack( aCommandParam ); - - } - -// --------------------------------------------------------------------------- -// CreateButtonSetNumberEntryEmpty -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::CreateButtonSetNumberEntryEmpty() - { - - if( iToolbar ) - { - if( iDtmfDialerVisible ) - { - // Dim 'Send dtmf' - iToolbar->SetItemDimmed( EPhoneCmdDtmfOk, ETrue, EFalse ); - } - else if ( iCustomizedDialer ) - { - iCustomizedDialer->HandleNumberEntryIsEmpty( ETrue ); - } - else - { - // Show 'Logs ' and 'Contacts' items - iToolbar->HideItem( EPhoneDialerCmdLog, EFalse,EFalse ); - iToolbar->HideItem( EPhoneDialerCmdContacts, EFalse, EFalse ); - - if ( iRestrictedDialer ) - { - // Dim 'Logs' - iToolbar->SetItemDimmed( EPhoneDialerCmdLog, ETrue - , EFalse ); - // Dim 'Contacts' - iToolbar->SetItemDimmed( EPhoneDialerCmdContacts, ETrue - , EFalse ); - } - - // Hide 'Send' and 'Add to contacts' - iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, ETrue - , EFalse ); - iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, ETrue - , EFalse ); - } - } } // --------------------------------------------------------------------------- -// CreateButtonSetNumberEntryNotEmpty -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::CreateButtonSetNumberEntryNotEmpty() - { - if( iToolbar ) - { - if( iDtmfDialerVisible ) - { - // Show 'Send dtmf' - iToolbar->SetItemDimmed( EPhoneCmdDtmfOk, EFalse, EFalse ); - } - else if ( iCustomizedDialer ) - { - iCustomizedDialer->HandleNumberEntryIsEmpty( EFalse ); - } - else - { - // Show 'Send' and 'Add to contacts' - iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, EFalse - , EFalse ); - iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, EFalse - , EFalse ); - - if ( iRestrictedDialer ) - { - // Dim 'Send' - iToolbar->SetItemDimmed( EPhoneNumberAcqCmdSendCommand, ETrue - , EFalse ); - // Dim 'Add to Contacts' - iToolbar->SetItemDimmed( EPhoneNumberAcqCmdAddToContacts, ETrue - , EFalse ); - } - - // Hide 'Logs ' and 'Contacts' - iToolbar->HideItem( EPhoneDialerCmdLog, ETrue,EFalse ); - iToolbar->HideItem( EPhoneDialerCmdContacts, ETrue, EFalse ); - - TPhoneCmdParamCallStateData callStateData; - callStateData.SetCallState( EPEStateConnected ); - iBubbleWrapper.GetCallIdByState( &callStateData ); - TInt connected = callStateData.CallId(); - - //If there is a active emergency call, Send item must be dimmed. - if ( connected == KEmergencyCallId ) - { - //Dim Send - iToolbar->SetItemDimmed( EPhoneNumberAcqCmdSendCommand, ETrue - ,EFalse ); - } - else - { - //UnDim - iToolbar->SetItemDimmed( EPhoneNumberAcqCmdSendCommand, EFalse - ,EFalse ); - } - } - } - } - -// --------------------------------------------------------------------------- -// SetDtmfDialerVisibleL -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::SetDtmfDialerVisibleL( TBool aVisible ) - { - iDtmfDialerVisible = aVisible; - - if( iDtmfDialerVisible ) - { - // Load prompt resource text to DTMF dialer. - TInt resourceId = CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneDtmfDialerNumberEntryPromptText ); - - HBufC* loadedText = StringLoader::LoadL( resourceId - , &iCoeEnv ); - - iBubbleWrapper.SetNumberEntryPromptText( loadedText->Des() ); - - delete loadedText; - } - else - { - // Clear prompt text. - iBubbleWrapper.SetNumberEntryPromptText( KNullDesC ); - - // Hide - iToolbar->HideItem( EPhoneCmdDtmfOk, ETrue, EFalse ); - - // Show - iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, EFalse, EFalse ); - iToolbar->HideItem( EPhoneDialerCmdLog, EFalse, EFalse ); - iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, EFalse, EFalse ); - // Dimming - iToolbar->SetItemDimmed( EPhoneDialerCmdContacts, EFalse, EFalse ); - } - } - -// --------------------------------------------------------------------------- // SetRestrictedDialerL // --------------------------------------------------------------------------- // @@ -420,326 +169,296 @@ { iRestrictedDialer = aRestricted; } -// --------------------------------------------------------------------------- -// UpdateToolbar -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::UpdateToolbar() - { - - TPhoneCmdParamInteger numberEntryCountParam; - iBubbleWrapper.GetNumberEntryCount( - (TPhoneCommandParam*) &numberEntryCountParam ); - TInt neLength( numberEntryCountParam.Integer() ); - - if ( neLength ) - { - CreateButtonSetNumberEntryNotEmpty(); - iToolbar->SetItemDimmed( EPhoneDialerCmdClear, EFalse, EFalse ); - iToolbar->DrawDeferred(); - - //Update also options menu via controller - iMenuController.SetNumberEntryEmptyFlag( EFalse ); - } - - else - { - CreateButtonSetNumberEntryEmpty(); - iToolbar->SetItemDimmed( EPhoneDialerCmdClear, ETrue, EFalse ); - iToolbar->DrawDeferred(); - - //Update also options menu via controller - iMenuController.SetNumberEntryEmptyFlag( ETrue ); - } - } - -// --------------------------------------------------------------------------- -// OfferToolbarEventL -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::OfferToolbarEventL( TInt aCommand ) - { - switch ( aCommand ) - { - case EPhoneDialerCmdClear: - { - // Send key event. - TKeyEvent keyEvent; - keyEvent.iModifiers = 0; - keyEvent.iRepeats = 0; - keyEvent.iCode = EKeyBackspace; - keyEvent.iScanCode = EStdKeyBackspace; - iCoeEnv.SimulateKeyEventL( keyEvent, EEventKey ); - } - break; - default: - { - // Forward pressed toolbar button to the framework - // so that we can handle it in active state - static_cast( CEikonEnv::Static()->EikAppUi() ) - ->ProcessCommandL( aCommand ); - } - break; - } - } - -// --------------------------------------------------------------------------- -// DynInitToolbarL -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::DynInitToolbarL( TInt aResourceId, - CAknToolbar* /*aToolbar*/ ) - { - if ( aResourceId == R_PHONEUI_TOOLBAR ) - { - if ( !iDtmfDialerVisible ) - { - UpdateToolbar(); - } - else - { - // initialize toolbar for dtmf dialer - // - // Show - iToolbar->HideItem( EPhoneCmdDtmfOk, EFalse, EFalse ); - iToolbar->HideItem( EPhoneDialerCmdContacts, EFalse, EFalse ); - - // Hide - iToolbar->HideItem( EPhoneNumberAcqCmdSendCommand, ETrue, EFalse ); - iToolbar->HideItem( EPhoneDialerCmdLog, ETrue, EFalse ); - iToolbar->HideItem( EPhoneNumberAcqCmdAddToContacts, ETrue - , EFalse ); - - // Dimming - iToolbar->SetItemDimmed( EPhoneDialerCmdContacts, ETrue, EFalse ); - iToolbar->SetItemDimmed( EPhoneCmdDtmfOk, ETrue, EFalse ); - } - } - } -// --------------------------------------------------------------------------- -// IsDTMFDialerVisible -// --------------------------------------------------------------------------- -// -TBool CPhoneDialerController::IsDTMFDialerVisible() const - { - return iDtmfDialerVisible; - } - - -// --------------------------------------------------------------------------- -// GetTooltipText -// -// Tooltip texts for toolbar buttons -// --------------------------------------------------------------------------- -// -void CPhoneDialerController::GetTooltipTextL( TInt aCommandId, HBufC*& aText ) - { - TInt resourceId = 0; - switch( aCommandId ) - { - case EPhoneDialerCmdLog: - resourceId = R_PHONEUI_DIALER_TOOLTIP_RECENT_CALLS; - break; - - case EPhoneNumberAcqCmdSendCommand: - resourceId = R_PHONEUI_DIALER_TOOLTIP_CALL; - break; - - case EPhoneCmdDtmfOk: - resourceId = R_PHONEUI_DIALER_TOOLTIP_SEND; - break; - - case EPhoneDialerCmdContacts: - resourceId = R_PHONEUI_DIALER_TOOLTIP_CONTACTS; - break; - - case EPhoneNumberAcqCmdAddToContacts: - resourceId = R_PHONEUI_DIALER_TOOLTIP_ADD_TO_CONTACTS; - break; - - case EPhoneDialerCmdClear: - resourceId = R_PHONEUI_DIALER_TOOLTIP_CLEAR; - break; - default: - aText = KNullDesC().Alloc(); - break; - } - - if( resourceId ) - { - aText = StringLoader::LoadL( resourceId, &iCoeEnv ); - } - - } // --------------------------------------------------------------------------- // SetServiceCodeFlagL // -// Change call button tooltip text between 'Send' or 'Call' +// The flag rules wether green key is called "Send" or "Call" // // --------------------------------------------------------------------------- // -void CPhoneDialerController::SetServiceCodeFlagL( +void CPhoneDialerController::SetServiceCodeFlag( TPhoneCommandParam* aCommandParam ) { - // Check is the given parameter valid if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) - { - TInt resourceId = 0; + { TPhoneCmdParamBoolean* serviceCodeFlag = static_cast( aCommandParam ); - // Sanity check - if( serviceCodeFlag->Boolean() == iServiceCodeFlag ) - { - return; - } - // Get the toolbar button control - CAknButton* button = static_cast - ( iToolbar->ControlOrNull( EPhoneNumberAcqCmdSendCommand) ); - - CAknButtonState* state = button->State(); - if ( serviceCodeFlag->Boolean() ) - { - iServiceCodeFlag = ETrue; - resourceId = R_PHONEUI_DIALER_TOOLTIP_SEND; - } - else - { - iServiceCodeFlag = EFalse; - resourceId = R_PHONEUI_DIALER_TOOLTIP_CALL; - } - - if( resourceId ) - { - // Change text - HBufC* tooltipText = StringLoader::LoadL( resourceId, - CCoeEnv::Static() ); - CleanupStack::PushL( tooltipText ); - state->SetHelpTextL( *tooltipText ); - CleanupStack::PopAndDestroy( tooltipText ); - } + iServiceCodeFlag = serviceCodeFlag->Boolean(); } } // --------------------------------------------------------------------------- -// ShowToolbar +// SetEasyDialingController +// --------------------------------------------------------------------------- // +void CPhoneDialerController::SetEasyDialingController( + CPhoneEasyDialingController* aController ) + { + iEasyDialingController = aController; + } + +// --------------------------------------------------------------------------- +// CbaResourceId // --------------------------------------------------------------------------- // -void CPhoneDialerController::ShowToolbar() +EXPORT_C TInt CPhoneDialerController::CbaResourceId() const + { + return KErrNotFound; + } + +// --------------------------------------------------------------------------- +// MenuResourceId +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CPhoneDialerController::MenuResourceId() const { - if ( iToolbar ) - { - if ( iToolbar->IsToolbarDisabled() ) - { - TRAP_IGNORE(iToolbar->DisableToolbarL( EFalse )); - } - iToolbar->HideItemsAndDrawOnlyBackground( EFalse ); - iToolbar->SetToolbarVisibility( ETrue, EFalse ); - } + return KErrNotFound; + } + +// --------------------------------------------------------------------------- +// NumberEntryPromptTextL +// --------------------------------------------------------------------------- +// +EXPORT_C const TDesC& CPhoneDialerController::NumberEntryPromptTextL() + { + return KNullDesC; } // --------------------------------------------------------------------------- -// HideToolbar -// +// GetButtonData // --------------------------------------------------------------------------- // -void CPhoneDialerController::HideToolbar() +EXPORT_C TInt CPhoneDialerController::GetButtonData( TButtonIndex aIndex, + RPointerArray& aData ) const { - if ( iToolbar ) + TInt err = KErrNone; + + const TLocalButtonData* dataTable = NULL; + TInt count = 0; + + // Select correct data table + switch ( aIndex ) { - if( iToolbar->IsShown() ) + case ECallButton: + dataTable = KCallButtonDataTable; + count = KCallButtonDataTableCount; + break; + case EPhonebookButton: + dataTable = KPhonebookButtonDataTable; + count = KPhonebookButtonDataTableCount; + break; + case EClearButton: + dataTable = KClearButtonDataTable; + count = KClearButtonDataTableCount; + break; + default: + break; + } + + // Create data from the table + if ( dataTable ) + { + // Construct MIF file path + TFileName mifPath( KDriveZ ); + mifPath.Append( KDC_APP_BITMAP_DIR ); + mifPath.Append( KPhoneMifFileName ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + for ( TInt i = 0 ; i < count ; ++i ) { - iToolbar->HideItemsAndDrawOnlyBackground( ETrue ); + CButtonData* btnData = NULL; + TRAP( err, btnData = CreateButtonDataL( dataTable[i], skin, mifPath ) ); + if ( !err ) + { + err = aData.Append( btnData ); + } + if ( err ) + { + // free all memory and stop here if something went wrong + delete btnData; + aData.ResetAndDestroy(); + i = count; + } } - else if ( iToolbar->IsToolbarDisabled() ) - { - TRAP_IGNORE(iToolbar->DisableToolbarL( EFalse )); - iToolbar->HideItemsAndDrawOnlyBackground( ETrue ); - iToolbar->SetToolbarVisibility( ETrue, EFalse ); - } - } + } + return err; + } + +// --------------------------------------------------------------------------- +// SetNumberEntryEmptyIsEmpty +// --------------------------------------------------------------------------- +// +EXPORT_C void CPhoneDialerController::SetNumberEntryIsEmpty( TBool aEmpty ) + { + iNumberAvailable = !aEmpty; } // --------------------------------------------------------------------------- -// ShowCustomizedDialerL -// -// Sets custom dialer buttons visible -// +// ButtonState // --------------------------------------------------------------------------- // -void CPhoneDialerController::ShowCustomizedDialerL( - MPhoneDialerController* aCustomController ) - { - if ( aCustomController ) +EXPORT_C TInt CPhoneDialerController::ButtonState( TButtonIndex aIndex ) const + { + TInt state( KErrNotFound ); + // Figure out correct state for each key + switch ( aIndex ) { - // Hide all buttons except clear button - for ( TInt i = 0; i < KNumberOfButtons; i++ ) + case ECallButton: { - if ( bArray[ i ].iCommandId != EPhoneDialerCmdClear ) + if ( !iNumberAvailable ) + { + // Show "Recent calls" when no number available + state = ECallButtonLogState; + } + else if ( iServiceCodeFlag && !EasyDialingFocused() ) { - iToolbar->HideItem( bArray[ i ].iCommandId, ETrue, EFalse ); + // Show "Send" if service code entered and contact list + // is not focused. + state = ECallButtonSendState; + } + else + { + // Show "Call" in all other cases + state = ECallButtonCallState; } } - - aCustomController->InitializeL( *iToolbar ); - iBubbleWrapper.SetNumberEntryPromptText( - aCustomController->NumberEntryPromptTextL() ); - aCustomController->ShowButtons( ETrue ); + break; + case EPhonebookButton: + { + if ( !iNumberAvailable ) + { + state = EPhonebookButtonContactsState; + } + else + { + state = EPhonebookButtonAddContactState; + } + } + break; + case EClearButton: + { + state = EClearButtonClearState; + } + break; + default: + break; } - iCustomizedDialer = aCustomController; + return state; } // --------------------------------------------------------------------------- -// HideCustomizedDialerL -// -// Hides custom dialer buttons -// +// ButtonDimmed // --------------------------------------------------------------------------- // -void CPhoneDialerController::HideCustomizedDialer() - { - iCustomizedDialer->ShowButtons( EFalse ); - iBubbleWrapper.SetNumberEntryPromptText( KNullDesC ); - iCustomizedDialer = NULL; +EXPORT_C TBool CPhoneDialerController::ButtonDimmed( TButtonIndex aIndex ) const + { + TBool dimmed = EFalse; + // Figure out correct state for each key + switch ( aIndex ) + { + case ECallButton: + { + if ( iNumberAvailable ) + { + // Dim send key if emergency call is active. + // Do not dim send key if emergency call is not active, + // user must be able to make an emergency call whether + // security mode is enabled or disabled. + dimmed = EmergencyCallActive(); + } + else + { + // If there's no number available in dialer, we should dim + // send key if security mode is enabled. + // User cannot launch logs application. + dimmed = iRestrictedDialer; + } + } + break; + + case EPhonebookButton: + dimmed = iRestrictedDialer; + break; + case EClearButton: + dimmed = !iNumberAvailable; + break; + default: + break; + } + return dimmed; } // --------------------------------------------------------------------------- -// IsCustomizedDialerVisible +// EasyDialingAllowed // --------------------------------------------------------------------------- // -TBool CPhoneDialerController::IsCustomizedDialerVisible() const +EXPORT_C TBool CPhoneDialerController::EasyDialingAllowed() const { - return ( NULL != iCustomizedDialer ); + return !iRestrictedDialer && !EmergencyCallActive(); } // --------------------------------------------------------------------------- -// CustomizedCbaResourceId +// EmergencyCallActive // --------------------------------------------------------------------------- // -TInt CPhoneDialerController::CustomizedCbaResourceId() const +EXPORT_C TBool CPhoneDialerController::EmergencyCallActive() const { - TInt resourceId = KErrNotFound; - if ( iCustomizedDialer ) + TBool ret = EFalse; + if ( iBubbleWrapper ) { - resourceId = iCustomizedDialer->CbaResourceId(); + TPhoneCmdParamCallStateData callStateData; + callStateData.SetCallState( EPEStateConnected ); + iBubbleWrapper->GetCallIdByState( &callStateData ); + TInt connected = callStateData.CallId(); + ret = ( connected == KEmergencyCallId ); } - return resourceId; + return ret; } // --------------------------------------------------------------------------- -// CustomizedMenuResourceId +// EasyDialingFocused +// --------------------------------------------------------------------------- +// +TBool CPhoneDialerController::EasyDialingFocused() const + { + TBool edFocused = EFalse; + if ( iEasyDialingController ) + { + TInt commandResponse( EPhoneViewResponseFailed ); + TRAP_IGNORE( commandResponse = iEasyDialingController->HandleCommandL( + EPhoneViewGetEasyDialingInFocusStatus) ); + edFocused = ( commandResponse == EPhoneViewResponseSuccess ); + } + return edFocused; + } + +// --------------------------------------------------------------------------- +// CreateButtonDataL // --------------------------------------------------------------------------- // -TInt CPhoneDialerController::CustomizedMenuResourceId() const +MPhoneDialerController::CButtonData* CPhoneDialerController::CreateButtonDataL( + const TLocalButtonData& aSourceData, + MAknsSkinInstance* aSkin, + const TDesC& aMifFile ) const { - TInt resourceId = KErrNotFound; - if ( iCustomizedDialer ) - { - resourceId = iCustomizedDialer->MenuResourceId(); - } - return resourceId; + // Create tooltip text + HBufC* tooltip = StringLoader::LoadLC( aSourceData.iTooltipResourceId ); + + // Create icon + TAknsItemID skinId = { EAknsMajorGeneric, aSourceData.iSkinItemIdMinor }; + CGulIcon* icon = AknsUtils::CreateGulIconL( aSkin, skinId, aMifFile, + aSourceData.iBitmapIndex, aSourceData.iBitmapMaskIndex ); + CleanupStack::PushL( icon ); + + // Create button data object + CButtonData* buttonData = + new ( ELeave ) CButtonData( aSourceData.iCommandId, icon, tooltip ); + CleanupStack::Pop( icon ); + CleanupStack::Pop( tooltip ); + + return buttonData; } // END diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonedialerview.cpp --- a/phoneapp/phoneuiview/src/cphonedialerview.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonedialerview.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 - 2010 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" @@ -57,9 +57,6 @@ EPhoneBgLayersN = 1 }; -#define LSC_VARIETY 0 -#define PRT_VARIETY 6 - // ================= MEMBER FUNCTIONS ======================= // ----------------------------------------------------------------------------- @@ -68,8 +65,7 @@ // might leave. // ----------------------------------------------------------------------------- // -CPhoneDialerView::CPhoneDialerView() : - iSecurityMode ( EFalse ) +CPhoneDialerView::CPhoneDialerView() { } @@ -88,7 +84,7 @@ CreateWindowL(); DrawableWindow()->SetPointerGrab( ETrue ); - SetRect( aRect ); + SetComponentsToInheritVisibility( ETrue ); } // ----------------------------------------------------------------------------- @@ -214,78 +210,25 @@ // CPhoneDialerView::SetRect // ----------------------------------------------------------------------------- // -void CPhoneDialerView::SetRect( const TRect &aRect ) +void CPhoneDialerView::SetRect( const TRect& aRect ) { - __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneDialerView::SetRect()"); - if ( !AknLayoutUtils::PenEnabled() ) - { - CCoeControl::SetRect( aRect ); - } - else + CCoeControl::SetRect( aRect ); + iControlRect = Rect(); + // Forward size change to the control only if we are visible. Otherwise the + // control rect is just srored and relayed to control when we do become + // visible. This way we can avoid unnecessary relayout work for example when + // status bar size changes or screen is rotated while in-call ui is active. + if ( IsVisible() ) { - if ( iSecurityMode ) - { - // In security mode aRect is ok. - CCoeControl::SetRect( aRect ); - iControlRect = Rect(); - } - else - { - TAknLayoutRect viewRect; - - TRect screenRect; - AknLayoutUtils::LayoutMetricsRect( - AknLayoutUtils::EScreen, - screenRect ); - - // dialer view - viewRect.LayoutRect( - screenRect, - TAknWindowComponentLayout::Compose( - AknLayoutScalable_Avkon::application_window( 0 ), - AknLayoutScalable_Avkon::main_pane( 7 ) ) ); - - CCoeControl::SetRect( viewRect.Rect() ); - - TInt variety ( PRT_VARIETY ) ; // portrait - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - { - variety = LSC_VARIETY; - } - - // reduce toolbar - TAknLayoutRect toolbarRect; - toolbarRect.LayoutRect( - screenRect, - TAknWindowComponentLayout::Compose( - AknLayoutScalable_Avkon::application_window( 0 ), - AknLayoutScalable_Avkon::area_side_right_pane( variety ) ) ); - - if ( toolbarRect.Rect().Intersects( viewRect.Rect() ) ) - { - iControlRect = Rect(); - if ( variety == PRT_VARIETY ) // portrait - { - iControlRect.iBr.iY -= toolbarRect.Rect().Height(); - } - else - { - iControlRect.iBr.iX -= toolbarRect.Rect().Width(); - } - } - else - { - iControlRect = Rect(); - } - } - } + UpdateControlRect(); + } } // ----------------------------------------------------------------------------- // CPhoneDialerView::Draw // ----------------------------------------------------------------------------- // -void CPhoneDialerView::Draw( const TRect& aRect ) const +void CPhoneDialerView::Draw( const TRect& aRect ) const { __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneDialerView::Draw()"); TRect rect = Rect(); @@ -296,8 +239,7 @@ MAknsSkinInstance* skin = AknsUtils::SkinInstance(); MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - if ( iSecurityMode || - !AknsDrawUtils::Background( skin, cc, this, gc, aRect ) ) + if ( !AknsDrawUtils::Background( skin, cc, this, gc, aRect ) ) { gc.SetPenStyle(CGraphicsContext::ENullPen); gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); // 0 for white @@ -343,8 +285,6 @@ iBgContext->SetLayerImage( EPhoneBgFirstLayer, KAknsIIDQsnBgScreen ); iBgContext->SetParentPos( screen.iTl ); iBgContext->SetLayerRect( EPhoneBgFirstLayer, screen ) ; - - UpdateControlRect(); } // ----------------------------------------------------------------------------- @@ -384,10 +324,7 @@ } else { - if ( iControlRect != iControl->Rect() ) - { - iControl->SetRect( iControlRect ); - } + iControl->SetRect( iControlRect ); } } } @@ -408,25 +345,19 @@ } // ----------------------------------------------------------------------------- -// CPhoneDialerView::SetSecurityMode +// CPhoneDialerView::MakeVisible // ----------------------------------------------------------------------------- // -void CPhoneDialerView::SetSecurityMode ( TBool aStatus ) +void CPhoneDialerView::MakeVisible( TBool aVisible ) { - if ( iSecurityMode != aStatus ) + if ( aVisible ) { - iSecurityMode = aStatus; - SizeChanged(); + // Deferred control rect size update before view becomes visible. + // We don't relay size changes to our control while view is invisible + // to avoid unnecessary layout recalculations. + UpdateControlRect(); } - } - -// ----------------------------------------------------------------------------- -// CPhoneDialerView::IsSecurityMode -// ----------------------------------------------------------------------------- -// -TBool CPhoneDialerView::IsSecurityMode() - { - return iSecurityMode; + CCoeControl::MakeVisible( aVisible ); } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonedtmfdialercontroller.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/cphonedtmfdialercontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,208 @@ +/* +* Copyright (c) 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: Controller for DTMF mode of Dialer +* +*/ + +#include +#include +#include +#include +#include +#include "phoneappcommands.hrh" +#include "cphonedtmfdialercontroller.h" +#include "cphonemainresourceresolver.h" +#include "phonerssbase.h" + +_LIT ( KPhoneMifFileName, "phoneui.mif" ); + +const CPhoneDialerController::TLocalButtonData KSendDtmfButtonData = + { + EPhoneCmdDtmfOk, + EAknsMinorGenericQgnIndiButtonSendDtmf, + EMbmPhoneuiQgn_indi_button_send_dtmf, + EMbmPhoneuiQgn_indi_button_send_dtmf_mask, + R_PHONEUI_DIALER_TOOLTIP_SEND + }; + +// --------------------------------------------------------------------------- +// CPhoneDtmfDialerController +// --------------------------------------------------------------------------- +// +CPhoneDtmfDialerController::CPhoneDtmfDialerController( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ) : + CPhoneDialerController( aBubbleWrapper, aCoeEnv ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// ~CPhoneDtmfDialerController +// --------------------------------------------------------------------------- +// +CPhoneDtmfDialerController::~CPhoneDtmfDialerController() + { + delete iPromptText; + } + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +CPhoneDtmfDialerController* CPhoneDtmfDialerController::NewLC( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ) + { + CPhoneDtmfDialerController* self = + new (ELeave) CPhoneDtmfDialerController( aBubbleWrapper, aCoeEnv ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CPhoneDtmfDialerController* CPhoneDtmfDialerController::NewL( + CPhoneBubbleWrapper* aBubbleWrapper, + CCoeEnv& aCoeEnv ) + { + CPhoneDtmfDialerController* self = + CPhoneDtmfDialerController::NewLC( aBubbleWrapper, aCoeEnv ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CPhoneDtmfDialerController::ConstructL() + { + CPhoneDialerController::ConstructL(); + } + +// --------------------------------------------------------------------------- +// NumberEntryPromptTextL +// --------------------------------------------------------------------------- +// +const TDesC& CPhoneDtmfDialerController::NumberEntryPromptTextL() + { + if ( !iPromptText ) + { + // Load prompt text when it's needed for the first time. + // It can't be loaded in constructor as resource resolver + // is not yet properly set up at that time. + TInt resourceId = + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneDtmfDialerNumberEntryPromptText ); + iPromptText = StringLoader::LoadL( resourceId, &iCoeEnv ); + } + if ( iPromptText ) + { + return *iPromptText; + } + return KNullDesC; + } + +// --------------------------------------------------------------------------- +// GetButtonDataL +// --------------------------------------------------------------------------- +// +TInt CPhoneDtmfDialerController::GetButtonData( TButtonIndex aIndex, RPointerArray& aData ) const + { + TInt err = KErrNone; + + if ( aIndex == ECallButton ) + { + TFileName mifPath( KDriveZ ); + mifPath.Append( KDC_APP_BITMAP_DIR ); + mifPath.Append( KPhoneMifFileName ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CButtonData* btnData = NULL; + TRAP( err, btnData = CreateButtonDataL( KSendDtmfButtonData, skin, mifPath ) ); + if ( !err ) + { + err = aData.Append( btnData ); + if ( err ) + { + // append failed, delete created data to avoid memory leak + delete btnData; + } + } + } + else if ( aIndex == EClearButton ) + { + // let base class handle backspace + err = CPhoneDialerController::GetButtonData( aIndex, aData ); + } + else + { + // leave Phonebook button empty + } + return err; + } + +// --------------------------------------------------------------------------- +// ButtonState +// --------------------------------------------------------------------------- +// +TInt CPhoneDtmfDialerController::ButtonState( TButtonIndex aIndex ) const + { + TInt state = KErrNotFound; + // Call button has one only one state, phonebook button has no states. + // Clear button is handled by the base class. + if ( aIndex == ECallButton ) + { + state = 0; + } + else if ( aIndex == EClearButton ) + { + state = CPhoneDialerController::ButtonState( aIndex ); + } + return state; + } + +// --------------------------------------------------------------------------- +// GetButtonDimmed +// --------------------------------------------------------------------------- +// +TBool CPhoneDtmfDialerController::ButtonDimmed( TButtonIndex aIndex ) const + { + TBool dimmed = ETrue; + // Call button is dimmed while number entry is empty. Phonebook button + // is empty and always dimmed. Clear button is handled by the base class. + if ( aIndex == ECallButton ) + { + dimmed = !iNumberAvailable; + } + else if ( aIndex == EClearButton ) + { + dimmed = CPhoneDialerController::ButtonDimmed( EClearButton ); + } + return dimmed; + } + +// --------------------------------------------------------------------------- +// EasyDialingAllowed +// --------------------------------------------------------------------------- +// +TBool CPhoneDtmfDialerController::EasyDialingAllowed() const + { + return EFalse; + } + +// end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphoneeasydialingcontroller.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/cphoneeasydialingcontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,154 @@ +/* +* Copyright (c) 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: Class handles Easy dialing specific commands +* +*/ + +#include "cphoneeasydialingcontroller.h" + +#include "cdialer.h" +#include "tphonecommandparam.h" +#include "tphonecmdparaminteger.h" +#include "tphonecmdparamdynmenu.h" +#include "dialingextensioninterface.h" +#include "easydialingcommands.hrh" + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CPhoneEasyDialingController::CPhoneEasyDialingController +// --------------------------------------------------------------------------- +// +CPhoneEasyDialingController::CPhoneEasyDialingController( + CDialer& aDialer ) + : iDialer ( aDialer ) + { + // Get Easydialing interface. This can be NULL if easydialing is not + // present in current device configuration. + iEasyDialing = iDialer.GetEasyDialingInterface(); + } + + // --------------------------------------------------------------------------- + // CPhoneEasyDialingController::NewL + // --------------------------------------------------------------------------- + // +CPhoneEasyDialingController* CPhoneEasyDialingController::NewL( + CDialer& aDialer ) + { + return new (ELeave) CPhoneEasyDialingController( aDialer ); + } + +// --------------------------------------------------------------------------- +// CPhoneEasyDialingController::~CPhoneEasyDialingController +// --------------------------------------------------------------------------- +// +CPhoneEasyDialingController::~CPhoneEasyDialingController() + { + } + +// --------------------------------------------------------------------------- +// CPhoneEasyDialingController::ExecuteCommandL +// --------------------------------------------------------------------------- +// +void CPhoneEasyDialingController::ExecuteCommandL( + TPhoneViewCommandId aCmdId, + TPhoneCommandParam* aCommandParam ) + { + if ( iEasyDialing ) + { + switch ( aCmdId ) + { + case EPhoneViewGetEasyDialingMenuId: + { + TPhoneCmdParamInteger* paramInt = + static_cast( aCommandParam ); + paramInt->SetInteger( iEasyDialing->MenuResourceId() ); + } + break; + + case EPhoneViewGetEasyDialingCbaId: + { + TPhoneCmdParamInteger* paramInt = + static_cast( aCommandParam ); + paramInt->SetInteger( iEasyDialing->CbaResourceId() ); + } + break; + + default: + break; + } + } + } + +// --------------------------------------------------------------------------- +// CPhoneEasyDialingController::HandleCommandL +// --------------------------------------------------------------------------- +// +TPhoneViewResponseId CPhoneEasyDialingController::HandleCommandL( + TPhoneViewCommandId aCmdId ) + { + TPhoneViewResponseId viewResponse = EPhoneViewResponseFailed; + + switch ( aCmdId ) + { + // commands defined in easydialingcommands.hrh are forwarded to + // easydialing plugin + case EEasyDialingVoiceCall: + case EEasyDialingVideoCall: + case EEasyDialingSendMessage: + case EEasyDialingOpenContact: + case EEasyDialingCallHandlingActivated: + case EEasyDialingEnterKeyAction: + case EEasyDialingOn: + case EEasyDialingOff: + { + if( iEasyDialing && iEasyDialing->HandleCommandL( aCmdId ) ) + { + viewResponse = EPhoneViewResponseSuccess; + } + } + break; + + case EPhoneViewGetEasyDialingInFocusStatus: + { + if ( iEasyDialing && iEasyDialing->IsFocused() ) + { + viewResponse = EPhoneViewResponseSuccess; + } + } + break; + } + + return viewResponse; + } + +// --------------------------------------------------------------------------- +// CPhoneEasyDialingController::InitializeEasyDialingMenuL +// --------------------------------------------------------------------------- +// +TBool CPhoneEasyDialingController::InitializeEasyDialingMenuL( + TPhoneCommandParam* aCommandParam ) + { + TBool retVal( EFalse ); + if ( iEasyDialing ) + { + TPhoneCmdParamDynMenu* menu = static_cast( aCommandParam ); + + // TInt resourceId = menu->ResourceId(); + CEikMenuPane* menuPane = reinterpret_cast( menu->DynMenu() ); + + retVal = iEasyDialing->InitializeMenuPaneL( *menuPane, menu->ResourceId() ); + } + return retVal; + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonemenucontroller.cpp --- a/phoneapp/phoneuiview/src/cphonemenucontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonemenucontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -227,6 +227,12 @@ { switch( menuItemArray[ i ] ) { + case EPhoneInCallCmdAnswer: + if ( iConferenceAndWaitingVideoFlag ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + break; case EPhoneInCallCmdDialer: if ( !onScreenDialer ) { @@ -254,6 +260,10 @@ { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } + else if ( iInvalidCsPhoneNumber ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } break; case EPhoneNumberAcqCmdVideoCall: @@ -268,31 +278,44 @@ { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } + else if ( iInvalidCsPhoneNumber ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } break; case EPhoneNumberAcqCmdSendMessage: - if ( iNumberEntryEmpty ) + if ( iNumberEntryEmpty || iInvalidCsPhoneNumber || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } - break; + break; + + case EPhoneInCallCmdSendToCallerMenu: + { + if ( iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[ i ] ); + } + } + break; case EPhoneNumberAcqCmdSendCommand: - if ( !iServiceCodeFlag || iNumberEntryEmpty ) + if ( !iServiceCodeFlag || iNumberEntryEmpty || iInvalidCsPhoneNumber ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } break; case EPhoneNumberAcqCmdToggleNeAlphaMode: - if ( iAlphaMode ) + if ( iAlphaMode || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } break; case EPhoneNumberAcqCmdToggleNeNumericMode: - if ( !iAlphaMode ) + if ( !iAlphaMode || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } @@ -300,7 +323,7 @@ case EPhoneInCallCmdGoToIdle: - if ( iNEVisible ) + if ( iNEVisible || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } @@ -351,7 +374,7 @@ break; case EPhoneCallComingCmdSoftReject: - if ( !iSoftRejectFlag ) + if ( !iSoftRejectFlag || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } @@ -456,7 +479,7 @@ break; case EPhoneDialerCmdLog: { - if ( onScreenDialer && !iNumberEntryEmpty ) + if ( ( onScreenDialer && !iNumberEntryEmpty ) || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[i] ); } @@ -464,7 +487,7 @@ break; case EPhoneDialerCmdContacts: { - if ( onScreenDialer && !iNumberEntryEmpty ) + if ( ( onScreenDialer && !iNumberEntryEmpty ) || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[i] ); } @@ -473,7 +496,7 @@ case EPhoneNumberAcqCmdAddToContacts: { - if ( onScreenDialer && iNumberEntryEmpty ) + if ( ( onScreenDialer && iNumberEntryEmpty ) || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[i] ); } @@ -481,7 +504,7 @@ break; case EPhoneDialerCmdSpeedDial: { - if ( onScreenDialer && !iNumberEntryEmpty ) + if ( ( onScreenDialer && !iNumberEntryEmpty ) || iSecurityMode ) { menuPane->DeleteMenuItem( menuItemArray[i] ); } @@ -522,6 +545,26 @@ } break; + case EEasyDialingSettingsItemPlaceHolder: + { + if( !FeatureManager::FeatureSupported( KFeatureIdProductIncludesHomeScreenEasyDialing ) ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + + case EPhoneDialerCmdHelp: // Fall through + case EPhoneDialerCmdHelpDtmf: // Fall through + case EPhoneInCallCmdHelp: + { + if ( iSecurityMode ) + { + menuPane->DeleteMenuItem( menuItemArray[i] ); + } + } + break; + default: break; @@ -664,6 +707,16 @@ } // --------------------------------------------------------- +// CPhoneMenuController::SetConferenceAndWaitingVideoFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetConferenceAndWaitingVideoFlag( TBool aIsConfAndWaitingVideo ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetConferenceAndWaitingVideoFlag" ); + iConferenceAndWaitingVideoFlag = aIsConfAndWaitingVideo; + } + +// --------------------------------------------------------- // CPhoneMenuController::SetSoftRejectFlag // --------------------------------------------------------- // @@ -849,7 +902,8 @@ aResourceId == R_PHONEUI_INCOMINGCALL_MENUBAR_WITH_NUMBERENTRY || aResourceId == R_PHONEUI_INCOMINGVIDEOCALL_MENUBAR_WITH_NUMBERENTRY || aResourceId == R_PHONEUI_WAITING_LOCK_MENUBAR || - aResourceId == R_PHONEUI_TWOSINGLES_WAITING_LOCK_MENUBAR ) + aResourceId == R_PHONEUI_TWOSINGLES_WAITING_LOCK_MENUBAR || + iSecurityMode ) { iMenu->SetMenuType( CEikMenuBar::EMenuOptionsNoTaskSwapper ); } @@ -1037,6 +1091,16 @@ // CPhoneMenuController::HandlePropertyChangedL // --------------------------------------------------------- // +void CPhoneMenuController::SetSecurityMode( TBool aIsEnabled ) + { + __PHONELOG1( EBasic, EPhoneUIView, "CPhoneViewController::SetSecurityMode %d ", aIsEnabled ); + iSecurityMode = aIsEnabled; + } + +// --------------------------------------------------------- +// CPhoneMenuController::HandlePropertyChangedL +// --------------------------------------------------------- +// void CPhoneMenuController::HandlePropertyChangedL( const TUid& aCategory, const TUint aKey, @@ -1058,5 +1122,52 @@ } } - +// --------------------------------------------------------- +// CPhoneMenuController::SetInvalidCsPhoneNumberFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::SetInvalidCsPhoneNumberFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetInvalidCsPhoneNumberFlag()" ); + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* boolParam = + static_cast( aCommandParam ); + + __PHONELOG1( + EBasic, + EPhonePhoneapp, + "CPhoneMenuController::SetInvalidCsPhoneNumberFlag() - Boolean parameter = %d)", + boolParam->Boolean() ); + + iInvalidCsPhoneNumber = boolParam->Boolean(); + } + } + +// --------------------------------------------------------- +// CPhoneMenuController::GetInvalidCsPhoneNumberFlag +// --------------------------------------------------------- +// +void CPhoneMenuController::GetInvalidCsPhoneNumberFlag( + TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( + EPhoneUIView, + "CPhoneMenuController::GetInvalidCsPhoneNumberFlag()" ); + + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* boolParam = + static_cast( aCommandParam ); + + __PHONELOG1( + EBasic, + EPhonePhoneapp, + "CPhoneMenuController::GetInvalidCsPhoneNumberFlag() - Boolean return value = %d)", + boolParam->Boolean() ); + + boolParam->SetBoolean( iInvalidCsPhoneNumber ); + } + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonenote.cpp --- a/phoneapp/phoneuiview/src/cphonenote.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonenote.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -21,6 +21,8 @@ #include "phoneui.hrh" #include +#include + // ================= MEMBER FUNCTIONS ======================= // C++ default constructor can NOT contain any code, that // might leave. @@ -40,6 +42,23 @@ } // --------------------------------------------------------- +// CPhoneNote::PreLayoutDynInitL +// --------------------------------------------------------- +// +void CPhoneNote::PreLayoutDynInitL() + { + CEikButtonGroupContainer& cba = ButtonGroupContainer(); + CEikCba* eikCba = static_cast< CEikCba* >( cba.ButtonGroup() ); + + if ( eikCba ) + { + eikCba->EnableItemSpecificSoftkey( EFalse ); + } + + CAknNoteDialog::PreLayoutDynInitL(); + } + +// --------------------------------------------------------- // CPhoneNote::OfferKeyEventL // --------------------------------------------------------- // diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonenotecontroller.cpp --- a/phoneapp/phoneuiview/src/cphonenotecontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonenotecontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -40,7 +40,6 @@ #include "cphonetimer.h" #include "cphonenote.h" #include "cphonedtmfsendingnote.h" -#include "cphoneuidisablednote.h" // CONSTANTS const TInt KPhoneIntervalDivider = 100; @@ -144,13 +143,6 @@ tone = noteParam->Tone(); break; - case EPhoneNoteUIDisabled: - // Use the specified values - resourceId = noteParam->ResourceId(); - timeout = CAknNoteDialog::ENoTimeout; - tone = CAknNoteDialog::ENoTone; - break; - default: Panic( EPhoneViewCaseNotHandled ); break; @@ -161,10 +153,6 @@ { iNote = new ( ELeave ) CPhoneDtmfSendingNote( reinterpret_cast( &iNote ), *iEikEnv.EikAppUi() ); } - else if( noteParam->Type() == EPhoneNoteUIDisabled ) - { - iNote = new ( ELeave ) CPhoneUIDisabledNote( reinterpret_cast( &iNote ), *iEikEnv.EikAppUi() ); - } else { iNote = new ( ELeave ) CPhoneNote( reinterpret_cast( &iNote ), *iEikEnv.EikAppUi() ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphoneringingtoneplayerao.cpp --- a/phoneapp/phoneuiview/src/cphoneringingtoneplayerao.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphoneringingtoneplayerao.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -17,8 +17,6 @@ // INCLUDE FILES -#include "cphoneringingtoneplayerao.h" - #include #include #include @@ -33,6 +31,7 @@ #include #include +#include "cphoneringingtoneplayerao.h" #include "phoneui.pan" #include "phoneui.hrh" #include "mphoneringingtoneobserver.h" @@ -44,7 +43,6 @@ #include "tphonecmdparamringtone.h" #include "cphonepubsubproxy.h" #include "cphonecenrepproxy.h" -#include "cphonemediatorsender.h" // CONSTANTS @@ -62,7 +60,7 @@ { CPhoneRingingTonePlayerAO* self = new ( ELeave ) CPhoneRingingTonePlayerAO(); - + CleanupStack::PushL( self ); self->ConstructL(); CleanupStack::Pop( self ); @@ -75,8 +73,7 @@ // ----------------------------------------------------------------------------- // CPhoneRingingTonePlayerAO::CPhoneRingingTonePlayerAO() : - CActive( CActive::EPriorityStandard ), - iAsyncDeletePlayers( EPlayerCount ) + CActive( CActive::EPriorityStandard ) { CActiveScheduler::Add( this ); } @@ -88,16 +85,12 @@ void CPhoneRingingTonePlayerAO::ConstructL() { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConstructL()" ); - - for ( TInt i = EPlayerFirst; i <= EPlayerLast; i++ ) - { - User::LeaveIfError( - iAsyncDeletePlayers.Append( NULL ) ); - } + + // Connect to the tone server + User::LeaveIfError( iToneServer.Connect() ); // Construct timer. iTimer = CPhoneTimer::NewL(); - iTtsDelayTimer = CPhoneTimer::NewL(); // Checks if DRM extend security is needed TInt extSecNeeded = KErrNone; @@ -105,36 +98,37 @@ KCRUidMusicPlayerFeatures, KRequireDRMInPlayback, extSecNeeded ); - + iExtSecNeeded = ( ( err == KErrNone ) && extSecNeeded ) ? ETrue : EFalse; - - + iToneServer.SetExtendedSecurityNeeded( iExtSecNeeded ); + CPhoneCenRepProxy::Instance()->NotifyChangeL( KCRUidDRMHelperServer, KDRMHelperServerNotificationPassive, this ); - // Check video player configuration. iArbitraryVideoScaling = CPhoneCenRepProxy::Instance()->IsTelephonyFeatureSupported( KTelephonyLVFlagArbitraryVideoScaling ); - + // Construct the default ringing tone TBuf defaultTone; - err = CPhoneCenRepProxy::Instance()->GetString( + err = CPhoneCenRepProxy::Instance()->GetString( KCRUidProfileEngine, KProEngDefaultRingingTone, defaultTone ); if ( err == KErrNone ) { - iDefaultRingingTone = CPhoneRingingTone::NewL( defaultTone ); + iToneServer.SetDefaultRingingToneL( defaultTone ); } - ConstructPlayers(); - + // Get maximum tone file size GetMaxToneFileSizeL( iToneFileSizeLimitKB ); + + // And set the tone size limit to the tone server too + iToneServer.SetToneFileSizeLimit( iToneFileSizeLimitKB ); } // ----------------------------------------------------------------------------- @@ -144,15 +138,9 @@ CPhoneRingingTonePlayerAO::~CPhoneRingingTonePlayerAO() { Cancel(); - - iAsyncDeletePlayers.ResetAndDestroy(); - iAsyncDeletePlayers.Close(); - - CleanupPlayers(); + iToneServer.Close(); delete iTimer; - delete iTtsDelayTimer; - delete iDefaultRingingTone; delete iAudioVideoRingingTone; } @@ -165,16 +153,21 @@ { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayRingToneL()" ); - if ( aCommandParam->ParamId() == - TPhoneCommandParam::EPhoneParamIdRingTone ) + // Check that the parameter is a ringing tone + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdRingTone ) { + // Cast to get the ringing tone parameters TPhoneCmdParamRingTone* ringToneParam = static_cast( aCommandParam ); + // Get volume and ringing tone type const TInt volume = ringToneParam->Volume(); TProfileRingingType ringingType = static_cast( ringToneParam->RingingType() ); - + + // Set ringing tone file name to server + iToneServer.SetRingingToneL( ringToneParam->RingTone() ); + if ( !iAudioVideoRingingTone ) { iAudioVideoRingingTone = CPhoneRingingTone::NewL( @@ -186,7 +179,7 @@ iAudioVideoRingingTone->SetFileName( ringToneParam->RingTone() ); } - + // Caller contact text and image and image has // higher priority than video ringing tone set for caller. if ( iAudioVideoRingingTone->IsVideoRingingTone() && @@ -199,7 +192,7 @@ } else if ( iAudioVideoRingingTone->IsVideoRingingTone() && !ringToneParam->IsCallerText() ) - { + { // Play video ring tone const TBool ringToneIsPersonal = ringToneParam->Type() == EPhoneRingTonePersonal; @@ -235,64 +228,7 @@ TInt aVolume, TProfileRingingType aRingingType ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayAudioRingTone()" ); - __PHONELOG2( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::PlayAudioRingTone - aVolume(%d), aRingingType(%d)", - aVolume, - aRingingType ); - - if ( !iAudioVideoRingingTone || - !CheckAndHandleToneSizeLimit( iAudioVideoRingingTone ) ) - { - PlayDefaultTone( aVolume, aRingingType ); - } - else if ( aRingingType == EProfileRingingTypeSilent ) - { - PlaySilentTone(); - } - else if ( aRingingType == EProfileRingingTypeBeepOnce ) - { - BeepOnce( aVolume ); - } - else - { - // Construct player for line 1. - if ( !iAudioPlayer ) - { - iAudioPlayer = ConstructTonePlayer( - *iAudioVideoRingingTone, - EPlayerAudio ); - if ( !iTimer->IsActive() ) - { - // Start timer, since the player is constructed. - iTimer->After( KPhoneMaxRingingWaiting, this ); - } - } - - // Start playing. - if ( !iAudioPlayer ) - { - iTimer->Cancel(); - PlayDefaultTone( aVolume, aRingingType ); - } - else - { - __PHONELOG( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::PlayAudioRingTone - Start playing audio" ); - iVolume = aVolume; - iRingingType = aRingingType; - AddTtsPlaybackIfNeeded( aRingingType ); - iTonePlayingStatus = EAudioTonePlaying; - iAudioPlayer->Play( - ConvertRingingType( aRingingType ), - aVolume, - iTtsToneToBePlayed ); - } - } + iToneServer.PlayAudioRingTone( aVolume, aRingingType ); } // ----------------------------------------------------------------------------- @@ -301,25 +237,7 @@ // void CPhoneRingingTonePlayerAO::BeepOnce( TInt aVolume ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::BeepOnce()" ); - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::BeepOnce - aVolume(%d)", - aVolume ); - - if ( !iBeepOncePlayer ) - { - ConstructSequencePlayer( EPlayerBeepOnce ); - } - - if ( iBeepOncePlayer ) - { - __PHONELOG( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::BeepOnce - Play" ); - iTonePlayingStatus = EBeepOnce; - iBeepOncePlayer->Play( CPhoneAudioPlayer::ETypeRingingOnce, - aVolume, EFalse ); - } + iToneServer.BeepOnce( aVolume ); } // ----------------------------------------------------------------------------- @@ -328,24 +246,7 @@ // void CPhoneRingingTonePlayerAO::PlaySilentTone() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlaySilentTone()" ); - - if ( !iSilentPlayer ) - { - ConstructSequencePlayer( EPlayerSilent ); - } - - __ASSERT_DEBUG( iSilentPlayer, Panic( EPhoneViewGeneralError ) ); - - if ( iSilentPlayer ) - { - __PHONELOG( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::PlaySilentTone - play" ); - iTonePlayingStatus = ESilentTonePlaying; - iSilentPlayer->Play( CPhoneAudioPlayer::ETypeRinging, 0, EFalse ); - } + iToneServer.PlaySilentTone(); } // ----------------------------------------------------------------------------- @@ -354,19 +255,7 @@ // void CPhoneRingingTonePlayerAO::PlayUnsecureVoIPTone() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayUnsecureVoIPTone()" ); - if ( !iUnsecureVoIPTonePlayer ) - { - ConstructSequencePlayer( EPlayerUnsecureVoIP ); - } - __ASSERT_DEBUG( iUnsecureVoIPTonePlayer, Panic( EPhoneViewGeneralError ) ); - - if ( iUnsecureVoIPTonePlayer ) - { - iTonePlayingStatus = EUnsecureVoIPTonePlaying; - iUnsecureVoIPTonePlayer->Play( CPhoneAudioPlayer::ETypeRingingOnce, - KPhoneDefaultVolume, EFalse ); - } + iToneServer.PlayUnsecureVoIPTone(); } // ----------------------------------------------------------------------------- @@ -376,18 +265,19 @@ void CPhoneRingingTonePlayerAO::MuteRingingToneOnAnswer() { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::MuteRingingToneOnAnswer()" ); - - if ( iVideoPlayer && iTonePlayingStatus == EVideoTonePlaying || - iTonePlayingStatus == EPersonalVideoTonePlaying ) + + if ( iVideoPlayer && + ( iTonePlayingStatus == EVideoTonePlaying || + iTonePlayingStatus == EPersonalVideoTonePlaying ) ) { // Mute the video audio iVideoPlayer->MuteVideoRingTone(); iTonePlayingStatus = ESilentVideoTonePlaying; iVolume = 0; } - else + else if ( iTonePlayingStatus != ESilentVideoTonePlaying ) { - DoMuteRingingTone(); + iToneServer.MuteRingingTone(); } } @@ -398,16 +288,17 @@ void CPhoneRingingTonePlayerAO::MuteRingingTone() { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::MuteRingingTone()" ); - - if ( iVideoPlayer && iTonePlayingStatus == EVideoTonePlaying || - iTonePlayingStatus == EPersonalVideoTonePlaying ) + + if ( iVideoPlayer && + ( iTonePlayingStatus == EVideoTonePlaying || + iTonePlayingStatus == EPersonalVideoTonePlaying ) ) { // Mute the video audio iVideoPlayer->MuteVideoRingTone(); iTonePlayingStatus = ESilentVideoTonePlaying; iVolume = 0; } - else + else if ( iTonePlayingStatus != ESilentVideoTonePlaying ) { StopPlaying(); } @@ -421,104 +312,17 @@ { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::StopPlaying()" ); - iTtsToneToBePlayed = EFalse; - iTTsTimeOutCounter = 0; - iTtsDelayTimer->Cancel(); - if ( iTtsPlayer ) - { - iTtsPlayer->StopPlaying(); - delete iTtsPlayer; - iTtsPlayer = NULL; - } - iTimer->Cancel(); + // Stop all playback - switch( iTonePlayingStatus ) + iToneServer.StopPlaying(); + + if ( iVideoPlayer ) { - case EAudioTonePlaying: - if( iAudioPlayer ) - { - // Commented stopping out, since with this, the screen is jammed - // when REComSession::FinalClose() is reached in - // CPhoneAudioPlayer's destructor. - // Audio player is stopped anyway in its destructor. - // Fixes EKKI-7WYG2G and JKAN-7XNGQU. - // iAudioPlayer->StopPlaying(); - delete iAudioPlayer; - iAudioPlayer = NULL; - } - break; - case EDefaultTonePlaying: - if ( iDefaultPlayer ) - { - iDefaultPlayer->StopPlaying(); - delete iDefaultPlayer; - iDefaultPlayer = NULL; - } - break; - case EBeepOnce: - if( iBeepOncePlayer ) - { - iBeepOncePlayer->StopPlaying(); - delete iBeepOncePlayer; - iBeepOncePlayer = NULL; - } - break; - case EBackupTonePlaying: - if( iBackupPlayer ) - { - iBackupPlayer->StopPlaying(); - } - break; - case ESilentTonePlaying: - if( iSilentPlayer ) - { - iSilentPlayer->StopPlaying(); - delete iSilentPlayer; - iSilentPlayer = NULL; - } - break; - case EUnsecureVoIPTonePlaying: - if( iUnsecureVoIPTonePlayer ) - { - iUnsecureVoIPTonePlayer->StopPlaying(); - delete iUnsecureVoIPTonePlayer; - iUnsecureVoIPTonePlayer = NULL; - } - break; - case EVideoTonePlaying: // video ringing tone - case EPersonalVideoTonePlaying: - case ESilentVideoTonePlaying: - if ( iBeepOncePlayer != NULL ) - { - iBeepOncePlayer->StopPlaying(); - delete iBeepOncePlayer; - iBeepOncePlayer = NULL; - } - - if ( iSilentPlayer != NULL ) - { - iSilentPlayer->StopPlaying(); - delete iSilentPlayer; - iSilentPlayer = NULL; - } - if ( iVideoPlayer ) - { - iVideoPlayer->StopVideoRingTone(); - } - if ( iAudioVideoRingingTone ) - { - delete iAudioVideoRingingTone; - iAudioVideoRingingTone = NULL; - } - break; - case EIdle: - // Do nothing here. - return; - default: - Panic( EPhoneViewCaseNotHandled ); - break; + iVideoPlayer->StopVideoRingTone(); } + iTimer->Cancel(); + iTonePlayingStatus = EIdle; } @@ -531,275 +335,7 @@ TInt aVolume, TProfileRingingType aRingingType ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayTtsTone()" ); - __PHONELOG2( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayTtsTone - aVolume(%d), aRingingType(%d)", - aVolume, aRingingType ); - - if ( iTtsPlayer ) - { - delete iTtsPlayer; - iTtsPlayer = NULL; - } - - //Set ringingtype for Tts. - iTtsRingingType = aRingingType; - iTtsVolume = aVolume; - - // TTS should be a bit louder, than main component. - // No need to check for overflows, they are handled in SET_PHONE_VOLUME macro. - - TPtrC ttsHeader( KPhoneTtsHeader ); - HBufC* preparedString = - HBufC::New( aTextToSay.Length() + ttsHeader.Length() ); - - if ( preparedString ) - { - TPtr pPreparedString = preparedString->Des(); - pPreparedString.Append( ttsHeader ); - pPreparedString.Append( aTextToSay ); - - __PHONELOG1( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::PlayTtsTone - about to say %S", - &pPreparedString ); - - TRAPD( - error, - iTtsPlayer = CPhoneAudioPlayer::NewTtsL( - *preparedString, - KAudioPriorityPhoneCall, - KAudioPrefTextToSpeechCallHardCoded, - *this, - EPlayerTts ) ); - if( error == KErrNone ) - { - // To be played when default or personal tone will be played - iTtsToneToBePlayed = ETrue; - } - __PHONELOG2( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::PlayTtsTone - error(%d), iTtsPhoneToBePlayed(%d)", - error, - iTtsToneToBePlayed ); - - delete preparedString; - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::HandleAudioPlayerError -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::HandleAudioPlayerError( - TPhoneAudioPlayerErrorEvent /*aEvent*/, - TInt aError, - TInt /*aId*/ ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleAudioPlayerError()" ); - // This is called from CPhoneAudioPlayer - we do not - // want to delete instances from which this method - // is called. - - __PHONELOG1( EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::HandleAudioPlayerError - error (%d)", - aError ); - - const TBool deleteAll = ( aError == KErrServerTerminated ); - - if ( deleteAll ) - { - // KErrServerTerminated is considered as fatal error. So we - // need to delete everything. - - for ( TInt i = EPlayerFirst; i <= EPlayerLast; i++ ) - { - DeletePlayerAsync( static_cast< TPlayerId >( i ) ); - } - - // Now all member audio players point to NULL, except - // those players in iAsyncDeletePlayers. Recreate - // players. - - ConstructPlayers(); // Ignore error code. - } - - iTimer->Cancel(); - DoHandlePlayerError( !deleteAll, EFalse ); - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::HandleAudioPlayerInitComplete -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::HandleAudioPlayerInitComplete( TInt aId ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleAudioPlayerInitComplete()" ); - // This is called from CPhoneAudioPlayer - we do not - // want to delete instances from which this method - // is called. - - if ( iTonePlayingStatus == EAudioTonePlaying && aId == EPlayerAudio || - iTonePlayingStatus == EDefaultTonePlaying && aId == EPlayerDefault ) - { - iTimer->Cancel(); - } - - if( iTtsToneToBePlayed && ( aId != EPlayerTts ) ) - { - // Start TTS timer just before "normal ringtone component" starts - // playing, i.e. after init completed. - if ( iTtsDelayIndex < iTtsDelaysCount ) - { - if ( !iTtsDelayTimer->IsActive() ) - { - // There are TTS iterations to be played yet. - iTtsDelayTimer->After( - KPhoneTtsDelays[iTtsDelayIndex], - TCallBack( HandleTtsDelayTimeout, this ) ); - } - } - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::HandlePlayingComplete -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::HandlePlayingComplete( TInt aId ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete()" ); - // This is called from CPhoneAudioPlayer - we do not - // want to delete instances from which this method - // is called. - - __PHONELOG2( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::HandlePlayingComplete - aId(%d), iRingingType(%d)", - aId, - iRingingType ); - __PHONELOG2( - EBasic, - EPhoneUIView, - "CPhoneRingingTonePlayerAO::HandlePlayingComplete - iTtsToneToBePlayed(%d), iTtsDelayIndex(%d)", - iTtsToneToBePlayed, - iTtsDelayIndex ); - - if ( aId == EPlayerTts ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - resuming after TTS" ); - - // TTS playing complete, normal tone player should volume up. - if ( ( iTtsToneToBePlayed ) && ( ++iTtsDelayIndex < iTtsDelaysCount ) ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - resuming after TTS first time" ); - //Callers name is said once. increase tone player volume. - SolveNewVolumeAndRamptime( ESaidOnce ); - - if ( !iTtsDelayTimer->IsActive() ) - { - // There are TTS iterations to be played yet. - iTtsDelayTimer->After( KPhoneTtsDelays[iTtsDelayIndex], - TCallBack( HandleTtsDelayTimeout,this ) ); - } - } - else - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - resuming after TTS second time" ); - SolveNewVolumeAndRamptime( ESaidTwice ); - } - - // No further processing. All TTS player-related events are not - // "real" ringtone playing completions. - return; - } - //Case: RingintonePlayer has completed playing with following set: ring once and - // TTS is activated - else if ( iRingingType == EProfileRingingTypeRingingOnce && - iTtsToneToBePlayed ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - ring once and TTS" ); - if ( iTtsDelayIndex < iTtsDelaysCount ) - { - ReStartRingingTonePlayer(); - //Do not destroy player yet. Return. - return; - } - } - //Case: RingintonePlayer has completed playing with following set: ringing - //and TTS is activated. We need to restart ringintoneplayer and new TTS - //iterations are required. - else if ( iRingingType == EProfileRingingTypeRinging && iTtsToneToBePlayed ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - ringing and TTS" ); - if ( iTtsDelayIndex == iTtsDelaysCount ) - { - //Case: Ringingtype is EProfileRingingTypeRinging. New TTS - //iterations are required. - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - need to restart TTS sequence" ); - //TTS has completed its iterations,set index to zero. - iTtsDelayIndex = 0; - if ( !iTtsDelayTimer->IsActive() ) - { - //Restart TTS sequence - iTtsDelayTimer->After( - KPhoneTtsDelays[iTtsDelayIndex], - TCallBack( HandleTtsDelayTimeout, this ) ); - } - } - - ReStartRingingTonePlayer(); - //Do not destroy player yet. Return - return; - } - - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandlePlayingComplete - delete player - iTonePlayingStatus(%d)", - iTonePlayingStatus ); - switch( iTonePlayingStatus ) - { - case EAudioTonePlaying: - DeletePlayerAsync( EPlayerAudio ); - iAudioPlayer = NULL; - break; - - case EDefaultTonePlaying: - DeletePlayerAsync( EPlayerDefault ); - iDefaultPlayer = NULL; - break; - - case ESilentTonePlaying: - DeletePlayerAsync( EPlayerSilent ); - iSilentPlayer = NULL; - break; - - case EUnsecureVoIPTonePlaying: - DeletePlayerAsync( EPlayerUnsecureVoIP ); - iUnsecureVoIPTonePlayer = NULL; - break; - - case EBeepOnce: - DeletePlayerAsync( EPlayerBeepOnce ); - iBeepOncePlayer = NULL; - break; - - case EVideoTonePlaying: - case EPersonalVideoTonePlaying: - DeletePlayerAsync( EPlayerBeepOnce ); - iBeepOncePlayer = NULL; - return; // beep once + video - - case EBackupTonePlaying: - break; - - default: - Panic( EPhoneViewCaseNotHandled ); - break; - } - - iTonePlayingStatus = EIdle; + iToneServer.PlayTtsTone( aTextToSay, aVolume, aRingingType ); } // ----------------------------------------------------------------------------- @@ -812,76 +348,11 @@ // Guarding timer for startup has expired if ( iTonePlayingStatus == EVideoTonePlaying || - iTonePlayingStatus == ESilentVideoTonePlaying || - iTonePlayingStatus == EPersonalVideoTonePlaying ) - { - iVideoPlayer->CancelVideoRingTone(); // close video ringtone display - PlayDefaultTone( iVolume, iRingingType ); - } - else - { - // Start new audio player synchronously. - DoHandlePlayerError( ETrue, ETrue ); - } - - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::DoHandlePlayerError -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::DoHandlePlayerError( - TBool aDelete, - TBool aSync ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::DoHandlePlayerError()" ); - switch ( iTonePlayingStatus ) + iTonePlayingStatus == ESilentVideoTonePlaying || + iTonePlayingStatus == EPersonalVideoTonePlaying ) { - case EAudioTonePlaying: - if ( aDelete ) - { - if ( aSync ) - { - delete iAudioPlayer; - } - else - { - DeletePlayerAsync( EPlayerAudio ); - } - - iAudioPlayer = NULL; - } - -#ifdef __WINS__ - PlayAudioRingTone( iVolume, iRingingType ); - iTonePlayingStatus = EDefaultTonePlaying; -#else - PlayDefaultTone( iVolume, iRingingType ); -#endif - break; - case EDefaultTonePlaying: - if ( aDelete ) - { - if ( aSync ) - { - delete iDefaultPlayer; - } - else - { - DeletePlayerAsync( EPlayerDefault ); - } - - iDefaultPlayer = NULL; - } - - PlayBackupTone( iVolume, iRingingType ); - break; - case ESilentTonePlaying: - case EBeepOnce: - case EBackupTonePlaying: - break; - default: - break; + iVideoPlayer->CancelVideoRingTone(); // close video ringtone display + PlayDefaultTone( iVolume, iRingingType ); } } @@ -893,50 +364,7 @@ TInt aVolume, TProfileRingingType aRingingType ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayDefaultTone()" ); - - if( aRingingType == EProfileRingingTypeSilent || - aRingingType == EProfileRingingTypeBeepOnce ) - { - return; - } - - if ( !iDefaultRingingTone ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayDefaultTone - default tone does not exist, play backup..." ); - PlayBackupTone( aVolume, aRingingType ); - return; - } - - // Construct player. - if ( !iDefaultPlayer ) - { - iDefaultPlayer = ConstructTonePlayer( - *iDefaultRingingTone, - EPlayerDefault ); - if ( !iTimer->IsActive() ) - { - iTimer->After( KPhoneMaxRingingWaiting, this ); - } - } - - // Start playing. - if ( !iDefaultPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayDefaultTone - player not constructed, play backup..." ); - iTimer->Cancel(); - PlayBackupTone( aVolume, aRingingType ); - } - else - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayDefaultTone - play" ); - iVolume = aVolume; - iRingingType = aRingingType; - iTonePlayingStatus = EDefaultTonePlaying; - iDefaultPlayer->Play( - ConvertRingingType( aRingingType ), aVolume, iTtsToneToBePlayed ); - } - + iToneServer.PlayDefaultTone( aVolume, aRingingType ); } // ----------------------------------------------------------------------------- @@ -947,84 +375,9 @@ TInt aVolume, TProfileRingingType aRingingType ) { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayBackupTone()" ); - __ASSERT_DEBUG( iBackupPlayer, Panic( EPhoneViewGeneralError ) ); - - if ( !iBackupPlayer ) - { - ConstructPlayers(); - } - - if ( iBackupPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayBackupTone - play" ); - iTonePlayingStatus = EBackupTonePlaying; - - // Cease playing text-to-speech, if necessary - iTtsToneToBePlayed = EFalse; - iTTsTimeOutCounter = 0; - iTtsDelayTimer->Cancel(); - if ( iTtsPlayer ) - { - iTtsPlayer->StopPlaying(); - delete iTtsPlayer; - iTtsPlayer = NULL; - } - - iBackupPlayer->Play( - ConvertRingingType( aRingingType ), aVolume, EFalse ); - } + iToneServer.PlayBackupTone( aVolume, aRingingType ); } -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ConstructTonePlayer -// ----------------------------------------------------------------------------- -// -CPhoneAudioPlayer* CPhoneRingingTonePlayerAO::ConstructTonePlayer( - const CPhoneRingingTone& aRingingTone, - TInt aId ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConstructTonePlayer()" ); - return CPhoneAudioPlayer::New( - aRingingTone, - KAudioPriorityPhoneCall, - KAudioPrefIncomingCall, - *this, - aId, - iMdaServer, - aId == EPlayerDefault ? EFalse : iExtSecNeeded ); - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ConvertRingingType -// ----------------------------------------------------------------------------- -// -CPhoneAudioPlayer::TRingingType CPhoneRingingTonePlayerAO::ConvertRingingType( - TProfileRingingType aRingingType ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConvertRingingType()" ); - - CPhoneAudioPlayer::TRingingType ringingType = - CPhoneAudioPlayer::ETypeRinging; - switch ( aRingingType ) - { - case EProfileRingingTypeRinging: - ringingType = CPhoneAudioPlayer::ETypeRinging; - break; - - case EProfileRingingTypeAscending: - ringingType = CPhoneAudioPlayer::ETypeAscending; - break; - - case EProfileRingingTypeRingingOnce: - ringingType = CPhoneAudioPlayer::ETypeRingingOnce; - break; - - default: - break; - } - return ringingType; - } // ----------------------------------------------------------------------------- // CPhoneRingingTonePlayerAO::ConvertVideoRingingType @@ -1034,7 +387,7 @@ TProfileRingingType aRingingType ) { MPhoneVideoPlayer::TPlayMode playMode; - + switch ( aRingingType ) { case EProfileRingingTypeAscending: @@ -1048,223 +401,10 @@ playMode = MPhoneVideoPlayer::EPlayInLoop; break; } - + return playMode; } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ConstructPlayers -// ----------------------------------------------------------------------------- -// -TInt CPhoneRingingTonePlayerAO::ConstructPlayers() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConstructPlayers()" ); - TRAPD( err, ConstructPlayersL() ); - return err; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ConstructPlayersL -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::ConstructPlayersL() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConstructPlayersL()" ); - - // Construct players. - if ( !iMdaServer ) - { - iMdaServer = CMdaServer::NewL(); - } - - // Construct Backup player. - if ( !iBackupPlayer ) - { - TFileName defaultSoundFile( KDriveZ ); - defaultSoundFile.Append( KPhoneDefaultSoundFile ); - iBackupPlayer = CPhoneAudioPlayer::NewL( - defaultSoundFile, - KAudioPriorityPhoneCall, - KAudioPrefIncomingCall, - *this, - EPlayerBackup, - iMdaServer - ); - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ConstructSequencePlayer -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::ConstructSequencePlayer( TPlayerId aId ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConstructSequencePlayer()" ); - - // Construct players. - TRAPD( err, ConstructSequencePlayerL( aId ) ); - if ( err ) - { - __PHONELOG1( EBasic, EPhoneUIView, - "CPhoneRingingTonePlayerAO::ConstructSequencePlayer - err(%d)", err ); - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ConstructSequencePlayerL -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::ConstructSequencePlayerL( TPlayerId aId ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ConstructSequencePlayerL()" ); - // Construct beep once player - if ( aId == EPlayerBeepOnce ) - { -#ifdef __WINS__ - TParse* fp = new (ELeave) TParse(); - fp->Set( KPhoneBeepOnceSoundFile, &KDC_RESOURCE_FILES_DIR, NULL ); - TFileName fileName( fp->FullName() ); - delete fp; - - iBeepOncePlayer = CPhoneAudioPlayer::NewL( - fileName, - KAudioPriorityPhoneCall, - KAudioPrefIncomingCall, - *this, - EPlayerBeepOnce ); -#else - iBeepOncePlayer = CPhoneAudioPlayer::NewSeqL( - KPhoneBeepSequence(), - KAudioPriorityPhoneCall, - KAudioPrefIncomingCall, - *this, - EPlayerBeepOnce ); -#endif // __WINS__ - } - - // Construct Silent Player. - else if ( aId == EPlayerSilent ) - { -#ifdef __WINS__ - TParse* fp = new (ELeave) TParse(); - fp->Set( KPhoneSilentSoundFile, &KDC_RESOURCE_FILES_DIR, NULL ); - TFileName fileName( fp->FullName() ); - delete fp; - - iSilentPlayer = CPhoneAudioPlayer::NewL( - fileName, - KAudioPriorityPhoneCall, - KAudioPrefIncomingCall, - *this, - EPlayerSilent ); -#else - iSilentPlayer = CPhoneAudioPlayer::NewSeqL( - KPhoneNoSoundSequence(), - KAudioPriorityPhoneCall, - KAudioPrefIncomingCall, - *this, - EPlayerSilent ); -#endif // __WINS__ - } - - else if ( aId == EPlayerUnsecureVoIP ) - { -#ifdef __WINS__ - TParse* fp = new (ELeave) TParse(); - fp->Set( KPhoneBeepOnceSoundFile, &KDC_RESOURCE_FILES_DIR, NULL ); - TFileName fileName( fp->FullName() ); - delete fp; - - iUnsecureVoIPTonePlayer = CPhoneAudioPlayer::NewL( - fileName, - KAudioPrioritySpecialInformationTone, - KAudioPrefSpecialInformation, - *this, - EPlayerUnsecureVoIP ); -#else - iUnsecureVoIPTonePlayer = CPhoneAudioPlayer::NewSeqL( - KPhoneUnsecureVoIPCall(), - KAudioPrioritySpecialInformationTone, - KAudioPrefSpecialInformation, - *this, - EPlayerUnsecureVoIP ); -#endif // __WINS__ - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::CleanupPlayers -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::CleanupPlayers() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::CleanupPlayers()" ); - - delete iAudioPlayer; - iAudioPlayer = NULL; - - delete iDefaultPlayer; - iDefaultPlayer = NULL; - - delete iBeepOncePlayer; - iBeepOncePlayer = NULL; - - delete iSilentPlayer; - iSilentPlayer = NULL; - - delete iUnsecureVoIPTonePlayer; - iUnsecureVoIPTonePlayer = NULL; - - delete iBackupPlayer; - iBackupPlayer = NULL; - - delete iMdaServer; - iMdaServer = NULL; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::DeletePlayerAsync -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::DeletePlayerAsync( TPlayerId aPlayer ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::DeletePlayerAsync()" ); - __ASSERT_DEBUG( aPlayer >= EPlayerFirst && aPlayer < iAsyncDeletePlayers.Count(), - Panic( EPhoneViewInvariant ) ); - - // Player is not deleted here, but in RunL. - Cancel(); - - if ( iAsyncDeletePlayers[ aPlayer ] ) - { - delete iAsyncDeletePlayers[ aPlayer ]; - iAsyncDeletePlayers[ aPlayer ] = NULL; - } - - CPhoneAudioPlayer** players[] = - { - &iAudioPlayer, - &iBeepOncePlayer, - &iSilentPlayer, - &iUnsecureVoIPTonePlayer, - &iDefaultPlayer, - &iBackupPlayer, - &iTtsPlayer - }; - - __ASSERT_DEBUG( iAsyncDeletePlayers.Count() > aPlayer, Panic( EPhoneUtilsIndexOutOfBounds ) ); - iAsyncDeletePlayers[ aPlayer ] = - *(players[ aPlayer ]); - *(players[ aPlayer ]) = NULL; - - iState = EDeletingAudioPlayer; - - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - SetActive(); - } - // ----------------------------------------------------------------------------- // CPhoneRingingTonePlayerAO::RunL // ----------------------------------------------------------------------------- @@ -1275,27 +415,17 @@ switch ( iState ) { - case EDeletingAudioPlayer: - { - for ( TInt i = EPlayerFirst; i <= EPlayerLast; i++ ) - { - delete iAsyncDeletePlayers[ i ]; - iAsyncDeletePlayers[ i ] = NULL; - } - } - break; - - case EPlayingDefaultVideo: + case EPlayingDefaultVideo: { PlayAudioRingTone( iVolume, iRingingType ); } break; - case EIdleState: + case EIdleState: default: break; } // switch iState - + iState = EIdleState; } @@ -1308,98 +438,6 @@ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::DoCancel()" ); // Request is completed immediately before SetActive. } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::HandleTtsDelayTimeout -// ----------------------------------------------------------------------------- -// -TInt CPhoneRingingTonePlayerAO::HandleTtsDelayTimeout( TAny* object ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleTtsDelayTimeout()" ); - static_cast( object )-> - DoHandleTtsDelayTimeout(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout()" ); - __PHONELOG2( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout - iTtsRingingType(%d), iTTsTimeOutCounter(%d)", - iTtsRingingType, iTTsTimeOutCounter ); - - CPhoneAudioPlayer* currPlayer = NULL; - currPlayer = GetCurrentlyActiveAudioPlayerWithTTs(); - - if ( !currPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout - null current player" ); - return; - } - TInt volume( 0 ); - //Ascending case. TTs player needs to be ascending. - if ( iTtsRingingType == EProfileRingingTypeAscending ) - { - //Volume needs to be different in different ascending steps - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout - play ascending" ); - if ( !iTTsTimeOutCounter ) - { - //We are saying callers name for the first time in ascending mode. - //Say callers name by volume level KTtsVolumeMin. - volume = KTtsVolumeMin; - - iTtsPlayer->Play( - ConvertRingingType( EProfileRingingTypeRingingOnce ), - volume, - iTtsToneToBePlayed ); - } - else - { - //Checks the case that ringingtone is very quiet. Then do not play - //TTS too loud - volume = iTtsVolume < KTtsVolumeMin ? KTtsVolumeMin : KTtsVolumeAscendingRepeat; - - //We are saying callers name for the second time in ascending mode. - //Say callers name by volume level KTtsVolumeAscendingRepeat and decrease current players volume - //to KPlayerVolumeAscendingRepeat. RampTime is zero - currPlayer->SetNewVolumeAndRamptime( KPlayerVolumeAscendingRepeat, 0 ); - iTtsPlayer->Play( - ConvertRingingType( EProfileRingingTypeRingingOnce ), - volume, - iTtsToneToBePlayed ); - } - - } - else //Normal ringing case. - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::DoHandleTtsDelayTimeout - play normal" ); - currPlayer->SetNewVolumeAndRamptime( iTtsVolume-5, 0 ); - iTtsPlayer->Play( - ConvertRingingType( EProfileRingingTypeRingingOnce ), - iTtsVolume, - iTtsToneToBePlayed ); - } - - iTTsTimeOutCounter++; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::AddTtsPlaybackIfNeeded -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::AddTtsPlaybackIfNeeded( - TProfileRingingType /*aRingingType*/ ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::AddTtsPlaybackIfNeeded()" ); - if ( iTtsToneToBePlayed ) - { - iTtsDelayIndex = 0; - iTtsDelaysCount = KPhoneTtsDelaysCount; - } - } // ----------------------------------------------------------------------------- // CPhoneRingingTonePlayerAO::SetVideoPlayer @@ -1408,7 +446,7 @@ void CPhoneRingingTonePlayerAO::SetVideoPlayer( MPhoneVideoPlayer* aVideoPlayer ) { - iVideoPlayer = aVideoPlayer; + iVideoPlayer = aVideoPlayer; } // ----------------------------------------------------------------------------- @@ -1422,13 +460,13 @@ TBool aPersonalTone ) { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayVideoRingingTone()" ); - + __ASSERT_DEBUG( iVideoPlayer, Panic( EPhoneViewGeneralError ) ); - + iVolume = aVolume; iRingingType = aRingingType; TBool startTimer( ETrue ); - + // Extended security check if ( ExtendedSecurity() ) { @@ -1443,8 +481,8 @@ } __PHONELOG( EBasic, EPhoneUIView, - "CPhoneRingingTonePlayerAO::HandleVideoPlayerError - ExtSecChk ok" ); - } + "CPhoneRingingTonePlayerAO::HandleVideoPlayerError - ExtSecChk ok" ); + } __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayVideoRingingTone - play" ); switch( aRingingType ) @@ -1456,11 +494,11 @@ 0, iArbitraryVideoScaling, this ); - PlaySilentTone(); // To start vibra, video may fail. + iToneServer.PlaySilentTone(); // To start vibra, video may fail. iVolume = 0; // for repeat startTimer = EFalse; // no need for fallback break; - + case EProfileRingingTypeBeepOnce: iVideoPlayer->PlayVideoRingTone( aRingingTone.FileName(), @@ -1479,7 +517,7 @@ iVolume, iArbitraryVideoScaling, this ); - break; + break; } if ( aPersonalTone ) @@ -1496,7 +534,7 @@ // Start timer to guard video opening iTimer->After( KPhoneMaxRingingWaiting, this ); } - + } // ----------------------------------------------------------------------------- @@ -1514,9 +552,9 @@ __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleVideoPlayerError - error (%d)", - aError ); + aError ); } - + // cancel guarding timer iTimer->Cancel(); @@ -1529,7 +567,7 @@ if ( iAudioVideoRingingTone && !iAudioVideoRingingTone->IsVideoRingingTone() ) { - PlayAudioRingTone( iVolume, iRingingType ); + iToneServer.PlayAudioRingTone( iVolume, iRingingType ); } else // audio/video tone is video { @@ -1551,10 +589,10 @@ void CPhoneRingingTonePlayerAO::HandleVideoPlayerInitComplete() { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleVideoPlayerInitComplete()" ); - + // cancel guarding timer iTimer->Cancel(); - + } // ----------------------------------------------------------------------------- @@ -1572,8 +610,8 @@ // void CPhoneRingingTonePlayerAO::PlayDefaultVideoAsync() { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayDefaultVideoAsync()" ); - + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::PlayDefaultVideoAsync()" ); + Cancel(); iState = EPlayingDefaultVideo; @@ -1586,129 +624,13 @@ // ----------------------------------------------------------------------------- // CPhoneRingingTonePlayerAO::ExtendedSecurity // ----------------------------------------------------------------------------- -// +// TBool CPhoneRingingTonePlayerAO::ExtendedSecurity() const { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ExtendedSecurity()" ); - return iExtSecNeeded; + return iExtSecNeeded; } -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime( TTtsStatus aStatus ) - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime()" ); - - CPhoneAudioPlayer* currPlayer = NULL; - currPlayer = GetCurrentlyActiveAudioPlayerWithTTs(); - if ( !currPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime - null current player" ); - return; - } - TInt ramptime( 0 ); - //Here is handled the cases when Callers name is said. Sequence is: - //3 sec. tone + name + 4 sec. tone + name +the tone until the end. - switch ( aStatus ) - { - case ESaidOnce: - if ( iTtsRingingType == EProfileRingingTypeAscending ) - { - //The ramptime could be ( 4 )* KPhoneTtsAscendingStep but now - //we are setting this to 0 because when Say callers name is said - //for first time: play ringing tone on level 3 for four secs. - ramptime = 0; - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime - said once ascending - ramptime(%d)", - ramptime ); - currPlayer->SetNewVolumeAndRamptime( KPlayerVolumeAscendingRepeat, ramptime ); - } - else - { - //Normal ringingtone case. Adjust volume back to profile level. - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime - said once normal - ramptime(%d)", - ramptime ); - currPlayer->SetNewVolumeAndRamptime( iTtsVolume, 0 ); - } - break; - - case ESaidTwice: - if ( iTtsRingingType == EProfileRingingTypeAscending ) - { - TInt vol = iTtsVolume; - if ( vol > KPlayerVolumeAscendingRepeat ) - { - vol = vol - KTtsVolumeAscendingDecrease; - } - - //TTS playing complete for second time. increase tone player volume. - ramptime = ( vol )*KPhoneTtsAscendingStep; - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime - said twice ascending - ramptime(%d)", - ramptime ); - currPlayer->SetNewVolumeAndRamptime( iTtsVolume, ramptime ); - } - else - { - //Normal ringingtone case. Adjust volume back to profile level. - __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::SolveNewVolumeAndRamptime - said twice normal - ramptime(%d)", - ramptime ); - currPlayer->SetNewVolumeAndRamptime( iTtsVolume, 0 ); - } - break; - - default: - break; - } - } - - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::GetCurrentlyActiveAudioPlayerWithTTs -// ----------------------------------------------------------------------------- -// -CPhoneAudioPlayer* -CPhoneRingingTonePlayerAO::GetCurrentlyActiveAudioPlayerWithTTs() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::GetCurrentlyActiveAudioPlayerWithTTs()" ); - - if( iAudioPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::GetCurrentlyActiveAudioPlayerWithTTs - audio player" ); - return iAudioPlayer; - } - else if ( iDefaultPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::GetCurrentlyActiveAudioPlayerWithTTs - default player" ); - return iDefaultPlayer; - } - else if( iBackupPlayer ) - { - __PHONELOG( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::GetCurrentlyActiveAudioPlayerWithTTs - backup player" ); - return iBackupPlayer; - } - else - { - return NULL; - } - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ReStartRingingTonePlayer -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::ReStartRingingTonePlayer() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ReStartRingingTonePlayer()" ); - - //First get currently active player which plays among TTS player. - CPhoneAudioPlayer* currPlayer = NULL; - currPlayer = GetCurrentlyActiveAudioPlayerWithTTs(); - if ( currPlayer ) - { - currPlayer->ReStartPlaying(); - } - } // ----------------------------------------------------------------------------- // CPhoneRingingTonePlayerAO::CheckAndHandleToneSizeLimit @@ -1718,9 +640,9 @@ CPhoneRingingTone* aRingingTone ) { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::CheckAndHandleToneSizeLimit()" ); - + TBool bValidSize = ETrue; - + // If user has somehow managed to get a too large file as ringing tone, // play default tone instead. if ( iToneFileSizeLimitKB ) @@ -1728,14 +650,14 @@ if ( CheckToneFileSize( aRingingTone->FileName(), iToneFileSizeLimitKB) != KErrNone ) { bValidSize = EFalse; - } + } } __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::CheckAndHandleToneSizeLimit - bValidSize(%d)", bValidSize); - + return bValidSize; } @@ -1746,29 +668,29 @@ TInt CPhoneRingingTonePlayerAO::CheckToneFileSize( const TDesC& aFile, TInt aSizeLimitKB ) { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::CheckToneFileSize()" ); - + // Get file size TInt size = 0; TInt error = KErrNone; - RFs& fs = CCoeEnv::Static()->FsSession(); + RFs& fs = CCoeEnv::Static()->FsSession(); TEntry entry; if (KErrNone == fs.Entry( aFile, entry )) - { - size = entry.iSize; - } - + { + size = entry.iSize; + } + // Check aSizeLimitKB *= Kkilo; if ( aSizeLimitKB && size > aSizeLimitKB ) { error = KErrTooBig; } - + __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::CheckToneFileSize - size (%d)", - size ); + size ); return error; } @@ -1780,132 +702,29 @@ void CPhoneRingingTonePlayerAO::GetMaxToneFileSizeL( TInt& aMaxSizeKB ) const { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::GetMaxToneFileSizeL()" ); - + const TInt error = CPhoneCenRepProxy::Instance()->GetInt( KCRUidProfileEngine, KProEngRingingToneMaxSize, aMaxSizeKB ); - - if ( error != KErrNone ) - { + + if ( error != KErrNone ) + { aMaxSizeKB = 0; - } - if ( aMaxSizeKB < 0 ) - { - aMaxSizeKB = 0; - } - + } + if ( aMaxSizeKB < 0 ) + { + aMaxSizeKB = 0; + } + __PHONELOG2( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::GetMaxToneFileSizeL - error (%d), aMaxSizeKB(%d)", error, - aMaxSizeKB ); + aMaxSizeKB ); } -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::ActiveAudioPlayer -// ----------------------------------------------------------------------------- -// -CPhoneAudioPlayer* CPhoneRingingTonePlayerAO::ActiveAudioPlayer() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::ActiveAudioPlayer()" ); - - switch( iTonePlayingStatus ) - { - case EAudioTonePlaying: - if( iAudioPlayer != NULL ) - { - return iAudioPlayer; - } - break; - - case EDefaultTonePlaying: - if ( iDefaultPlayer != NULL ) - { - return iDefaultPlayer; - } - break; - - case EBeepOnce: - if( iBeepOncePlayer != NULL ) - { - return iBeepOncePlayer; - } - break; - - case EBackupTonePlaying: - if( iBackupPlayer != NULL ) - { - return iBackupPlayer; - } - break; - - case ESilentTonePlaying: - if( iSilentPlayer != NULL ) - { - return iSilentPlayer; - } - break; - - case EUnsecureVoIPTonePlaying: - if( iUnsecureVoIPTonePlayer != NULL ) - { - return iUnsecureVoIPTonePlayer; - } - break; - - case EVideoTonePlaying: // video ringing tone - case EPersonalVideoTonePlaying: - case ESilentVideoTonePlaying: - if ( iBeepOncePlayer != NULL ) - { - return iBeepOncePlayer; - } - else if ( iSilentPlayer != NULL ) - { - return iSilentPlayer; - } - break; - - default: - break; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CPhoneRingingTonePlayerAO::DoMuteRingingTone -// ----------------------------------------------------------------------------- -// -void CPhoneRingingTonePlayerAO::DoMuteRingingTone() - { - __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::DoMuteRingingTone()" ); - - switch( iTonePlayingStatus ) - { - case EVideoTonePlaying: // video ringing tone, fall through - case EPersonalVideoTonePlaying: // fall through - case ESilentVideoTonePlaying: - if ( iVideoPlayer != NULL ) - { - iVideoPlayer->MuteVideoRingTone(); - return; - } - break; - - default: - break; - } - - CPhoneAudioPlayer* activePlayer = ActiveAudioPlayer(); - if( activePlayer != NULL ) - { - activePlayer->MutePlaying(); - } - } - // ----------------------------------------------------------- // CPhoneRingingTonePlayerAO::HandleCenRepChangeL // ----------------------------------------------------------- @@ -1915,20 +734,20 @@ const TUint /*aId*/ ) { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleCenRepChangeL()"); - + if ( aUid == KCRUidDRMHelperServer ) { TBuf<256> tempBuf16( KNullDesC ); - + User::LeaveIfError( CPhoneCenRepProxy::Instance()->GetString( KCRUidDRMHelperServer, KDRMHelperServerNotificationPassive, - tempBuf16 ) ); - + tempBuf16 ) ); + const TBool idleIsTopApp = CPhonePubSubProxy::Instance()->Value( KPSUidAiInformation, KActiveIdleState ) == EPSAiForeground; - - // Quick validity check and + + // Quick validity check and // The first Tuint8 is the times the content has been informed. // Note should not shown until Idle. if ( idleIsTopApp && tempBuf16.Length() >= KPhoneMinDRMTextLength ) @@ -1936,28 +755,28 @@ TBuf8<256> tempBuf8; TPtrC8 ptr((TUint8*)tempBuf16.Ptr(), tempBuf16.Size()); HBufC8* buf8 = HBufC8::NewLC( 256 ); - buf8->Des().Copy(ptr); - // Extract URI etc. - // buf8 format: - // - // - // - TInt8 count = (TInt8)(*(buf8->Ptr())); - TChar mark = (TChar)(*(buf8->Ptr()+1)); - TInt8 permtype = (TChar)(*(buf8->Ptr()+2)); - TInt8 automcontenttype = (TChar)(*(buf8->Ptr()+3)); - TBuf8<256> curi = buf8->Right( buf8->Length()-4); - - if (curi.Ptr()[curi.Size()-1] == 0) - { - // The last character in the descriptor is 0, which means - // that the original 16-bit desc was padded so - // remove the last char... - curi.SetLength(curi.Size()-1); - } - - // Create DRM helper. - CDRMHelper* drmHelper = CDRMHelper::NewLC(); + buf8->Des().Copy(ptr); + // Extract URI etc. + // buf8 format: + // + // + // + TInt8 count = (TInt8)(*(buf8->Ptr())); + TChar mark = (TChar)(*(buf8->Ptr()+1)); + TInt8 permtype = (TChar)(*(buf8->Ptr()+2)); + TInt8 automcontenttype = (TChar)(*(buf8->Ptr()+3)); + TBuf8<256> curi = buf8->Right( buf8->Length()-4); + + if ( curi.Ptr()[curi.Size()-1] == 0 ) + { + // The last character in the descriptor is 0, which means + // that the original 16-bit desc was padded so + // remove the last char... + curi.SetLength(curi.Size()-1); + } + + // Create DRM helper. + CDRMHelper* drmHelper = CDRMHelper::NewLC(); // Show notification. drmHelper->SetAutomatedType( (CDRMHelper::TDRMHelperAutomatedType)automcontenttype ); TInt error = drmHelper->CheckRightsAmountL( curi ); @@ -1965,11 +784,11 @@ __PHONELOG1( EBasic, EPhoneUIView, "CPhoneRingingTonePlayerAO::HandleCenRepChangeL > CheckRightsAmountL, error: %d" , error ); - + CleanupStack::PopAndDestroy( drmHelper ); CleanupStack::PopAndDestroy( buf8 ); } } } - -// End of File + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonestatuspane.cpp --- a/phoneapp/phoneuiview/src/cphonestatuspane.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonestatuspane.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -45,7 +45,7 @@ #include "tphonecmdparambitmap.h" #include "phonelogger.h" -#include +#include // CONSTANTS diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphonetoolbarcontroller.cpp --- a/phoneapp/phoneuiview/src/cphonetoolbarcontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphonetoolbarcontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 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" @@ -30,12 +30,13 @@ #include #include +#include "tphonecmdparamincallindicatordata.h" #include "cphonetoolbarcontroller.h" -#include "PhoneUI.hrh" -#include "PhoneRssBase.h" -#include "TPhoneCmdParamInteger.h" -#include "TPhoneCmdParamBoolean.h" -#include "PhoneLogger.h" +#include "phoneui.hrh" +#include "phonerssbase.h" +#include "tphonecmdparaminteger.h" +#include "tphonecmdparamboolean.h" +#include "phonelogger.h" _LIT ( KPhoneMifFileName, "phoneui.mif" ); @@ -303,6 +304,8 @@ } return skinId; } + +// --------------------------------------------------------------------------- // ShowToolbar // // --------------------------------------------------------------------------- @@ -310,6 +313,7 @@ void CPhoneToolbarController::ShowToolbar() { __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneToolbarController::ShowToolbar()" ); + if ( iToolbar ) { if ( iToolbar->IsToolbarDisabled() ) @@ -317,7 +321,6 @@ TRAP_IGNORE(iToolbar->DisableToolbarL( EFalse )); } UpdateToolbar(); - iToolbar->HideItemsAndDrawOnlyBackground( EFalse ); iToolbar->SetToolbarVisibility( ETrue, EFalse ); } } @@ -332,17 +335,12 @@ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneToolbarController::HideToolbar()" ); if ( iToolbar ) { - if( iToolbar->IsShown() ) - { - iToolbar->HideItemsAndDrawOnlyBackground( ETrue ); - } - else if ( iToolbar->IsToolbarDisabled() ) + if ( iToolbar->IsToolbarDisabled() ) { TRAP_IGNORE(iToolbar->DisableToolbarL( EFalse )); - iToolbar->HideItemsAndDrawOnlyBackground( ETrue ); - iToolbar->SetToolbarVisibility( ETrue, EFalse ); } - } + iToolbar->SetToolbarVisibility( EFalse, EFalse ); + } } // --------------------------------------------------------- @@ -382,6 +380,61 @@ } // --------------------------------------------------------- +// CPhoneMenuController::SetWiredAccFlag +// --------------------------------------------------------- +// +void CPhoneToolbarController::SetWiredAccFlag( TPhoneCommandParam* aCommandParam ) + { + __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneMenuController::SetWiredAccAvailableFlag()" ); + // Check is the given parameter valid + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) + { + TPhoneCmdParamBoolean* accFlag = + static_cast( aCommandParam ); + + iWiredAccFlag = accFlag->Boolean(); + if ( iCallInProgress ) + { + SetToolbarButtonDimmed( EPhoneInCallCmdActivateIhf, iWiredAccFlag ); + UpdateToolbar(); + } + } + } + +// --------------------------------------------------------- +// CPhoneToolbarController::SetCallInProgressFlag +// --------------------------------------------------------- +// +void CPhoneToolbarController::SetCallInProgressFlag( TPhoneCommandParam* aCommandParam ) + { + TPhoneCmdParamIncallIndicatorData* param = + static_cast( aCommandParam ); + + TInt callState = param->CallState(); + + __PHONELOG1( EBasic, EPhoneUIView, + "CPhoneToolbarController::SetCallInProgressFlag - Current CallState = (%d)", + callState ); + + switch ( callState ) + { + case EPSCTsyCallStateUninitialized: + case EPSCTsyCallStateNone: + { + // No active call in progress. + iCallInProgress = EFalse; + break; + } + default: + { + // Active call in progress. + iCallInProgress = ETrue; + break; + } + } + } + +// --------------------------------------------------------- // CPhoneToolbarController::DimToolbar // --------------------------------------------------------- // @@ -393,8 +446,12 @@ iToolbar->SetItemDimmed( EPhoneInCallCmdMute, aDimmed, ETrue ); iToolbar->SetItemDimmed( EPhoneInCallCmdUnmute, aDimmed, ETrue ); iToolbar->SetItemDimmed( EPhoneInCallCmdActivatEPhonebook, aDimmed, ETrue ); - iToolbar->SetItemDimmed( EPhoneInCallCmdActivateIhf, aDimmed, ETrue ); - iToolbar->SetItemDimmed( EPhoneInCallCmdHandset, aDimmed, ETrue ); + iToolbar->SetItemDimmed( EPhoneInCallCmdHandset, aDimmed, ETrue ); + // Don't dim/undim iHF when complete toolbar dimming is changed. + if ( !iWiredAccFlag ) + { + iToolbar->SetItemDimmed( EPhoneInCallCmdActivateIhf, aDimmed, ETrue ); + } } // --------------------------------------------------------- diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphoneuidisablednote.cpp --- a/phoneapp/phoneuiview/src/cphoneuidisablednote.cpp Mon Apr 19 16:39:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2005 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 CPhoneUIDisabledNote class. -* -*/ - - -// INCLUDE FILES -#include "cphoneuidisablednote.h" -#include "aknnotedialog.h" -#include "phoneui.hrh" -#include -#include -#include -#include - - -// ================= MEMBER FUNCTIONS ======================= -// C++ default constructor can NOT contain any code, that -// might leave. -// -CPhoneUIDisabledNote::CPhoneUIDisabledNote( CEikDialog** aSelfPtr, MEikCommandObserver& aCommandObserver ) - : CPhoneNote( aSelfPtr, aCommandObserver ) - { - } - -// --------------------------------------------------------- -// Destructor -// --------------------------------------------------------- -// -CPhoneUIDisabledNote::~CPhoneUIDisabledNote() - { - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::OfferKeyEventL -// --------------------------------------------------------- -// -TKeyResponse CPhoneUIDisabledNote::OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode /*aType*/ ) - { - // Let key events be handled by the application - return EKeyWasNotConsumed; - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::OkToExitL -// --------------------------------------------------------- -// -TBool CPhoneUIDisabledNote::OkToExitL( TInt aCommand ) - { - // Let the command observer process the command - iCommandObserver.ProcessCommandL( aCommand ); - - return EFalse; // so that the dialog will not disappear - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::SetNoteType -// --------------------------------------------------------- -// -void CPhoneUIDisabledNote::SetNoteType( TPhoneNoteType aNoteType ) - { - iNoteType = aNoteType; - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::NoteType -// --------------------------------------------------------- -// -TPhoneNoteType CPhoneUIDisabledNote::NoteType() - { - return iNoteType; - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::HandlePointerEventL -// --------------------------------------------------------- -// -void CPhoneUIDisabledNote::HandlePointerEventL( - const TPointerEvent& /* aPointerEvent */ ) - { - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::UpdateSoftkeysL -// --------------------------------------------------------- -// -void CPhoneUIDisabledNote::UpdateSoftkeysL( TInt aResourceId ) - { - CEikButtonGroupContainer& buttonGroup = ButtonGroupContainer(); - buttonGroup.SetCommandSetL( aResourceId ); - - buttonGroup.DrawDeferred(); - } - -// --------------------------------------------------------- -// CPhoneUIDisabledNote::SetSizeAndPosition -// --------------------------------------------------------- -// -void CPhoneUIDisabledNote::SetSizeAndPosition( const TSize& aSize ) - { - CAknNoteDialog::SetSizeAndPosition( aSize ); - - // Override the original layout position to prevent note to hide the call bubble - // Will be changed when layout is available - TRect clientRect = CEikonEnv::Static()->EikAppUi()->ClientRect(); - TRect noteRect; - TInt leftMargin = (TInt) ( (clientRect.Width() - aSize.iWidth) / 2); // Set note to center - - noteRect.SetRect( leftMargin, // iTl.iX - clientRect.iBr.iY - aSize.iHeight, // iTl.iY - leftMargin + aSize.iWidth, // iBr.iX - clientRect.iBr.iY ); // iBr.iY - - SetRect( noteRect ); - } - -// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphoneview.cpp --- a/phoneapp/phoneuiview/src/cphoneview.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphoneview.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -49,7 +49,7 @@ #include #include #include -#include +#include enum TPhoneBgLayers { @@ -66,11 +66,7 @@ // ----------------------------------------------------------------------------- // CPhoneView::CPhoneView( CEikButtonGroupContainer& aCba ) : - iSecurityMode ( EFalse ), - iActivatePreviousApp( EFalse ), - iPhoneAppViewToDialer( EFalse ), - iCba ( aCba ), - iDialerActivation( EFalse ) + iCba ( aCba ) { } @@ -151,7 +147,7 @@ if ( iSecurityMode ) { static_cast( iEikonEnv->EikAppUi() ) - ->ProcessCommandL( EPhoneNumberAcqSecurityDialer ); + ->ProcessCommandL( EPhoneViewOpenNumberEntry ); return; } else @@ -313,8 +309,7 @@ } else { - if ( Layout_Meta_Data::IsLandscapeOrientation() || - iSecurityMode ) + if ( Layout_Meta_Data::IsLandscapeOrientation() ) { // In landscape and in security mode aRect is ok. CCoeControl::SetRect( aRect ); @@ -371,8 +366,7 @@ MAknsSkinInstance* skin = AknsUtils::SkinInstance(); MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - if ( iSecurityMode || - !AknsDrawUtils::Background( skin, cc, this, gc, aRect ) ) + if ( !AknsDrawUtils::Background( skin, cc, this, gc, aRect ) ) { gc.SetPenStyle(CGraphicsContext::ENullPen); gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); // 0 for white @@ -502,23 +496,10 @@ // void CPhoneView::SetSecurityMode ( TBool aStatus ) { - if ( iSecurityMode != aStatus ) - { - iSecurityMode = aStatus; - SizeChanged(); - } + iSecurityMode = aStatus; } // ----------------------------------------------------------------------------- -// CPhoneView::IsSecurityMode -// ----------------------------------------------------------------------------- -// -TBool CPhoneView::IsSecurityMode() - { - return iSecurityMode; - } - -// ----------------------------------------------------------------------------- // CPhoneView::GetActivatePreviousApp // ----------------------------------------------------------------------------- // diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/cphoneviewcontroller.cpp --- a/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005 - 2010 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" @@ -23,6 +23,8 @@ #include "cphonetoolbarcontroller.h" #include "cphonebuttonscontroller.h" #include "cphonedialercontroller.h" +#include "cphoneeasydialingcontroller.h" +#include "cphonedtmfdialercontroller.h" #include "cphonemenucontroller.h" #include "cphonenotecontroller.h" #include "cphonequerycontroller.h" @@ -71,6 +73,7 @@ #include "tphonecmdparampointer.h" #include "dialer.hrh" #include "phoneui.hrh" +#include "musmanager.h" #include #include #include @@ -106,7 +109,7 @@ #include #include #include -#include +#include #include #include #include @@ -128,11 +131,14 @@ #include #include -#include // Call Settings launch. +#include // Call Settings launch. + +#include +#include // Kastor effect IDs, aknskincontent/101f84b9.sel -const TInt KTouchDialerOpenEffect = 1505; -const TInt KTouchDialerCloseEffect = 1506; +const TInt KTouchDialerOpenEffect = 3; +const TInt KTouchDialerCloseEffect = 5; // ================= MEMBER FUNCTIONS ======================= @@ -144,7 +150,7 @@ // CPhoneViewController::CPhoneViewController() : iEikEnv( *CEikonEnv::Static() ), - iNeedToSendToBackground( EFalse ), + iNeedToReturnToForegroundAppAfterCall( EFalse ), iHelpCommand( KINCAL_HLP_CALL_HANDLING ), iBlockingDialogIsDisplayed( EFalse ), iIdleUid( KErrNotFound ), @@ -209,32 +215,40 @@ iEikEnv.WsSession(), iEikEnv.WsSession().FindWindowGroupIdentifier( 0, KPhoneEikonServer ) ); + CCoeEnv* coeEnv = CCoeEnv::Static(); + if ( FeatureManager::FeatureSupported( KFeatureIdTouchCallHandling ) ) { iButtonsController = CPhoneButtonsController::NewL( iBubbleWrapper->TouchPane() ); + iToolbarController = CPhoneToolbarController::NewL( *coeEnv ); } if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) ) { + iDialerActive = EFalse; + // Create dialer controller + iDialerController = CPhoneDialerController::NewL( iBubbleWrapper, + *coeEnv ); // Create dialer view iDialerView = CPhoneDialerView::NewL( aRect ); iDialerView->DrawableWindow()->SetOrdinalPosition( -1 ); iDialerView->MakeVisible( EFalse ); // Create dialer - iDialer = CDialer::NewL( *iDialerView, aRect ); + iDialer = CDialer::NewL( *iDialerView, aRect, iDialerController ); // Set NE for bubbleWrapper iBubbleWrapper->SetNumberEntry( iDialer->NumberEntry() ); - CCoeEnv* coeEnv = static_cast(iDialer)->ControlEnv(); - iDialerController = CPhoneDialerController::NewL( *iBubbleWrapper, - *coeEnv, - *iMenuController ); + iBubbleWrapper->SetNumberEntryObserver( *this ); + // Finalise dialer view + iDialerView->SetControl( iDialer ); + iDialerView->ActivateL(); - iToolbarController = CPhoneToolbarController::NewL( *coeEnv ); - - - iDialerView->SetControl( iDialer ); - iDialerView->ActivateL(); - iDialerActive = EFalse; + // Create controller for Easy Dialing + iEasyDialingController = CPhoneEasyDialingController::NewL( *iDialer ); + iDialerController->SetEasyDialingController( iEasyDialingController ); + + // Create controller for DTMF mode of the dialer + iDtmfDialerController = CPhoneDtmfDialerController::NewL( iBubbleWrapper, + *coeEnv ); } User::LeaveIfError( iKeyLock.Connect() ); @@ -298,6 +312,10 @@ } delete iDialerView; } + + delete iEasyDialingController; + delete iDtmfDialerController; + delete iDialer; if ( iSingleItemFetch ) { @@ -482,10 +500,6 @@ iKeyLock.EnableKeyLock(); break; - case EPhoneViewEnableKeyLockWithoutNote: - iKeyLock.EnableWithoutNote(); - break; - case EPhoneViewDisableKeyLockWithoutNote: iKeyLock.DisableWithoutNote(); break; @@ -542,7 +556,7 @@ { if ( iDialer ) { - iDialerController->UpdateToolbar(); + iDialer->UpdateToolbar(); } } break; @@ -615,9 +629,9 @@ } break; - case EPhoneViewDisableKeyLock: + case EPhoneViewLaunchMultimediaSharing: { - DisableKeyLock(); + LaunchMultimediaSharingL(); } break; @@ -745,8 +759,13 @@ break; case EPhoneViewMenuPane: - iMenuController->SetReplaceFlag( IsReplaceAllowed() ); - iMenuController->DynInitMenuPaneL( aCommandParam ); + // First offer initialization to easydialing, and if no + // initialization done, give it to the menu controller. + if ( !iEasyDialingController->InitializeEasyDialingMenuL( aCommandParam ) ) + { + iMenuController->SetReplaceFlag( IsReplaceAllowed() ); + iMenuController->DynInitMenuPaneL( aCommandParam ); + } break; case EPhoneViewMenuBar: @@ -814,8 +833,8 @@ } break; - case EPhoneViewSetNeedToSendToBackgroundStatus: - SetNeedToSendToBackground( aCommandParam ); + case EPhoneViewSetNeedToReturnToForegroundAppStatus: + SetNeedToReturnToForegroundAppAfterCall( aCommandParam ); break; case EPhoneViewSetBlockingDialogStatus: @@ -858,6 +877,7 @@ iMenuController->CloseMenuBar(); iIncallIndicator->Update( aCommandParam ); iMenuController->SetCallInProgressFlag( aCommandParam ); + iToolbarController->SetCallInProgressFlag( aCommandParam ); break; case EPhoneViewStartCapturingKey: @@ -918,7 +938,7 @@ if ( iDialer ) { - iDialerController->SetServiceCodeFlagL( aCommandParam ); + iDialerController->SetServiceCodeFlag( aCommandParam ); } break; @@ -961,14 +981,6 @@ iStatusPane->SetTitlePanePictureL( aCommandParam ); break; - case EPhoneViewSetSecurityMode: - SetSecurityMode( aCommandParam ); - break; - - case EPhoneViewGetSecurityModeStatus: - GetSecurityModeStatus( aCommandParam ); - break; - case EPhoneViewSetStatusPaneVisible: SetStatusPaneVisible( aCommandParam ); break; @@ -1057,24 +1069,19 @@ { TPhoneCmdParamBoolean* booleanParam = static_cast( aCommandParam ); - iDialerController->SetDtmfDialerVisibleL( - booleanParam->Boolean() ); + if ( booleanParam->Boolean() ) + { + iDialer->SetControllerL( iDtmfDialerController ); + } + else + { + iDialer->SetControllerL( iDialerController ); + } } break; } - case EPhoneViewSetRetrictedDialer: - { - if ( iDialer ) - { - TPhoneCmdParamBoolean* booleanParam = - static_cast( aCommandParam ); - iDialerController->SetRestrictedDialer( - booleanParam->Boolean() ); - } - break; - } - case EPhoneViewSetDtmfOptionsFlag: + case EPhoneViewSetDtmfOptionsFlag: { TPhoneCmdParamBoolean* booleanParam = static_cast( aCommandParam ); @@ -1106,10 +1113,12 @@ case EPhoneViewShowCustomizedDialer: { - TPhoneCmdParamCustomDialer* customDialerParam = - static_cast( aCommandParam ); - iDialerController->ShowCustomizedDialerL( - customDialerParam->DialerController() ); + if ( iDialer ) + { + TPhoneCmdParamCustomDialer* customDialerParam = + static_cast( aCommandParam ); + iDialer->SetControllerL( customDialerParam->DialerController() ); + } } break; case EPhoneViewGetNumberFromEntry: @@ -1148,7 +1157,28 @@ iToolbarController->DimToolbar( booleanParam->Boolean()); break; } - + + case EPhoneViewSetInvalidCsPhoneNumberFlag: + iMenuController->SetInvalidCsPhoneNumberFlag( aCommandParam ); + break; + + case EPhoneViewGetInvalidCsPhoneNumberFlag: + iMenuController->GetInvalidCsPhoneNumberFlag( aCommandParam ); + break; + + case EPhoneViewGetEasyDialingMenuId: + case EPhoneViewGetEasyDialingCbaId: + { + iEasyDialingController->ExecuteCommandL( aCmdId, aCommandParam ); + } + break; + case EPhoneViewSetConferenceAndWaitingVideo: + { + TPhoneCmdParamBoolean* booleanParam = + static_cast( aCommandParam ); + iMenuController->SetConferenceAndWaitingVideoFlag( booleanParam->Boolean() ); + } + break; default: __PHONELOG( EBasic, EPhonePhoneapp, "CPhoneViewController::ExecuteCommandL -> UnKnownMessage !!! " ); @@ -1372,14 +1402,24 @@ static_cast( aCommandParam )->Type(); TBool isForeground = iAppui->IsForeground(); - if ( isForeground && // newer run effect if not at front + // Check whether the idle is on foreground + TBool idleInFore = ForegroundApplicationWindowGroupId() == IdleWindowGroupId() ? + ETrue : EFalse; + + if ( ( isForeground && // Newer run effect if not at front ( ( type == EPhoneTransEffectDialerCreate && !iDialerActive ) || ( type == EPhoneTransEffectDialerOpen && !iDialerActive && - iBubbleWrapper->IsNumberEntryUsed() ) || + iBubbleWrapper->IsNumberEntryUsed() )) || ( type == EPhoneTransEffectDialerClose && iDialerActive ) ) ) { HandleTransitionEffect( type ); } + // In case transition is from idle to dialer show transition effects as well. + else if ( idleInFore && !iDialerActive && + type == EPhoneTransEffectDialerOpen ) + { + HandleTransitionEffect( type ); + } } break; } @@ -1408,14 +1448,14 @@ case EPhoneViewSetNumberEntryObserver: { - NumberEntryChangedHandler()->SetNumberEntryChangedCallBack( - aCommandParam ); + iBubbleWrapper->SetNumberEntryChangedCallBack( aCommandParam ); break; } case EPhoneViewGetSingleItemFetchType: + { static_cast( aCommandParam )->SetInteger( SingleItemFetchType() ); break; - + } case EPhoneViewSetPhoneCustomization: { TPhoneCmdParamPointer* pointerParam = @@ -1447,9 +1487,18 @@ break; case EPhoneViewEnableToolbarButton: + { TPhoneCmdParamInteger* integerParam = static_cast( aCommandParam ); iToolbarController->SetToolbarButtonDimmed( integerParam->Integer(), EFalse ); + } + break; + + case EPhoneViewGetQwertyModeObserver: + { + TPhoneCmdParamPointer* ptrParam = static_cast( aCommandParam ); + ptrParam->SetPointer( static_cast( iDialer ) ); + } break; default: @@ -1493,14 +1542,33 @@ } break; - case EPhoneViewIsNumberEntryNumericMode: + case EPhoneViewGetEasyDialingInFocusStatus: + case EEasyDialingVoiceCall: + case EEasyDialingVideoCall: + case EEasyDialingSendMessage: + case EEasyDialingOpenContact: + case EEasyDialingCallHandlingActivated: + case EEasyDialingEnterKeyAction: + case EEasyDialingOn: + case EEasyDialingOff: + if ( iDialer ) + { + viewResponse = iEasyDialingController->HandleCommandL( aCmdId ); + } + else + { + viewResponse = EPhoneViewResponseFailed; + } + break; + + case EPhoneViewIsNumberEntryNumericMode: viewResponse = iBubbleWrapper->IsNENumericMode() ? EPhoneViewResponseSuccess : EPhoneViewResponseFailed; break; - case EPhoneViewGetNeedToSendToBackgroundStatus: - viewResponse = NeedToSendToBackground() ? + case EPhoneViewGetNeedToReturnToForegroundAppStatus: + viewResponse = GetNeedToReturnToForegroundAppAfterCall() ? EPhoneViewResponseSuccess : EPhoneViewResponseFailed; break; @@ -1541,12 +1609,6 @@ } break; - case EPhoneViewIsKeyLockEnabled: - viewResponse = IsKeyLockEnabled() ? - EPhoneViewResponseSuccess : - EPhoneViewResponseFailed; - break; - // Dialer specific commands start // Dialer handles these commands. @@ -1579,9 +1641,9 @@ case EPhoneViewIsDTMFEditorVisible: if ( iDialer ) { - viewResponse = iDialerController->IsDTMFDialerVisible() ? + viewResponse = ( IsDtmfDialerActive() ? EPhoneViewResponseSuccess : - EPhoneViewResponseFailed; + EPhoneViewResponseFailed ); } else // non-touch. { @@ -1615,8 +1677,19 @@ } // Set Number Entry CBA TPhoneCmdParamInteger integerParam; - integerParam.SetInteger( CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneNumberAcqCBA ) ); + if ( iSecurityMode ) + { + iNoteController->DestroyNote(); + integerParam.SetInteger( + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneEmergencyModeNoteCBA ) ); + } + else + { + integerParam.SetInteger( + CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneNumberAcqCBA ) ); + } ExecuteCommandL( EPhoneViewUpdateCba, &integerParam ); // Set flag to false because dialler is set to open status. iPhoneView->SetPhoneAppViewToDialer( EFalse ); @@ -1631,13 +1704,13 @@ RemovePhoneDialogsL(); } // Remove DTMF dialer when exist - if ( iDialerController->IsDTMFDialerVisible() ) + if ( IsDtmfDialerActive() ) { static_cast( CEikonEnv::Static()->EikAppUi() ) ->ProcessCommandL( EPhoneDtmfDialerExit ); } else if ( iCustomization && - iDialerController->IsCustomizedDialerVisible() ) + IsCustomDialerActive() ) { iCustomization->HandleCommandL( *this, EPhoneViewOpenCallHandling, NULL ); @@ -1663,7 +1736,7 @@ // If dialer was not active and needtosendback is false // then check if dialer view is to be opened. if ( !iDialerActive && - !iNeedToSendToBackground && + !iNeedToReturnToForegroundAppAfterCall && iPhoneView->PhoneAppViewToDialer() ) { SetControltoDialerL(); @@ -1683,7 +1756,7 @@ case EPhoneIsCustomizedDialerVisible: { - viewResponse = iDialerController->IsCustomizedDialerVisible() ? + viewResponse = IsCustomDialerActive() ? EPhoneViewResponseSuccess : EPhoneViewResponseFailed; } @@ -1691,8 +1764,11 @@ case EPhoneViewHideCustomizedDialer: { - iDialerController->HideCustomizedDialer(); - viewResponse = EPhoneViewResponseSuccess; + if ( iDialer ) + { + iDialer->SetControllerL( iDialerController ); + viewResponse = EPhoneViewResponseSuccess; + } } break; case EPhoneViewShowToolbar: @@ -1820,7 +1896,7 @@ } else { - TBool status; + TBool status( EFalse ); TRAP( err, status = GetNumberFromSpeedDialLocationL( aCommandParam )) if ( err ) { @@ -1841,19 +1917,19 @@ case EPhoneViewGetCustomizedDialerMenuResourceId: { - TInt resId = iDialerController->CustomizedMenuResourceId(); + TInt resId = iDialer->Controller()->MenuResourceId(); // easydialing change static_cast( aCommandParam )->SetInteger( resId ); viewResponse = EPhoneViewResponseSuccess; } break; case EPhoneViewGetCustomizedDialerCbaResourceId: { - TInt resId = iDialerController->CustomizedCbaResourceId(); + TInt resId = iDialer->Controller()->CbaResourceId(); // easydialing change static_cast( aCommandParam )->SetInteger( resId ); viewResponse = EPhoneViewResponseSuccess; } break; - + default: if ( iCustomization ) { @@ -2029,18 +2105,13 @@ "CPhoneViewController::HandleResourceChangeL()" ) // Notify the bubble that there has been a resource change iBubbleWrapper->Control()->HandleResourceChange( aType ); - + // Notify dialer and switch statuspane layout. if ( iDialer ) { if ( aType == KEikDynamicLayoutVariantSwitch ) { SwitchLayoutToFlatStatusPaneL( iDialerActive ); - - if ( !iDialerActive && Layout_Meta_Data::IsLandscapeOrientation() ) - { - iDialerController->HideToolbar(); - } } static_cast(iDialer)->HandleResourceChange( aType ); } @@ -2064,10 +2135,10 @@ __PHONELOG( EBasic, EPhoneUIView,"CPhoneViewController::HandleLayoutChange()" ) iPhoneView->SetRect( aRect ); if ( iDialerView ) - { - iDialerView->SetRect( aRect ); - iStatusPane->UpdateTitlePane(); - } + { + iDialerView->SetRect( aRect ); + iStatusPane->UpdateTitlePane(); + } } // --------------------------------------------------------------------------- @@ -2080,6 +2151,28 @@ } // --------------------------------------------------------------------------- +// CPhoneViewController::HandleSecurityModeChanged +// --------------------------------------------------------------------------- +// +EXPORT_C void CPhoneViewController::HandleSecurityModeChanged( TBool aIsEnabled ) + { + __PHONELOG1( EBasic, EPhoneUIView, + "CPhoneViewController::SetSecurityMode Mode = (%d)", aIsEnabled ); + iToolbarController->DimToolbar( aIsEnabled ); + iPhoneView->SetSecurityMode( aIsEnabled ); + iMenuController->SetSecurityMode( aIsEnabled ); + if ( iDialer ) + { + iDialerController->SetRestrictedDialer( aIsEnabled ); + if ( iSecurityMode != aIsEnabled ) + { + iDialer->RelayoutAndDraw(); + } + } + iSecurityMode = aIsEnabled; + } + +// --------------------------------------------------------------------------- // CPhoneViewController::IdleAppUid // --------------------------------------------------------------------------- // @@ -2112,6 +2205,17 @@ } // --------------------------------------------------------------------------- +// CPhoneViewController::NumberEntryStateChanged +// --------------------------------------------------------------------------- +// +void CPhoneViewController::NumberEntryStateChanged( TBool aEntryHasText ) + { + iMenuController->SetNumberEntryEmptyFlag( !aEntryHasText ); + iBubbleWrapper->HandleNumberEntryChanged(); + ExecuteCommandL( EPhoneViewUpdateToolbar ); + } + +// --------------------------------------------------------------------------- // CPhoneViewController::GetBlockingDialogIsDisplayed // --------------------------------------------------------------------------- // @@ -2126,45 +2230,7 @@ } } -// --------------------------------------------------------------------------- -// CPhoneViewController::GetSecurityModeStatus -// --------------------------------------------------------------------------- -// -void CPhoneViewController::GetSecurityModeStatus( - TPhoneCommandParam* aCommandParam ) - { - if( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean ) - { - TPhoneCmdParamBoolean* booleanValue = - static_cast( aCommandParam ); - booleanValue->SetBoolean( iPhoneView->IsSecurityMode() ); - } - } - -// --------------------------------------------------------------------------- -// CPhoneViewController::SetNeedToSendToBackground -// --------------------------------------------------------------------------- -// -void CPhoneViewController::SetNeedToSendToBackground( - TPhoneCommandParam* aCommandParam ) - { - TPhoneCmdParamBoolean* booleanParam = static_cast( - aCommandParam ); - - iNeedToSendToBackground = booleanParam->Boolean(); - __PHONELOG1( EBasic, EPhoneUIView, - "CPhoneViewController::SetNeedToSendToBackground(%d)", - iNeedToSendToBackground ); - } - -// --------------------------------------------------------------------------- -// CPhoneViewController::NeedToSendToBackground -// --------------------------------------------------------------------------- -// -TBool CPhoneViewController::NeedToSendToBackground() - { - return iNeedToSendToBackground; - } + // --------------------------------------------------------------------------- // CPhoneViewController::SendToBackgroundL @@ -2218,7 +2284,7 @@ } // Clear the send to background flag - iNeedToSendToBackground = EFalse; + iNeedToReturnToForegroundAppAfterCall = EFalse; } // --------------------------------------------------------------------------- @@ -2510,6 +2576,17 @@ } // --------------------------------------------------------------------------- +// CPhoneViewController::LaunchMultimediaSharingL (static) +// --------------------------------------------------------------------------- +// +void CPhoneViewController::LaunchMultimediaSharingL() + { + CMusManager* manager = CMusManager::NewLC(); + manager->StartApplicationL( MultimediaSharing::EMusLiveVideo ); + CleanupStack::PopAndDestroy( manager ); + } + +// --------------------------------------------------------------------------- // CPhoneViewController::LaunchApplicationL // --------------------------------------------------------------------------- // @@ -2596,7 +2673,9 @@ TInt resourceId = cbaResource->Integer(); iCba->SetCommandSetL( resourceId ); + iCba->DrawDeferred(); + } // --------------------------------------------------------------------------- @@ -2662,30 +2741,6 @@ booleanParam->Boolean() ); } -// --------------------------------------------------------- -// CPhoneViewController::IsKeyLockEnabled -// --------------------------------------------------------- -// -TBool CPhoneViewController::IsKeyLockEnabled() - { - TBool keylock; - keylock = iKeyLock.IsKeyLockEnabled(); - __PHONELOG1( EBasic, EPhoneUIView, - "CPhoneViewController::IsKeyLockEnabled(%d)", keylock ); - return keylock; - } - -// --------------------------------------------------------- -// CPhoneViewController::DisableKeyLock -// --------------------------------------------------------- -// -void CPhoneViewController::DisableKeyLock() - { - __PHONELOG( EBasic, EPhoneUIView, - "CPhoneViewController::DisableKeyLock()"); - return iKeyLock.DisableWithoutNote(); - } - // CPhoneViewController::CancelAllNotications // --------------------------------------------------------------------------- // @@ -2945,15 +3000,13 @@ // Indicate that the contact operation is blocking key // events from the Phone iBlockingDialogIsDisplayed = ETrue; - TBool numberAssigned; - TRAPD( err, - numberAssigned = AssignSpeedDialLocationL( - locationParam->Integer())) + TBool numberAssigned = EFalse; + TRAP_IGNORE( numberAssigned = AssignSpeedDialLocationL(locationParam->Integer()) ); // Reset the flag iBlockingDialogIsDisplayed = EFalse; - return err ? EFalse : numberAssigned; + return numberAssigned; } // --------------------------------------------------------------------------- @@ -3174,7 +3227,7 @@ // Wired options iMenuController->SetWiredAccFlag( &wiredParam ); - + iToolbarController->SetWiredAccFlag( &wiredParam ); iMenuController->SetIhfFlag( &ihfParam ); iToolbarController->SetIhfFlag( &ihfParam ); @@ -3216,6 +3269,7 @@ // Wired options iMenuController->SetWiredAccAvailableFlag( &wiredAvailableParam ); + iToolbarController->SetWiredAccFlag( &wiredAvailableParam ); // btaa menu options iMenuController->SetBTAccAvailableFlag( &btAvailableParam ); @@ -3415,21 +3469,6 @@ CleanupStack::PopAndDestroy( phoneNumber ); } -// --------------------------------------------------------------------------- -// CPhoneViewController::SetSecurityMode -// --------------------------------------------------------------------------- -// -void CPhoneViewController::SetSecurityMode( - TPhoneCommandParam* aCommandParam ) - { - __LOGMETHODSTARTEND(EPhoneUIView, - "CPhoneViewController::SetSecurityMode()" ); - TPhoneCmdParamBoolean* booleanParam = static_cast( - aCommandParam ); - iPhoneView->SetSecurityMode( booleanParam->Boolean() ); - iStatusPane->StatusPane().MakeVisible( !booleanParam->Boolean() ); - } - // ----------------------------------------------------------- // CPhoneViewController::SetStatusPaneVisible // ----------------------------------------------------------- @@ -3616,9 +3655,7 @@ currentLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL ) { SwapEmptyIndicatorPaneInSecureStateL( EFalse ); - - iStatusPane->NaviPane().Pop(); - + if ( !Layout_Meta_Data::IsLandscapeOrientation() ) { iStatusPane->StatusPane().SwitchLayoutL @@ -3646,11 +3683,7 @@ { __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneViewController::SwapEmptyIndicatorPaneInSecureStateL()" ); - - TPhoneCmdParamBoolean security; - GetSecurityModeStatus( &security ); - - if ( security.Boolean() ) + if ( iSecurityMode ) { if ( aSwapEmpty ) { @@ -3734,24 +3767,36 @@ { iDialerActive = ETrue; + // Hide in-call view toolbar + iToolbarController->HideToolbar(); + + // Ensure that toolbar and menu commands are up-to-date + TBuf<1> temp; // we are only interested if the text is empty or not + iDialer->GetTextFromNumberEntry( temp ); + NumberEntryStateChanged( temp.Length() > 0 ); + // Make dialer view top most iDialerView->DrawableWindow()->SetOrdinalPosition( iPhoneView->DrawableWindow()->OrdinalPosition() ); - iDialerView->MakeVisible( ETrue ); - iDialerView->DrawNow(); SwitchLayoutToFlatStatusPaneL( ETrue ); iPhoneView->DrawableWindow()->SetOrdinalPosition( -1 ); iPhoneView->MakeVisible( EFalse ); - iToolbarController->HideToolbar(); - iDialerController->ShowToolbar(); - // Update control stack iAppui->AddToStackL( iDialerView ); - iAppui->RemoveFromStack( iPhoneView ); - } + iAppui->RemoveFromStack( iPhoneView ); + + // Don't make dialer view visible before status pane is updated. + // This prevents unnecessary resizings. + iDialerView->MakeVisible( ETrue ); + // Number entry is emptied when dialer is hidden but drawing doesn't + // succeed at that point as dialer is hidden first. So must draw + // dialer as soon as it becomes visible to prevent the flashing of + // number entry (DrawDeferred() isn't fast enough here). + iDialerView->DrawNow(); + } } // --------------------------------------------------------------------------- @@ -3763,34 +3808,35 @@ __PHONELOG1( EBasic, EPhoneUIView, "CPhoneViewController::SetControltoCallHandlingL iDialerActive (%d)", iDialerActive ); + // Do not show toolbar if emergency call is active + if ( !iIncallIndicator->IsEmergencyCall() ) + { + iToolbarController->ShowToolbar(); + } if ( iDialerActive ) { iDialerActive = EFalse; - + // Hide dialer view. Do this before resizing status pane to prevent unnecessary + // resizing of dialer components. Hiding dialer view already before showing + // phone view might cause screen flickering but tests have proven it doesn't happen. + iDialerView->MakeVisible( EFalse ); + SwitchLayoutToFlatStatusPaneL( EFalse ); - // Make call handling view top most - iPhoneView->DrawableWindow()->SetOrdinalPosition( + // Make call handling view top most + iPhoneView->DrawableWindow()->SetOrdinalPosition( iDialerView->DrawableWindow()->OrdinalPosition() ); iPhoneView->MakeVisible( ETrue ); iPhoneView->DrawNow(); - iDialerView->DrawableWindow()->SetOrdinalPosition( -1 ); - iDialerView->MakeVisible( EFalse ); - - iDialerController->HideToolbar(); + iDialerView->DrawableWindow()->SetOrdinalPosition( -1 ); // Update control stack - iAppui->AddToStackL( iPhoneView ); - iAppui->RemoveFromStack( iDialerView ); - } - - // If securitymode or emergency call not show toolbar - if ( !iPhoneView->IsSecurityMode() && - !iIncallIndicator->IsEmergencyCall() ) - { - iToolbarController->ShowToolbar(); - } + iAppui->AddToStackL( iPhoneView ); + iAppui->RemoveFromStack( iDialerView ); + + iEasyDialingController->HandleCommandL( EEasyDialingCallHandlingActivated ); + } } // --------------------------------------------------------------------------- @@ -3897,16 +3943,57 @@ } // --------------------------------------------------------------------------- -// CPhoneViewController::NumberEntryChangedHandler +// CPhoneViewController::IsDtmfDialerActive +// --------------------------------------------------------------------------- +// +TBool CPhoneViewController::IsDtmfDialerActive() const + { + TBool ret = + ( iDialer && iDtmfDialerController && + iDialer->Controller() == iDtmfDialerController ); + return ret; + } + +// --------------------------------------------------------------------------- +// CPhoneViewController::IsCustomDialerActive // --------------------------------------------------------------------------- // -MPhoneNumberEntryChangedHandler* CPhoneViewController::NumberEntryChangedHandler() const +TBool CPhoneViewController::IsCustomDialerActive() const { - if( iDialerController ) - return iDialerController; - else - return iBubbleWrapper; - + TBool ret = EFalse; + if ( iDialer ) + { + MPhoneDialerController* curController = iDialer->Controller(); + ret = ( curController && + curController != iDialerController && + curController != iDtmfDialerController ); + } + return ret; + } + +// --------------------------------------------------------------------------- +// CPhoneViewController::SetNeedToReturnToForegroundAppAfterCall +// --------------------------------------------------------------------------- +// +void CPhoneViewController::SetNeedToReturnToForegroundAppAfterCall( + TPhoneCommandParam* aCommandParam ) + { + TPhoneCmdParamBoolean* booleanParam = static_cast( + aCommandParam ); + + iNeedToReturnToForegroundAppAfterCall = booleanParam->Boolean(); + __PHONELOG1( EBasic, EPhoneUIView, + "CPhoneViewController::SetNeedToReturnToForegroundAppAfterCall(%d)", + iNeedToReturnToForegroundAppAfterCall ); + } + +// --------------------------------------------------------------------------- +// CPhoneViewController::GetNeedToReturnToForegroundAppAfterCall +// --------------------------------------------------------------------------- +// +TBool CPhoneViewController::GetNeedToReturnToForegroundAppAfterCall() const + { + return iNeedToReturnToForegroundAppAfterCall; } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/phoneringingtoneclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/phoneringingtoneclient.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2002-2005,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: Client interface of the phone ringing tone server. +* +*/ + + +// INCLUDE FILES +#include +#include +#include + +#include "phoneringingtoneclient.h" +#include "phoneringingtonesrv.h" +#include "phoneringingtonesrv.hrh" +#include "phoneuiviewtrace.h" + +// LOCAL FUNCTION PROTOTYPES +static TInt StartServer(); + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::RPhoneRingingTonePlayer +// ----------------------------------------------------------------------------- +// +RPhoneRingingTonePlayer::RPhoneRingingTonePlayer() : RSessionBase() + { + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::~RPhoneRingingTonePlayer +// ----------------------------------------------------------------------------- +// +RPhoneRingingTonePlayer::~RPhoneRingingTonePlayer() + { + Close(); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::Connect +// ----------------------------------------------------------------------------- +// +TInt RPhoneRingingTonePlayer::Connect() + { + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer::Connect <"); + TInt retries = 3; + TInt err = KErrNone; + + while(retries--) + { + err = CreateSession( KRingingToneServerName, + TVersion( KRingingToneSrvVersionMajor,KRingingToneSrvVersionMinor,KRingingToneSrvVersionBuild ) ); + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer::Connect: CreateSession err %d", err); + if ( ( err != KErrNotFound ) && ( err != KErrServerTerminated ) ) + { + break; + } + + err = StartServer(); + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer::Connect: StartServer err %d", err); + if ( ( err != KErrNone ) && ( err != KErrAlreadyExists ) ) + { + break; + } + } + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer::Connect, ret %d >", err); + return err; + } + + +// ----------------------------------------------------------------------------- +// StartServer +// ----------------------------------------------------------------------------- +// +TInt StartServer() +{ + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer <"); + + // Form thread name + TTime time; + time.UniversalTime(); + + TFullName threadName; + threadName.Format( _L("PhoneRingingToneThread%Ld"), time.Int64() ); + + // Create thread + RThread thread; + TInt err = thread.Create( threadName, CPhoneRingingToneServer::ThreadEntryFunc, 0x8000, NULL, NULL ); + if ( err != KErrNone ) + { + return err; + } + + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer: thread created"); + + // Bump thread priority + thread.SetPriority( EPriorityAbsoluteHigh ); + + // Rendezvous with the thread + TRequestStatus status; + thread.Rendezvous( status ); + if ( status != KRequestPending ) + { + thread.Kill( 0 ); + } + else + { + thread.Resume(); + } + + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer: waiting for rendezvous"); + + // Wait for thread start or death + User::WaitForRequest( status ); + thread.Close(); + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer - StartServer: rendezvous: %d", status.Int()); + + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer >"); + return status.Int(); +} + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetExtendedSecurityNeeded +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetExtendedSecurityNeeded( TBool aNeeded ) + { + SendReceive( ESetExtendedSecurityNeeded, TIpcArgs( aNeeded ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetToneFileSizeLimit +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetToneFileSizeLimit( TInt aLimit ) + { + SendReceive( ESetToneFileSizeLimit, TIpcArgs( aLimit ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetRingingToneL +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetRingingToneL( const TDesC& aFilename ) + { + User::LeaveIfError( SendReceive( ESetAudioRingingTone, TIpcArgs( &aFilename ) ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetDefaultRingingToneL +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetDefaultRingingToneL( const TDesC& aFilename ) + { + User::LeaveIfError( SendReceive( ESetDefaultRingingTone, TIpcArgs( &aFilename ) ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayAudioRingTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayAudioRingTone( TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayAudioRingTone, TIpcArgs( aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayTtsTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayTtsTone( const TDesC& aTextToSay, TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayTtsTone, TIpcArgs( &aTextToSay, aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayDefaultTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayDefaultTone( TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayDefaultTone, TIpcArgs( aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayBackupTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayBackupTone( TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayBackupTone, TIpcArgs( aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlaySilentTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlaySilentTone() + { + SendReceive( EPlaySilentTone ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::BeepOnce +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::BeepOnce( TInt aVolume ) + { + SendReceive( EBeepOnce, TIpcArgs( aVolume ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayUnsecureVoIPTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayUnsecureVoIPTone() + { + SendReceive( EPlayUnsecureVoIPTone ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::MuteRingingTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::MuteRingingTone() + { + SendReceive( EMuteRingingTone ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::StopPlaying +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::StopPlaying() + { + SendReceive( EStopPlaying ); + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/phoneringingtonesrv.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/phoneringingtonesrv.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,384 @@ +/* +* Copyright (c) 2002-2005,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: Ringing tone server. +* +*/ + + +// INCLUDE FILES +#include +#include + +#include "phoneringingtonesrv.h" +#include "phoneringingtonesrvsession.h" +#include "phoneringingtonesrvplayerao.h" +#include "phoneuiviewtrace.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::CPhoneRingingToneServer +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneServer::CPhoneRingingToneServer() + : CServer2( EPriorityHigh ) + { + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::~CPhoneRingingToneServer +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneServer::~CPhoneRingingToneServer() + { + delete iPlayer; + iPlayer = 0; + iFs.Close(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::NewLC +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneServer* CPhoneRingingToneServer::NewLC() + { + CPhoneRingingToneServer* self = new (ELeave) CPhoneRingingToneServer; + + CleanupStack::PushL(self); + self->ConstructL(); + + return self; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::ConstructL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::ConstructL() + { + User::LeaveIfError( iFs.Connect() ); + + // Allocate player + iPlayer = CPhoneRingingToneSrvPlayerAO::NewL( iFs ); + + // Try to start the server + StartL( KRingingToneServerName ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::NewSessionL +// ----------------------------------------------------------------------------- +// +CSession2* CPhoneRingingToneServer::NewSessionL( const TVersion& /*aVersion*/, const RMessage2& /*aMessage*/ ) const + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServerSession::NewSessionL" ); + + return CPhoneRingingToneServerSession::NewL( *const_cast(this) ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::IncrementSessions +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::IncrementSessions() + { + iSessionCount++; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::DecrementSessions +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::DecrementSessions() + { + if ( --iSessionCount <= 0 ) + { + CActiveScheduler::Stop(); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::ThreadEntryFunc +// ----------------------------------------------------------------------------- +// +TInt CPhoneRingingToneServer::ThreadEntryFunc( TAny* /*aPtr*/ ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::ThreadEntryFunc <" ); + // Allocate cleanup stack, active scheduler and server + CTrapCleanup* cleanup = CTrapCleanup::New(); + CActiveScheduler* scheduler = new CActiveScheduler; + + // Check that all allocations were ok + if ( !cleanup || !scheduler ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::ThreadEntryFunc: OOM" ); + // Out of memory + delete scheduler; + delete cleanup; + + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::ThreadEntryFunc >" ); + return KErrNoMemory; + } + + // Install active scheduler + CActiveScheduler::Install( scheduler ); + + // Run the server + TRAPD( err, CPhoneRingingToneServer::RunServerL() ); + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::ThreadEntryFunc: RunServerL err %d", err ); + + // Uninstall active scheduler + CActiveScheduler::Install( NULL ); + + // Cleanup + delete scheduler; + delete cleanup; + + return err; + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::RunServerL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::RunServerL() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::RunServerL <" ); + + // Allocate server + CPhoneRingingToneServer* server = CPhoneRingingToneServer::NewLC(); + + // Notify that we're running + RThread::Rendezvous( KErrNone ); + + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::RunServerL: server is running!" ); + + // Start active scheduler + CActiveScheduler::Start(); + + CleanupStack::PopAndDestroy(); // server + + // Won't stop until all sessions to the server are closed (last one calls CActiveScheduler::Stop) + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::RunServerL >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::SetExtendedSecurityNeeded +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::SetExtendedSecurityNeeded( TBool aNeeded ) + { + iPlayer->SetExtendedSecurityNeeded( aNeeded ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::SetToneFileSizeLimit +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::SetToneFileSizeLimit( TInt aLimit ) + { + iPlayer->SetToneFileSizeLimit( aLimit ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::SetRingingToneL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::SetRingingToneL( const RMessage2& aMessage ) + { + // Read filename from the message + TFileName filename; + TInt len = aMessage.GetDesLength( 0 ); + + aMessage.ReadL( 0, filename ); + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::SetRingingToneL: %S", &filename ); + + // Give the ringing tone to the player + iPlayer->SetRingingToneL( filename ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::SetDefaultRingingToneL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::SetDefaultRingingToneL( const RMessage2& aMessage ) + { + // Read filename from the message + TFileName filename; + TInt len = aMessage.GetDesLength( 0 ); + + aMessage.ReadL( 0, filename ); + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::SetDefaultRingingToneL: %S", &filename ); + + // Give the default tone to the player + iPlayer->SetDefaultRingingToneL( filename ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::PlayAudioRingTone +// ----------------------------------------------------------------------------- +// +TBool CPhoneRingingToneServer::PlayAudioRingTone( const RMessage2& aMessage ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayAudioRingTone <" ); + + // Read the parameters + TInt volume = aMessage.Int0(); + TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int1(); + + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneServer::PlayAudioRingTone: volume=%d, ringingType=%d", + volume, ringingType); + + TBool ret = iPlayer->PlayAudioRingTone( volume, ringingType, aMessage ); + + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayAudioRingTone >" ); + + return ret; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::PlayTtsTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::PlayTtsTone( const RMessage2& aMessage ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone <" ); + + // Read the parameters + TInt volume = aMessage.Int1(); + TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int2(); + + TInt ttsLen = aMessage.GetDesLength( 0 ); + HBufC* textToSay = HBufC::New( ttsLen ); + if ( !textToSay ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone: OOM!" ); + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone >" ); + return; + } + + TPtr ptr( textToSay->Des() ); + + TInt err = aMessage.Read( 0, ptr ); + if ( err != KErrNone ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::PlayTtsTone: read err %d", err ); + delete textToSay; + return; + } + + PHONEUIVIEW_PRINTF3( + "CPhoneRingingToneServer::PlayTtsTone: text=%S, volume=%d, ringingType=%d", + &(*textToSay), volume, ringingType ); + + iPlayer->PlayTtsTone( *textToSay, volume, ringingType ); + + // Cleanup + delete textToSay; + + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::PlayDefaultTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::PlayDefaultTone( const RMessage2& aMessage ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayDefaultTone <" ); + + // Read the parameters + TInt volume = aMessage.Int0(); + TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int1(); + + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneServer::PlayDefaultTone: volume=%d, ringingType=%d", + volume, ringingType ); + + iPlayer->PlayDefaultTone( volume, ringingType ); + + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayDefaultTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::PlayBackupTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::PlayBackupTone( const RMessage2& aMessage ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayBackupTone <" ); + + // Read the parameters + TInt volume = aMessage.Int0(); + TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int1(); + + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneServer::PlayBackupTone: volume=%d, ringingType=%d", + volume, ringingType ); + + iPlayer->PlayBackupTone( volume, ringingType ); + + PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayBackupTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::PlaySilentTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::PlaySilentTone() + { + iPlayer->PlaySilentTone(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::BeepOnce +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::BeepOnce( const RMessage2& aMessage ) + { + iPlayer->BeepOnce( aMessage.Int0() ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::PlayUnsecureVoIPTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::PlayUnsecureVoIPTone() + { + iPlayer->PlayUnsecureVoIPTone(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::MuteRingingTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::MuteRingingTone() + { + iPlayer->MuteRingingTone(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServer::StopPlaying +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServer::StopPlaying() + { + iPlayer->StopPlaying(); + } + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/phoneringingtonesrvplayerao.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/phoneringingtonesrvplayerao.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,1564 @@ +/* +* Copyright (c) 2002-2005,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: Active object of the ringing tone player. +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include + +#include "phoneui.pan" +#include "cphoneringingtone.h" +#include "cphoneaudioplayer.h" +#include "cphonetimer.h" +#include "phoneringingtonesrvplayerao.h" +#include "phoneringingtonesrv.h" +#include "phoneconstants.h" +#include "phoneuiviewtrace.h" + +#ifdef __WINS__ +#include +#endif + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::NewL +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneSrvPlayerAO* CPhoneRingingToneSrvPlayerAO::NewL( RFs& aFs ) + { + CPhoneRingingToneSrvPlayerAO* self = + new ( ELeave ) CPhoneRingingToneSrvPlayerAO( aFs ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::CPhoneRingingToneSrvPlayerAO +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneSrvPlayerAO::CPhoneRingingToneSrvPlayerAO( RFs &aFs ) : + CActive( CActive::EPriorityStandard ), + iFs( aFs ), + iAsyncDeletePlayers( EPlayerCount ) + { + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConstructL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::ConstructL() + { + for ( TInt i = EPlayerFirst; i <= EPlayerLast; i++ ) + { + User::LeaveIfError( + iAsyncDeletePlayers.Append( NULL ) ); + } + + // Construct timer. + iTimer = CPhoneTimer::NewL(); + iTtsDelayTimer = CPhoneTimer::NewL(); + + ConstructPlayers(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::~CPhoneRingingToneSrvPlayerAO +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneSrvPlayerAO::~CPhoneRingingToneSrvPlayerAO() + { + Cancel(); + + iAsyncDeletePlayers.ResetAndDestroy(); + iAsyncDeletePlayers.Close(); + + CleanupPlayers(); + + delete iTimer; + delete iTtsDelayTimer; + delete iDefaultRingingTone; + delete iAudioVideoRingingTone; + + if ( iClientMessage.Handle() ) + { + iClientMessage.Complete( KErrNone ); + } + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::PlayAudioRingTone +// ----------------------------------------------------------------------------- +// +TBool CPhoneRingingToneSrvPlayerAO::PlayAudioRingTone( + TInt aVolume, + TProfileRingingType aRingingType, + const RMessage2& aMessage ) + { + + TBool messageSaved = EFalse; + iTimer->Cancel(); + + // Release any old client (shouldn't happen) + if ( iClientMessage.Handle() ) + { + iClientMessage.Complete( KErrNone ); + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayAudioRingTone <" ); + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneSrvPlayerAO::PlayAudioRingTone - aVolume(%d), aRingingType(%d)", + aVolume, + aRingingType ); + + if ( !iAudioVideoRingingTone || + !CheckAndHandleToneSizeLimit( iAudioVideoRingingTone ) ) + { + PlayDefaultTone( aVolume, aRingingType ); + } + else if ( aRingingType == EProfileRingingTypeSilent ) + { + PlaySilentTone(); + } + else if ( aRingingType == EProfileRingingTypeBeepOnce ) + { + BeepOnce( aVolume ); + } + else + { + // Construct player for line 1. + if ( !iAudioPlayer ) + { + iAudioPlayer = ConstructTonePlayer( + *iAudioVideoRingingTone, + EPlayerAudio ); + + if ( !iTimer->IsActive() ) + { + PHONEUIVIEW_PRINT( "RING TONE FAILSAFE TIMER START!!" ); + // Start timer, since the player is constructed. + iTimer->After( KPhoneMaxRingingWaiting, this ); + } + } + + // Start playing. + if ( !iAudioPlayer ) + { + iTimer->Cancel(); + PlayDefaultTone( aVolume, aRingingType ); + } + else + { + PHONEUIVIEW_PRINT( + "CPhoneRingingToneSrvPlayerAO::PlayAudioRingTone - Start playing audio" ); + iVolume = aVolume; + iRingingType = aRingingType; + AddTtsPlaybackIfNeeded( aRingingType ); + iTonePlayingStatus = EAudioTonePlaying; + + // Save the client message which will be completed after init/error/timeout + iClientMessage = aMessage; + messageSaved = ETrue; + + iAudioPlayer->Play( + ConvertRingingType( aRingingType ), + aVolume, + iTtsToneToBePlayed ); + } + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayAudioRingTone >" ); + + return messageSaved; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::BeepOnce +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::BeepOnce( TInt aVolume ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::BeepOnce <" ); + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::BeepOnce - aVolume(%d)", aVolume ); + + if ( !iBeepOncePlayer ) + { + ConstructSequencePlayer( EPlayerBeepOnce ); + } + + if ( iBeepOncePlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::BeepOnce - Play" ); + iTonePlayingStatus = EBeepOnce; + iBeepOncePlayer->Play( CPhoneAudioPlayer::ETypeRingingOnce, + aVolume, EFalse ); + } + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::BeepOnce >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO,::PlaySilentTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::PlaySilentTone() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlaySilentTone <" ); + + if ( !iSilentPlayer ) + { + ConstructSequencePlayer( EPlayerSilent ); + } + + __ASSERT_DEBUG( iSilentPlayer, Panic( EPhoneViewGeneralError ) ); + + if ( iSilentPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlaySilentTone - play" ); + iTonePlayingStatus = ESilentTonePlaying; + iSilentPlayer->Play( CPhoneAudioPlayer::ETypeRinging, 0, EFalse ); + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlaySilentTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::PlayUnsecureVoIPTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::PlayUnsecureVoIPTone() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayUnsecureVoIPTone <" ); + if ( !iUnsecureVoIPTonePlayer ) + { + ConstructSequencePlayer( EPlayerUnsecureVoIP ); + } + __ASSERT_DEBUG( iUnsecureVoIPTonePlayer, Panic( EPhoneViewGeneralError ) ); + + if ( iUnsecureVoIPTonePlayer ) + { + iTonePlayingStatus = EUnsecureVoIPTonePlaying; + iUnsecureVoIPTonePlayer->Play( CPhoneAudioPlayer::ETypeRingingOnce, + KPhoneDefaultVolume, EFalse ); + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayUnsecureVoIPTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::MuteRingingTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::MuteRingingTone() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::MuteRingingTone <" ); + + CPhoneAudioPlayer* activePlayer = ActiveAudioPlayer(); + if ( activePlayer ) + { + activePlayer->MutePlaying(); + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::MuteRingingTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::StopPlaying +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::StopPlaying() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::StopPlaying <" ); + + // Complete waiting client just in case + if ( iClientMessage.Handle() ) + { + iClientMessage.Complete( KErrNone ); + } + + iTtsToneToBePlayed = EFalse; + iTTsTimeOutCounter = 0; + iTtsDelayTimer->Cancel(); + if ( iTtsPlayer ) + { + iTtsPlayer->StopPlaying(); + delete iTtsPlayer; + iTtsPlayer = NULL; + } + iTimer->Cancel(); + + switch( iTonePlayingStatus ) + { + case EAudioTonePlaying: + if ( iAudioPlayer ) + { + // Commented stopping out, since with this, the screen is jammed + // when REComSession::FinalClose() is reached in + // CPhoneAudioPlayer's destructor. + // Audio player is stopped anyway in its destructor. + // Fixes EKKI-7WYG2G and JKAN-7XNGQU. + // iAudioPlayer->StopPlaying(); + delete iAudioPlayer; + iAudioPlayer = NULL; + } + break; + case EDefaultTonePlaying: + if ( iDefaultPlayer ) + { + iDefaultPlayer->StopPlaying(); + delete iDefaultPlayer; + iDefaultPlayer = NULL; + } + break; + case EBeepOnce: + if ( iBeepOncePlayer ) + { + iBeepOncePlayer->StopPlaying(); + delete iBeepOncePlayer; + iBeepOncePlayer = NULL; + } + break; + case EBackupTonePlaying: + if ( iBackupPlayer ) + { + iBackupPlayer->StopPlaying(); + } + break; + case ESilentTonePlaying: + if ( iSilentPlayer ) + { + iSilentPlayer->StopPlaying(); + delete iSilentPlayer; + iSilentPlayer = NULL; + } + break; + case EUnsecureVoIPTonePlaying: + if ( iUnsecureVoIPTonePlayer ) + { + iUnsecureVoIPTonePlayer->StopPlaying(); + delete iUnsecureVoIPTonePlayer; + iUnsecureVoIPTonePlayer = NULL; + } + break; + case EIdle: + break; + default: + Panic( EPhoneViewCaseNotHandled ); + break; + } + + iTonePlayingStatus = EIdle; + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::StopPlaying >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::PlayTtsTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::PlayTtsTone( + const TDesC& aTextToSay, + TInt aVolume, + TProfileRingingType aRingingType ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayTtsTone <" ); + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneSrvPlayerAO::PlayTtsTone - aVolume(%d), aRingingType(%d)", + aVolume, aRingingType ); + + if ( iTtsPlayer ) + { + delete iTtsPlayer; + iTtsPlayer = NULL; + } + + //Set ringingtype for Tts. + iTtsRingingType = aRingingType; + iTtsVolume = aVolume; + + // TTS should be a bit louder, than main component. + // No need to check for overflows, they are handled in SET_PHONE_VOLUME macro. + + TPtrC ttsHeader( KPhoneTtsHeader ); + HBufC* preparedString = + HBufC::New( aTextToSay.Length() + ttsHeader.Length() ); + + if ( !preparedString ) + { + PHONEUIVIEW_PRINTF3( + "CPhoneRingingToneSrvPlayerAO::PlayTtsTone: Couldn't allocate buf %d + %d = %d", + aTextToSay.Length(), ttsHeader.Length(), aTextToSay.Length()+ttsHeader.Length() ); + } + else + { + TPtr pPreparedString = preparedString->Des(); + pPreparedString.Append( ttsHeader ); + pPreparedString.Append( aTextToSay ); + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::PlayTtsTone - about to say %S", + &pPreparedString ); + + TRAPD( + error, + iTtsPlayer = CPhoneAudioPlayer::NewTtsL( + *preparedString, + KAudioPriorityPhoneCall, + KAudioPrefTextToSpeechCallHardCoded, + *this, + EPlayerTts ) ); + if ( error == KErrNone ) + { + // To be played when default or personal tone will be played + iTtsToneToBePlayed = ETrue; + } + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneSrvPlayerAO::PlayTtsTone - error(%d), iTtsPhoneToBePlayed(%d)", + error, + iTtsToneToBePlayed ); + + delete preparedString; + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayTtsTone >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerError +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerError( + TPhoneAudioPlayerErrorEvent /*aEvent*/, + TInt aError, + TInt /*aId*/ ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerError <" ); + // This is called from CPhoneAudioPlayer - we do not + // want to delete instances from which this method + // is called. + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerError: error = %d", aError ); + + const TBool deleteAll = ( aError == KErrServerTerminated ); + + if ( deleteAll ) + { + // KErrServerTerminated is considered as fatal error. So we + // need to delete everything. + + for ( TInt i = EPlayerFirst; i <= EPlayerLast; i++ ) + { + DeletePlayerAsync( static_cast< TPlayerId >( i ) ); + } + + // Now all member audio players point to NULL, except + // those players in iAsyncDeletePlayers. Recreate + // players. + + ConstructPlayers(); // Ignore error code. + } + + iTimer->Cancel(); + DoHandlePlayerError( !deleteAll, EFalse ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerInitComplete +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerInitComplete( TInt aId ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerInitComplete <" ); + + // This is called from CPhoneAudioPlayer - we do not + // want to delete instances from which this method + // is called. + + // Complete waiting client + if ( iClientMessage.Handle() ) + { + iClientMessage.Complete( KErrNone ); + } + + if ( iTonePlayingStatus == EAudioTonePlaying && aId == EPlayerAudio || + iTonePlayingStatus == EDefaultTonePlaying && aId == EPlayerDefault ) + { + PHONEUIVIEW_PRINT( "RING TONE FAILSAFE TIMER STOP!!" ); + iTimer->Cancel(); + } + + if ( iTtsToneToBePlayed && ( aId != EPlayerTts ) ) + { + // Start TTS timer just before "normal ringtone component" starts + // playing, i.e. after init completed. + if ( iTtsDelayIndex < iTtsDelaysCount ) + { + if ( !iTtsDelayTimer->IsActive() ) + { + // There are TTS iterations to be played yet. + iTtsDelayTimer->After( + KPhoneTtsDelays[iTtsDelayIndex], + TCallBack( HandleTtsDelayTimeout, this ) ); + } + } + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleAudioPlayerInitComplete >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete( TInt aId ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete <" ); + // This is called from CPhoneAudioPlayer - we do not + // want to delete instances from which this method + // is called. + + // Complete waiting client (shouldn't reach this far, but who knows) + if ( iClientMessage.Handle() ) + { + iClientMessage.Complete( KErrNone ); + } + + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - aId(%d), iRingingType(%d)", + aId, + iRingingType ); + + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - iTtsToneToBePlayed(%d), iTtsDelayIndex(%d)", + iTtsToneToBePlayed, + iTtsDelayIndex ); + + if ( aId == EPlayerTts ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - resuming after TTS" ); + + // TTS playing complete, normal tone player should volume up. + if ( ( iTtsToneToBePlayed ) && ( ++iTtsDelayIndex < iTtsDelaysCount ) ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - resuming after TTS first time" ); + + //Callers name is said once. increase tone player volume. + SolveNewVolumeAndRamptime( ESaidOnce ); + + if ( !iTtsDelayTimer->IsActive() ) + { + // There are TTS iterations to be played yet. + iTtsDelayTimer->After( KPhoneTtsDelays[iTtsDelayIndex], + TCallBack( HandleTtsDelayTimeout,this ) ); + } + } + else + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - resuming after TTS second time" ); + SolveNewVolumeAndRamptime( ESaidTwice ); + } + + // No further processing. All TTS player-related events are not + // "real" ringtone playing completions. + return; + } + + //Case: RingintonePlayer has completed playing with following set: ring once and + // TTS is activated + else if ( iRingingType == EProfileRingingTypeRingingOnce && + iTtsToneToBePlayed ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - ring once and TTS" ); + if ( iTtsDelayIndex < iTtsDelaysCount ) + { + ReStartRingingTonePlayer(); + //Do not destroy player yet. Return. + return; + } + } + //Case: RingintonePlayer has completed playing with following set: ringing + //and TTS is activated. We need to restart ringintoneplayer and new TTS + //iterations are required. + else if ( iRingingType == EProfileRingingTypeRinging && iTtsToneToBePlayed ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - ringing and TTS" ); + if ( iTtsDelayIndex == iTtsDelaysCount ) + { + //Case: Ringingtype is EProfileRingingTypeRinging. New TTS + //iterations are required. + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - need to restart TTS sequence" ); + //TTS has completed its iterations,set index to zero. + iTtsDelayIndex = 0; + if ( !iTtsDelayTimer->IsActive() ) + { + //Restart TTS sequence + iTtsDelayTimer->After( + KPhoneTtsDelays[iTtsDelayIndex], + TCallBack( HandleTtsDelayTimeout, this ) ); + } + } + + ReStartRingingTonePlayer(); + //Do not destroy player yet. Return + return; + } + + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::HandlePlayingComplete - delete player - iTonePlayingStatus(%d)", + iTonePlayingStatus ); + switch( iTonePlayingStatus ) + { + case EAudioTonePlaying: + DeletePlayerAsync( EPlayerAudio ); + iAudioPlayer = NULL; + break; + + case EDefaultTonePlaying: + DeletePlayerAsync( EPlayerDefault ); + iDefaultPlayer = NULL; + break; + + case ESilentTonePlaying: + DeletePlayerAsync( EPlayerSilent ); + iSilentPlayer = NULL; + break; + + case EUnsecureVoIPTonePlaying: + DeletePlayerAsync( EPlayerUnsecureVoIP ); + iUnsecureVoIPTonePlayer = NULL; + break; + case EBeepOnce: + DeletePlayerAsync( EPlayerBeepOnce ); + iBeepOncePlayer = NULL; + break; + + case EBackupTonePlaying: + break; + + default: + Panic( EPhoneViewCaseNotHandled ); + break; + } + + iTonePlayingStatus = EIdle; + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::HandleTimeOutL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::HandleTimeOutL() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleTimeOutL <" ); + + + // Guarding timer for startup has expired + + + PHONEUIVIEW_PRINT( "RING TONE FAILSAFE TIMER TRIGGERED!!" ); + + // Start new audio player synchronously. + DoHandlePlayerError( ETrue, ETrue ); + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleTimeOutL >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::DoHandlePlayerError +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::DoHandlePlayerError( + TBool aDelete, + TBool aSync ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoHandlePlayerError <" ); + + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::DoHandlePlayerError: iTonePlayingStatus = %d", + iTonePlayingStatus ); + + // Complete waiting client + if ( iClientMessage.Handle() ) + { + iClientMessage.Complete( KErrNone ); + } + + switch ( iTonePlayingStatus ) + { + case EAudioTonePlaying: + if ( aDelete ) + { + if ( aSync ) + { + delete iAudioPlayer; + } + else + { + DeletePlayerAsync( EPlayerAudio ); + } + + iAudioPlayer = NULL; + } + +#ifdef __WINS__ + PlayAudioRingTone( iVolume, iRingingType, iClientMessage ); + iTonePlayingStatus = EDefaultTonePlaying; +#else + PlayDefaultTone( iVolume, iRingingType ); +#endif + break; + case EDefaultTonePlaying: + if ( aDelete ) + { + if ( aSync ) + { + delete iDefaultPlayer; + } + else + { + DeletePlayerAsync( EPlayerDefault ); + } + + iDefaultPlayer = NULL; + } + + PlayBackupTone( iVolume, iRingingType ); + break; + case ESilentTonePlaying: + case EBeepOnce: + case EBackupTonePlaying: + break; + default: + break; + } + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoHandlePlayerError >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::PlayDefaultTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::PlayDefaultTone( + TInt aVolume, + TProfileRingingType aRingingType ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayDefaultTone()" ); + + if( aRingingType == EProfileRingingTypeSilent || + aRingingType == EProfileRingingTypeBeepOnce ) + { + return; + } + + if ( !iDefaultRingingTone ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayDefaultTone - default tone does not exist, play backup..." ); + PlayBackupTone( aVolume, aRingingType ); + return; + } + + // Construct player. + if ( !iDefaultPlayer ) + { + iDefaultPlayer = ConstructTonePlayer( + *iDefaultRingingTone, + EPlayerDefault ); + if ( !iTimer->IsActive() ) + { + PHONEUIVIEW_PRINT( "RING TONE FAILSAFE TIMER START!!" ); + iTimer->After( KPhoneMaxRingingWaiting, this ); + } + } + + // Start playing. + if ( !iDefaultPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayDefaultTone - player not constructed, play backup..." ); + iTimer->Cancel(); + PlayBackupTone( aVolume, aRingingType ); + } + else + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayDefaultTone - play" ); + iVolume = aVolume; + iRingingType = aRingingType; + iTonePlayingStatus = EDefaultTonePlaying; + iDefaultPlayer->Play( + ConvertRingingType( aRingingType ), aVolume, iTtsToneToBePlayed ); + } + + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::PlayBackupTone +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::PlayBackupTone( + TInt aVolume, + TProfileRingingType aRingingType ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayBackupTone()" ); + __ASSERT_DEBUG( iBackupPlayer, Panic( EPhoneViewGeneralError ) ); + + if ( !iBackupPlayer ) + { + ConstructPlayers(); + } + + if ( iBackupPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::PlayBackupTone - play" ); + iTonePlayingStatus = EBackupTonePlaying; + + // Cease playing text-to-speech, if necessary + iTtsToneToBePlayed = EFalse; + iTTsTimeOutCounter = 0; + iTtsDelayTimer->Cancel(); + if ( iTtsPlayer ) + { + iTtsPlayer->StopPlaying(); + delete iTtsPlayer; + iTtsPlayer = NULL; + } + + iBackupPlayer->Play( + ConvertRingingType( aRingingType ), aVolume, EFalse ); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConstructTonePlayer +// ----------------------------------------------------------------------------- +// +CPhoneAudioPlayer* CPhoneRingingToneSrvPlayerAO::ConstructTonePlayer( + const CPhoneRingingTone& aRingingTone, + TInt aId ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructTonePlayer" ); + return CPhoneAudioPlayer::New( + aRingingTone, + KAudioPriorityPhoneCall, + KAudioPrefIncomingCall, + *this, + aId, + iMdaServer, + aId == EPlayerDefault ? EFalse : iExtSecNeeded ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConvertRingingType +// ----------------------------------------------------------------------------- +// +CPhoneAudioPlayer::TRingingType CPhoneRingingToneSrvPlayerAO::ConvertRingingType( + TProfileRingingType aRingingType ) + { + CPhoneAudioPlayer::TRingingType ringingType = + CPhoneAudioPlayer::ETypeRinging; + switch ( aRingingType ) + { + case EProfileRingingTypeRinging: + ringingType = CPhoneAudioPlayer::ETypeRinging; + break; + + case EProfileRingingTypeAscending: + ringingType = CPhoneAudioPlayer::ETypeAscending; + break; + + case EProfileRingingTypeRingingOnce: + ringingType = CPhoneAudioPlayer::ETypeRingingOnce; + break; + + default: + break; + } + return ringingType; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConstructPlayers +// ----------------------------------------------------------------------------- +// +TInt CPhoneRingingToneSrvPlayerAO::ConstructPlayers() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructPlayers <" ); + TRAPD( err, ConstructPlayersL() ); + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::ConstructPlayers: err = %d", err ); + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructPlayers >" ); + return err; + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConstructPlayersL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::ConstructPlayersL() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructPlayersL <" ); + if ( !iMdaServer ) + { + iMdaServer = CMdaServer::NewL(); + } + + // Construct Backup player. + if ( !iBackupPlayer ) + { + TFileName defaultSoundFile( KDriveZ ); + defaultSoundFile.Append( KPhoneDefaultSoundFile ); + + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::ConstructPlayersL: construct backup player, path = %S", + &defaultSoundFile ); + iBackupPlayer = CPhoneAudioPlayer::NewL( + defaultSoundFile, + KAudioPriorityPhoneCall, + KAudioPrefIncomingCall, + *this, + EPlayerBackup, + iMdaServer + ); + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructPlayersL >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayer +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayer( TPlayerId aId ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayer" ); + + // Construct players. + TRAPD( err, ConstructSequencePlayerL( aId ) ); + if ( err ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayer - err(%d)", err ); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayerL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayerL( TPlayerId aId ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayerL <" ); + + // Construct beep once player + if ( aId == EPlayerBeepOnce ) + { +#ifdef __WINS__ + TParse* fp = new (ELeave) TParse(); + fp->Set( KPhoneBeepOnceSoundFile, &KDC_RESOURCE_FILES_DIR, NULL ); + TFileName fileName( fp->FullName() ); + delete fp; + + iBeepOncePlayer = CPhoneAudioPlayer::NewL( + fileName, + KAudioPriorityPhoneCall, + KAudioPrefIncomingCall, + *this, + EPlayerBeepOnce ); +#else + iBeepOncePlayer = CPhoneAudioPlayer::NewSeqL( + KPhoneBeepSequence(), + KAudioPriorityPhoneCall, + KAudioPrefIncomingCall, + *this, + EPlayerBeepOnce ); +#endif // __WINS__ + } + + // Construct Silent Player. + else if ( aId == EPlayerSilent ) + { +#ifdef __WINS__ + TParse* fp = new (ELeave) TParse(); + fp->Set( KPhoneSilentSoundFile, &KDC_RESOURCE_FILES_DIR, NULL ); + TFileName fileName( fp->FullName() ); + delete fp; + + iSilentPlayer = CPhoneAudioPlayer::NewL( + fileName, + KAudioPriorityPhoneCall, + KAudioPrefIncomingCall, + *this, + EPlayerSilent ); +#else + iSilentPlayer = CPhoneAudioPlayer::NewSeqL( + KPhoneNoSoundSequence(), + KAudioPriorityPhoneCall, + KAudioPrefIncomingCall, + *this, + EPlayerSilent ); +#endif // __WINS__ + } + // Construct unsecure VoIP tone player. + else if ( aId == EPlayerUnsecureVoIP ) + { +#ifdef __WINS__ + TParse* fp = new (ELeave) TParse(); + fp->Set( KPhoneBeepOnceSoundFile, &KDC_RESOURCE_FILES_DIR, NULL ); + TFileName fileName( fp->FullName() ); + delete fp; + + iUnsecureVoIPTonePlayer = CPhoneAudioPlayer::NewL( + fileName, + KAudioPrioritySpecialInformationTone, + KAudioPrefSpecialInformation, + *this, + EPlayerUnsecureVoIP ); +#else + iUnsecureVoIPTonePlayer = CPhoneAudioPlayer::NewSeqL( + KPhoneUnsecureVoIPCall(), + KAudioPrioritySpecialInformationTone, + KAudioPrefSpecialInformation, + *this, + EPlayerUnsecureVoIP ); +#endif // __WINS__ + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ConstructSequencePlayerL >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::CleanupPlayers +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::CleanupPlayers() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::CleanupPlayers <" ); + + delete iAudioPlayer; + iAudioPlayer = NULL; + + delete iDefaultPlayer; + iDefaultPlayer = NULL; + + delete iBeepOncePlayer; + iBeepOncePlayer = NULL; + + delete iSilentPlayer; + iSilentPlayer = NULL; + + delete iUnsecureVoIPTonePlayer; + iUnsecureVoIPTonePlayer = NULL; + + delete iBackupPlayer; + iBackupPlayer = NULL; + + delete iMdaServer; + iMdaServer = NULL; + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::CleanupPlayers >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::DeletePlayerAsync +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::DeletePlayerAsync( TPlayerId aPlayer ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::DeletePlayerAsync(%d) <", aPlayer ); + + __ASSERT_DEBUG( aPlayer >= EPlayerFirst && aPlayer < iAsyncDeletePlayers.Count(), + Panic( EPhoneViewInvariant ) ); + + // Player is not deleted here, but in RunL. + Cancel(); + + if ( iAsyncDeletePlayers[ aPlayer ] ) + { + delete iAsyncDeletePlayers[ aPlayer ]; + iAsyncDeletePlayers[ aPlayer ] = NULL; + } + + CPhoneAudioPlayer** players[] = + { + &iAudioPlayer, + &iBeepOncePlayer, + &iSilentPlayer, + &iUnsecureVoIPTonePlayer, + &iDefaultPlayer, + &iBackupPlayer, + &iTtsPlayer + }; + + __ASSERT_DEBUG( iAsyncDeletePlayers.Count() > aPlayer, Panic( EPhoneUtilsIndexOutOfBounds ) ); + + iAsyncDeletePlayers[ aPlayer ] = *(players[ aPlayer ]); + *(players[ aPlayer ]) = NULL; + + iState = EDeletingAudioPlayer; + + TRequestStatus* status = &iStatus; + User::RequestComplete( status, KErrNone ); + SetActive(); + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::DeletePlayerAsync(%d) >", aPlayer ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::RunL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::RunL() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::RunL <" ); + + switch ( iState ) + { + case EDeletingAudioPlayer: + { + for ( TInt i = EPlayerFirst; i <= EPlayerLast; i++ ) + { + delete iAsyncDeletePlayers[ i ]; + iAsyncDeletePlayers[ i ] = NULL; + } + } + break; + + case EIdleState: + default: + break; + } // switch iState + + iState = EIdleState; + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::RunL >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::DoCancel +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::DoCancel() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoCancel" ); + // Request is completed immediately before SetActive. + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::HandleTtsDelayTimeout +// ----------------------------------------------------------------------------- +// +TInt CPhoneRingingToneSrvPlayerAO::HandleTtsDelayTimeout( TAny* aObject ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleTtsDelayTimeout <" ); + static_cast( aObject )-> + DoHandleTtsDelayTimeout(); + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::HandleTtsDelayTimeout >" ); + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout()" ); + PHONEUIVIEW_PRINTF2( + "CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout - iTtsRingingType(%d), iTTsTimeOutCounter(%d)", + iTtsRingingType, iTTsTimeOutCounter ); + + CPhoneAudioPlayer* currPlayer = GetCurrentlyActiveAudioPlayerWithTTs(); + + if ( !currPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout - null current player" ); + return; + } + TInt volume( 0 ); + //Ascending case. TTs player needs to be ascending. + if ( iTtsRingingType == EProfileRingingTypeAscending ) + { + //Volume needs to be different in different ascending steps + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout - play ascending" ); + if ( !iTTsTimeOutCounter ) + { + //We are saying callers name for the first time in ascending mode. + //Say callers name by volume level KTtsVolumeMin. + volume = KTtsVolumeMin; + + iTtsPlayer->Play( + ConvertRingingType( EProfileRingingTypeRingingOnce ), + volume, + iTtsToneToBePlayed ); + } + else + { + //Checks the case that ringingtone is very quiet. Then do not play + //TTS too loud + volume = iTtsVolume < KTtsVolumeMin ? KTtsVolumeMin : KTtsVolumeAscendingRepeat; + + //We are saying callers name for the second time in ascending mode. + //Say callers name by volume level KTtsVolumeAscendingRepeat and decrease current players volume + //to KPlayerVolumeAscendingRepeat. RampTime is zero + currPlayer->SetNewVolumeAndRamptime( KPlayerVolumeAscendingRepeat, 0 ); + iTtsPlayer->Play( + ConvertRingingType( EProfileRingingTypeRingingOnce ), + volume, + iTtsToneToBePlayed ); + } + + } + else //Normal ringing case. + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::DoHandleTtsDelayTimeout - play normal" ); + currPlayer->SetNewVolumeAndRamptime( iTtsVolume-5, 0 ); + iTtsPlayer->Play( + ConvertRingingType( EProfileRingingTypeRingingOnce ), + iTtsVolume, + iTtsToneToBePlayed ); + } + + iTTsTimeOutCounter++; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::AddTtsPlaybackIfNeeded +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::AddTtsPlaybackIfNeeded( + TProfileRingingType /*aRingingType*/ ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::AddTtsPlaybackIfNeeded" ); + if ( iTtsToneToBePlayed ) + { + iTtsDelayIndex = 0; + iTtsDelaysCount = KPhoneTtsDelaysCount; + } + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ExtendedSecurity +// ----------------------------------------------------------------------------- +// +TBool CPhoneRingingToneSrvPlayerAO::ExtendedSecurity() const + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::ExtendedSecurity: %d", iExtSecNeeded ); + return iExtSecNeeded; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime( TTtsStatus aStatus ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime <" ); + + CPhoneAudioPlayer* currPlayer = NULL; + currPlayer = GetCurrentlyActiveAudioPlayerWithTTs(); + if ( !currPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime - null current player" ); + return; + } + TInt ramptime( 0 ); + //Here is handled the cases when Callers name is said. Sequence is: + //3 sec. tone + name + 4 sec. tone + name +the tone until the end. + switch ( aStatus ) + { + case ESaidOnce: + if ( iTtsRingingType == EProfileRingingTypeAscending ) + { + //The ramptime could be ( 4 )* KPhoneTtsAscendingStep but now + //we are setting this to 0 because when Say callers name is said + //for first time: play ringing tone on level 3 for four secs. + ramptime = 0; + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime - said once ascending - ramptime(%d)", + ramptime ); + currPlayer->SetNewVolumeAndRamptime( KPlayerVolumeAscendingRepeat, ramptime ); + } + else + { + //Normal ringingtone case. Adjust volume back to profile level. + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime - said once normal - ramptime(%d)", + ramptime ); + currPlayer->SetNewVolumeAndRamptime( iTtsVolume, 0 ); + } + break; + + case ESaidTwice: + if ( iTtsRingingType == EProfileRingingTypeAscending ) + { + TInt vol = iTtsVolume; + if ( vol > KPlayerVolumeAscendingRepeat ) + { + vol = vol - KTtsVolumeAscendingDecrease; + } + + //TTS playing complete for second time. increase tone player volume. + ramptime = ( vol )*KPhoneTtsAscendingStep; + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime - said twice ascending - ramptime(%d)", + ramptime ); + currPlayer->SetNewVolumeAndRamptime( iTtsVolume, ramptime ); + } + else + { + //Normal ringingtone case. Adjust volume back to profile level. + PHONEUIVIEW_PRINTF( + "CPhoneRingingToneSrvPlayerAO::SolveNewVolumeAndRamptime - said twice normal - ramptime(%d)", + ramptime ); + currPlayer->SetNewVolumeAndRamptime( iTtsVolume, 0 ); + } + break; + + default: + break; + } + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::GetCurrentlyActiveAudioPlayerWithTTs +// ----------------------------------------------------------------------------- +// +CPhoneAudioPlayer* +CPhoneRingingToneSrvPlayerAO::GetCurrentlyActiveAudioPlayerWithTTs() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::GetCurrentlyActiveAudioPlayerWithTTs" ); + + if( iAudioPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::GetCurrentlyActiveAudioPlayerWithTTs - audio player" ); + return iAudioPlayer; + } + else if ( iDefaultPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::GetCurrentlyActiveAudioPlayerWithTTs - default player" ); + return iDefaultPlayer; + } + else if( iBackupPlayer ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::GetCurrentlyActiveAudioPlayerWithTTs - backup player" ); + return iBackupPlayer; + } + else + { + return NULL; + } + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ReStartRingingTonePlayer +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::ReStartRingingTonePlayer() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ReStartRingingTonePlayer <" ); + + //First get currently active player which plays among TTS player. + CPhoneAudioPlayer* currPlayer = NULL; + currPlayer = GetCurrentlyActiveAudioPlayerWithTTs(); + if ( currPlayer ) + { + currPlayer->ReStartPlaying(); + } + + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ReStartRingingTonePlayer >" ); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::CheckAndHandleToneSizeLimit +// ----------------------------------------------------------------------------- +// +TBool CPhoneRingingToneSrvPlayerAO::CheckAndHandleToneSizeLimit( + CPhoneRingingTone* aRingingTone ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::CheckAndHandleToneSizeLimit" ); + TBool bValidSize = ETrue; + + // If user has somehow managed to get a too large file as ringing tone, + // play default tone instead. + if ( iToneFileSizeLimitKB ) + { + if ( CheckToneFileSize( aRingingTone->FileName(), iToneFileSizeLimitKB) != KErrNone ) + { + bValidSize = EFalse; + } + } + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::CheckAndHandleToneSizeLimit - bValidSize(%d)", bValidSize ); + return bValidSize; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::CheckToneFileSize +// ----------------------------------------------------------------------------- +// +TInt CPhoneRingingToneSrvPlayerAO::CheckToneFileSize( const TDesC& aFile, TInt aSizeLimitKB ) + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::CheckToneFileSize" ); + + // Get file size + TInt size = 0; + TInt error = KErrNone; + + TEntry entry; + if ( KErrNone == iFs.Entry( aFile, entry )) + { + size = entry.iSize; + } + + // Check + aSizeLimitKB *= Kkilo; + if ( aSizeLimitKB && size > aSizeLimitKB ) + { + error = KErrTooBig; + } + + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::CheckToneFileSize: size = %d", size ); + return error; + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::ActiveAudioPlayer +// ----------------------------------------------------------------------------- +// +CPhoneAudioPlayer* CPhoneRingingToneSrvPlayerAO::ActiveAudioPlayer() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneSrvPlayerAO::ActiveAudioPlayer" ); + + switch( iTonePlayingStatus ) + { + case EAudioTonePlaying: + if ( iAudioPlayer ) + { + return iAudioPlayer; + } + break; + + case EDefaultTonePlaying: + if ( iDefaultPlayer ) + { + return iDefaultPlayer; + } + break; + + case EBeepOnce: + if ( iBeepOncePlayer ) + { + return iBeepOncePlayer; + } + break; + + case EBackupTonePlaying: + if ( iBackupPlayer ) + { + return iBackupPlayer; + } + break; + + case ESilentTonePlaying: + if ( iSilentPlayer ) + { + return iSilentPlayer; + } + break; + + case EUnsecureVoIPTonePlaying: + if ( iUnsecureVoIPTonePlayer ) + { + return iUnsecureVoIPTonePlayer; + } + break; + + default: + break; + } + + return NULL; + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::SetExtendedSecurityNeeded +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::SetExtendedSecurityNeeded( TBool aNeeded ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::SetExtendedSecurityNeeded: %d", aNeeded ); + + iExtSecNeeded = aNeeded; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::SetToneFileSizeLimit +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::SetToneFileSizeLimit( TInt aLimit ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::SetToneFileSizeLimit: %d", aLimit ); + + iToneFileSizeLimitKB = aLimit; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::SetRingingToneL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::SetRingingToneL( const TDesC& aFilename ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::SetRingingToneL: %S", &aFilename ); + + if ( !iAudioVideoRingingTone ) + { + iAudioVideoRingingTone = CPhoneRingingTone::NewL( aFilename ); + } + else if ( iAudioVideoRingingTone->FileName().Compare( aFilename ) ) + { + iAudioVideoRingingTone->SetFileName( aFilename ); + } + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneSrvPlayerAO::SetDefaultRingingToneL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneSrvPlayerAO::SetDefaultRingingToneL( const TDesC& aFilename ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneSrvPlayerAO::SetDefaultRingingToneL: %S", &aFilename ); + + if ( !iDefaultRingingTone ) + { + iDefaultRingingTone = CPhoneRingingTone::NewL( aFilename ); + } + else if ( iDefaultRingingTone->FileName().Compare( aFilename ) ) + { + iDefaultRingingTone->SetFileName( aFilename ); + } + } + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuiview/src/phoneringingtonesrvsession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/phoneringingtonesrvsession.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,136 @@ +/* +* Copyright (c) 2002-2005,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: Phone ringing tone server session. +* +*/ + + +// INCLUDE FILES +#include +#include + +#include "mphoneringingtonesrv.h" +#include "phoneringingtonesrv.hrh" +#include "phoneringingtonesrvsession.h" +#include "phoneuiviewtrace.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServerSession::CPhoneRingingToneServerSession +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneServerSession::CPhoneRingingToneServerSession( MPhoneRingingToneServer& aServer ) + : iServer( aServer ) + { + } + + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServerSession::~CPhoneRingingToneServerSession +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneServerSession::~CPhoneRingingToneServerSession() + { + iServer.DecrementSessions(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServerSession::NewL +// ----------------------------------------------------------------------------- +// +CPhoneRingingToneServerSession* CPhoneRingingToneServerSession::NewL( MPhoneRingingToneServer& aServer ) + { + CPhoneRingingToneServerSession* self = new (ELeave) CPhoneRingingToneServerSession( aServer ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); // self + + return self; + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServerSession::ConstructL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServerSession::ConstructL() + { + PHONEUIVIEW_PRINT( "CPhoneRingingToneServerSession::ConstructL" ); + iServer.IncrementSessions(); + } + +// ----------------------------------------------------------------------------- +// CPhoneRingingToneServerSession::ServiceL +// ----------------------------------------------------------------------------- +// +void CPhoneRingingToneServerSession::ServiceL( const RMessage2& aMessage ) + { + PHONEUIVIEW_PRINTF( "CPhoneRingingToneServerSession::ServiceL: func=%d", aMessage.Function() ); + + TBool noComplete = EFalse; + + switch ( aMessage.Function() ) + { + case ESetExtendedSecurityNeeded: + iServer.SetExtendedSecurityNeeded( aMessage.Int0() ); + break; + case ESetToneFileSizeLimit: + iServer.SetToneFileSizeLimit( aMessage.Int0() ); + break; + case ESetAudioRingingTone: + iServer.SetRingingToneL( aMessage ); + break; + case ESetDefaultRingingTone: + iServer.SetDefaultRingingToneL( aMessage ); + break; + + // Playback control + case EPlayAudioRingTone: + noComplete = iServer.PlayAudioRingTone( aMessage ); + break; + case EPlayTtsTone: + iServer.PlayTtsTone( aMessage ); + break; + case EPlayDefaultTone: + iServer.PlayDefaultTone( aMessage ); + break; + case EPlayBackupTone: + iServer.PlayBackupTone( aMessage ); + break; + case EPlaySilentTone: + iServer.PlaySilentTone(); + break; + case EBeepOnce: + iServer.BeepOnce( aMessage ); + break; + case EPlayUnsecureVoIPTone: + iServer.PlayUnsecureVoIPTone(); + break; + + case EMuteRingingTone: + iServer.MuteRingingTone(); + break; + case EStopPlaying: + iServer.StopPlaying(); + break; + default: + break; + } + + if ( !noComplete ) + { + aMessage.Complete( KErrNone ); + } + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/group/phoneuivoipextension.mmp --- a/phoneapp/phoneuivoipextension/group/phoneuivoipextension.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/group/phoneuivoipextension.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -108,4 +108,7 @@ LIBRARY serviceselector.lib LIBRARY vccuipropertyhandler.lib //For VCC Usage LIBRARY ws32.lib +LIBRARY centralrepository.lib +LIBRARY phoneuiview.lib +LIBRARY aknskins.lib diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/inc/cphonecustomizationvoip.h --- a/phoneapp/phoneuivoipextension/inc/cphonecustomizationvoip.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/inc/cphonecustomizationvoip.h Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ #define C_CPHONECUSTOMIZATIONVOIP_H // INCLUDES -#include +#include #include #include #include "mphonecustomization.h" @@ -207,6 +207,11 @@ void GetVoipServiceNameL( TServiceId aServiceId, TDes& aServiceName ) const; /** + * EasyDialing enabled check + */ + TBool EasyDialingEnabled(); + + /** * Modifies menu when there is active call. * @param aResourceId Menu resource id. * @param aMenuPane Menu pane diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/inc/cphonetransferdialercontroller.h --- a/phoneapp/phoneuivoipextension/inc/cphonetransferdialercontroller.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/inc/cphonetransferdialercontroller.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008, 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" @@ -23,7 +23,7 @@ // INCLUDES #include -#include "mphonedialercontroller.h" +#include "cphonedialercontroller.h" // FORWARD DECLARATIONS class CAknToolbar; @@ -31,8 +31,7 @@ /** * VoIP unattended transfer dialer customization */ -NONSHARABLE_CLASS( CPhoneTransferDialerController ): public CBase, - public MPhoneDialerController +NONSHARABLE_CLASS( CPhoneTransferDialerController ): public CPhoneDialerController { public: @@ -45,14 +44,6 @@ public: // From MDialerController - - /** - * Initializes the controller. - * @param aToolbar CAknToolbar instance. - * @since S60 v5.1 - */ - void InitializeL( CAknToolbar& aToolbar ); - /** * Returns Cba resource id * @return Resource Id of the softkeys @@ -75,35 +66,28 @@ const TDesC& NumberEntryPromptTextL(); /** - * Handles the number entry empty event - * @param aEmpty ETrue if numberentry is empty - * @since S60 v5.1 - */ - void HandleNumberEntryIsEmpty( TBool aEmpty ); + * @see MPhoneDialerController + */ + TInt GetButtonData( TButtonIndex aIndex, RPointerArray& aData ) const; /** - * Sets visibility of buttons created by the implementation - * @param aShow ETrue if numberentry is empty - * @since S60 v5.1 - */ - void ShowButtons( TBool aShow ); + * @see MPhoneDialerController + */ + TInt ButtonState( TButtonIndex aIndex ) const; + + /** + * @see MPhoneDialerController + */ + TBool ButtonDimmed( TButtonIndex aIndex ) const; + + /** + * @see MPhoneDialerController + */ + TBool EasyDialingAllowed() const; private: /** - * Creates instance of CAKnButton - * @param aNormalIconId Button normal icon id - * @param aNormalMaskId Mask id - * @param aTooltipText Reference to tooltip text - * @param aSkinIconId Skin icon id - * @return Pointer to created button instance - */ - CAknButton* CreateButtonLC( TInt aNormalIconId, - TInt aNormalMaskId, - const TDesC& aTooltipText, - const TAknsItemID& aSkinIconId ) const; - - /** * Returns tool tip for specific command * @param aCommandId Command id which the tooltip text * is needed @@ -113,6 +97,10 @@ TAknsItemID SkinId( TInt aIconIndex ) const; + CButtonData* CreateButtonDataL( + TInt aCommandId, + TInt aNormalIconId, + TInt aNormalMaskId ) const; protected: /** @@ -122,17 +110,8 @@ private: // Data - // Pointer to CAknToolbar, Not own - CAknToolbar* iToolbar; - - // ETrue if number entry input field is empty - TBool iNumberEntryIsEmpty; - // Number entry prompt text ("Address:") HBufC* iNumberEntryPromptText; - - // ETrue if initialized - TBool iIsInitialized; }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/inc/cphoneunattendedtransfercmdhandler.h --- a/phoneapp/phoneuivoipextension/inc/cphoneunattendedtransfercmdhandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/inc/cphoneunattendedtransfercmdhandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -64,6 +64,12 @@ * @param aCommand VoIP command identifier. */ void HandleCommandL( TInt aCommand ); + + /** + * Shows call back query in case when transfered call is + * not connected + */ + void LaunchCallBackQueryL(); private: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/inc/cphonevcchandler.h --- a/phoneapp/phoneuivoipextension/inc/cphonevcchandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/inc/cphonevcchandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -68,7 +68,12 @@ RArray& aArray, TInt aResourceId, CEikMenuPane& aMenuPane ); - + + /** + * CancelHandoverNoteTimer if running + */ + void CancelHandoverNoteTimerL(); + protected: CPhoneVccHandler( @@ -85,11 +90,6 @@ void StartHandoverNoteTimerL(); /** - * CancelHandoverNoteTimer if running - */ - void CancelHandoverNoteTimerL(); - - /** * Callback function for launching Handover wait note * This is called when HO note timer timeout is * reached @@ -108,7 +108,7 @@ */ void HandoverInProgressNoteL( TInt aCommand ); - // From MVccPsPropertyListenerObserver +// From MVccPsPropertyListenerObserver /** * Gets called when PS key is changed * @param aKeyId @@ -157,8 +157,14 @@ // Handover not allowed if multicall TBool iNoHoIfMultiCall; - // Listens for the hand-over commands - CVccUiPsPropertyListener* iPropListener; + // Listens for the hand-over status commands + CVccUiPsPropertyListener* iPropListener; + + // Listens for the hand-over request commands + CVccUiPsPropertyListener* iPropListenerReq; + + // Status of Handover failure + TBool iHOFailure; }; #endif // C_CPHONEVCCHANDLER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphonecustomizationvoip.cpp --- a/phoneapp/phoneuivoipextension/src/cphonecustomizationvoip.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphonecustomizationvoip.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include "cphonecustomizationvoip.h" #include "tphonecmdparaminteger.h" @@ -207,7 +209,7 @@ { case EPhoneDialerCmdTouchInput: { - if ( !AllowAlphaNumericMode() ) + if ( !VoIPSupportedL() ) { menuPane->DeleteMenuItem( menuItemArray[ i ] ); } @@ -232,7 +234,7 @@ case EPhoneInCallCmdNewCall: { if ( !FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) && - AllowAlphaNumericMode() && + VoIPSupportedL() && R_PHONEUI_NEW_CALL_MENU_VOIP != aResourceId ) { @@ -388,6 +390,8 @@ case EPhoneCmdTransferDialerExit: case EPhoneCmdTransferDialerSearch: case EPhoneCmdTransferDialerContactFetch: + case EPhoneCmdUnattendedTransferCallBackOk: + case EPhoneCmdUnattendedTransferCallBackCancel: // intended fall-through iTransferCmdHandler->HandleCommandL( aCommand ); handled = ETrue; @@ -457,6 +461,11 @@ TBool alphaModeSupported( EFalse ); TRAP_IGNORE( alphaModeSupported = VoIPSupportedL() ); + + if ( !alphaModeSupported ) + { + alphaModeSupported = EasyDialingEnabled(); + } return alphaModeSupported; } @@ -599,6 +608,11 @@ SendGlobalErrorNoteL( EPhoneRemoteForwarding ); break; } + case MEngineMonitor::EPEMessageTransferCallBackRequest: + { + iTransferCmdHandler->LaunchCallBackQueryL(); + break; + } default: handled = EFalse; break; @@ -680,6 +694,30 @@ return voipSupported; } +// ----------------------------------------------------------- +// CPhoneCustomizationVoip::EasyDialingEnabled +// ----------------------------------------------------------- +// +TBool CPhoneCustomizationVoip::EasyDialingEnabled() + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneCustomizationVoip::EasyDialingEnabled" ); + + TBool easyDialingEnabled( EFalse ); + if ( FeatureManager::FeatureSupported( KFeatureIdProductIncludesHomeScreenEasyDialing ) ) + { + TInt easyDialingSetting; + TInt err = CPhoneCenRepProxy::Instance()->GetInt( + KCRUidEasyDialSettings, + KEasyDialing, + easyDialingSetting); + if ( !err && easyDialingSetting ) + { + easyDialingEnabled = ETrue; + } + } + return easyDialingEnabled; + } // ----------------------------------------------------------- // CPhoneCustomizationVoip::ModifyInCallMenuL @@ -776,11 +814,12 @@ HBufC* phoneNumber = PhoneNumberFromEntryLC(); + TInt index(KErrNotFound); + if ( aResourceId == R_PHONEUI_NUMBERACQ_OPTIONS_CALL_MENU ) { if ( !CPhoneKeys::Validate( phoneNumber->Des() ) ) - { - TInt index(KErrNotFound); + { if ( aMenuPane.MenuItemExists( EPhoneNumberAcqCmdCall, index ) ) { aMenuPane.DeleteMenuItem( EPhoneNumberAcqCmdCall ); @@ -794,12 +833,12 @@ aMenuPane.AddMenuItemL( voipMenuItem->iData ); } - else if ( iStateMachine.PhoneEngineInfo()->PhoneNumberIsServiceCode() ) + else if ( !aMenuPane.MenuItemExists( EPhoneNumberAcqCmdCall, index ) ) { - // When user writes string recognized as service code (eg.*#31# -> clir off) - // call menu is not visible. Internet call must still be possible so - // internet call option is added here to the menu. - + // Call menu is removed if user inserts anything that is not + // a valid cs number, so must add Internet call option here where + // we know that voip is however supported. + // If number entry is empty don't add internet call option if ( phoneNumber->Length() ) { @@ -1089,7 +1128,16 @@ if( array[i].iCallState == CTelMenuExtension::EOutgoing || array[i].iCallState == CTelMenuExtension::EActive || array[i].iCallState == CTelMenuExtension::EOnHold ) - { + { + if( aFeature == EFeatureTransfer && + array[i].iCallState == CTelMenuExtension::EOutgoing && + array[i].iCallType == CTelMenuExtension::EPsVoice ) + { + // If there is outgoing VoIP call then transfer is not supported + supported = EFalse; + break; + } + if( firstCallType == CTelMenuExtension::EUninitialized ) { // Memorize first found call type @@ -1380,7 +1428,7 @@ "CPhoneCustomizationVoip::AddHandoverMenuItemIfNeededL" ); // Menu items to be added - if ( iVccHandler && AllowAlphaNumericMode() && + if ( iVccHandler && VoIPSupportedL() && ( aResourceId == R_PHONEUI_CALLHANDLING_INCALL_OPTIONS_MENU || aResourceId == R_PHONEUI_CALLWAITING_OPTIONS_MENU || aResourceId == R_PHONEUI_ACTIVEANDHELDCALL_OPTIONS_MENU || diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphoneresourceresolvervoip.cpp --- a/phoneapp/phoneuivoipextension/src/cphoneresourceresolvervoip.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphoneresourceresolvervoip.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -219,7 +219,7 @@ retVal = R_PHONE_VOIP_QUERY_ACC_ID_HEADER; break; case EPhoneVoIPTransferAddress: - retVal = R_VOIP_TRANSFER_ADDRESS; + retVal = R_VOIP_DIALER_UNATT_TRANSFER_INPUT_FIELD_TEXT; break; case EPhoneVoIPTransferDialerNumberEntryEmptyMenubar: retVal = R_PHONEUIDIALER_NUMBERENTRY_EMPTY_TRANSFER_MENUBAR; @@ -279,8 +279,7 @@ retVal = R_PHONEUI_VOIP_QUERY_HEADER_MOVED_PERMANENTLY; break; case EPhoneVoIPMovedPermanentlySoftkeys: - //retVal = R_PHONE_VOIP_SOFTKEYS_OK_END_CALL; - retVal = R_AVKON_SOFTKEYS_OK_CANCEL; + retVal = R_AVKON_SOFTKEYS_OK_ENDCALL; break; case EPhoneVoIPMultipleChoicesListQuery: retVal = R_PHONE_VOIP_MULTIPLE_CHOICES_LIST_QUERY; @@ -300,6 +299,12 @@ case EPhoneVoIPDefectiveSettings: retVal = R_PHONE_VOIP_CREATING_CONN_FAILED_PERMANENTLY; break; + case EPhoneVoIPTransferCallBackHeader: + retVal = R_VOIP_TRANSFER_CALL_BACK_HEADER; + break; + case EPhoneVoIPTransferCallBackText: + retVal = R_VOIP_TRANSFER_CALL_BACK; + break; default: retVal = CPhoneResourceResolverGSM::ResolveResourceID( aResource ); break; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphonestateidlevoip.cpp --- a/phoneapp/phoneuivoipextension/src/cphonestateidlevoip.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphonestateidlevoip.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -151,7 +151,7 @@ HBufC* phoneNumber = PhoneNumberFromEntryLC(); - if ( !IsSimOk() || IsEmergencyNumber( *phoneNumber ) ) + if ( !IsSimOk() || IsEmergencyNumber( *phoneNumber ) || IsDialingExtensionInFocusL() ) { CPhoneIdle::HandleSendCommandL(); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphonestatesinglevoip.cpp --- a/phoneapp/phoneuivoipextension/src/cphonestatesinglevoip.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphonestatesinglevoip.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -40,6 +40,9 @@ #include "cphonestateutilsvoip.h" #include "cphonestatemachinevoip.h" +#include "easydialingcommands.hrh" + + // ================= MEMBER FUNCTIONS ======================= // C++ default constructor can NOT contain any code, that @@ -137,7 +140,15 @@ break; case EPhoneNumberAcqCmdSendCommand: - StartCallingL(); + // If easydialing has focus, call should be initiated to focused contact. + if ( IsDialingExtensionInFocusL() ) + { + commandStatus = CPhoneSingleCall::HandleCommandL( aCommand ); + } + else + { + StartCallingL(); + } break; case EPhoneCmdAcceptUnattendedTransfer: @@ -177,11 +188,19 @@ if( IsNumberEntryVisibleL() && neLength ) { - if ( IsOnScreenDialerSupported() && - ( IsDTMFEditorVisibleL() || - IsCustomizedDialerVisibleL() ) ) + if ( IsOnScreenDialerSupported() ) { - return; + if ( IsDTMFEditorVisibleL() || + IsCustomizedDialerVisibleL() ) + { + return; + } + // If easydialing has focus, call should be initiated to focused contact. + else if ( IsDialingExtensionInFocusL() ) + { + CPhoneSingleCall::HandleKeyMessageL( aMessage, aKeyCode ); + return; + } } StartCallingL(); @@ -361,15 +380,21 @@ MPEEngineInfo* info = iStateMachine->PhoneEngineInfo(); const TPEPhoneNumber& transferTarget = info->UnattendedTransferTarget( CallId() ); - + info->SetIsTransferDial( ETrue ); TUint32 serviceId = iStateMachine->PhoneEngineInfo()-> ServiceId( CallId() ); StateUtils().SelectServiceAndDialL( transferTarget, serviceId ); + + // Store transferor address to phoneengine, this is used for + // calling back if transfer call fails for some reason + info->SetCallBackAddress( info->RemotePhoneNumber( CallId() ) ); } else { iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageRejectUnattendedTransfer ); + iStateMachine->PhoneEngineInfo()->SetCallBackAddress( + KNullDesC() ); } } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphonetransferdialercontroller.cpp --- a/phoneapp/phoneuivoipextension/src/cphonetransferdialercontroller.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphonetransferdialercontroller.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008, 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" @@ -19,8 +19,8 @@ // INCLUDES #include -#include #include +#include #include #include @@ -69,6 +69,7 @@ // might leave. // CPhoneTransferDialerController::CPhoneTransferDialerController() + : CPhoneDialerController( NULL, *CCoeEnv::Static() ) { } @@ -98,49 +99,6 @@ } // ----------------------------------------------------------- -// CPhoneTransferDialerController::Initialize -// ----------------------------------------------------------- -// -void CPhoneTransferDialerController::InitializeL( CAknToolbar& aToolbar ) - { - __LOGMETHODSTARTEND( PhoneUIVoIPExtension, - "CPhoneTransferDialerController::InitializeL()"); - - if ( !iIsInitialized ) - { - __PHONELOG1( - EAll, - PhoneUIVoIPExtension, - "Toolbar control count:=%d", - aToolbar.CountComponentControls()); - iToolbar = &aToolbar; - // Create transfer specific buttons and add them to the - // toolbar starting from index 0 - CAknButton* button( NULL ); - - for( TInt i = 0; i < KButtonCount; i++ ) - { - TAknsItemID skinId = SkinId( bArray[i].iIconIndex ); - // Load tooltip text. - HBufC* tooltipText = GetTooltipTextL( bArray[i].iCommandId ); - CleanupStack::PushL( tooltipText ); - button = CreateButtonLC( - bArray[i].iIconIndex, - bArray[i].iMaskIndex, - *tooltipText, - skinId ); - // Toolbar takes ownership of the button - iToolbar->AddItemL( button, EAknCtButton, bArray[i].iCommandId, 0, i ); - CleanupStack::Pop( button ); - CleanupStack::PopAndDestroy( tooltipText ); - } - iIsInitialized = ETrue; - } - - iNumberEntryIsEmpty = ETrue; - } - -// ----------------------------------------------------------- // CPhoneTransferDialerController::CbaResourceId // ----------------------------------------------------------- // @@ -155,7 +113,7 @@ // TInt CPhoneTransferDialerController::MenuResourceId() const { - if ( iNumberEntryIsEmpty ) + if ( !iNumberAvailable ) { return EPhoneVoIPTransferDialerNumberEntryEmptyMenubar; } @@ -177,84 +135,138 @@ { iNumberEntryPromptText = StringLoader::LoadL( CPhoneMainResourceResolver::Instance()-> - ResolveResourceID( EPhoneVoIPTransferAddress ) ); + ResolveResourceID( EPhoneVoIPTransferAddress ), &iCoeEnv ); } return *iNumberEntryPromptText; } -// ----------------------------------------------------------- -// CPhoneTransferDialerController::HandleNumberEntryIsEmpty -// ----------------------------------------------------------- +// --------------------------------------------------------------------------- +// GetButtonData +// --------------------------------------------------------------------------- // -void CPhoneTransferDialerController::HandleNumberEntryIsEmpty( TBool aIsEmpty ) +TInt CPhoneTransferDialerController::GetButtonData( TButtonIndex aIndex, RPointerArray& aData ) const { - __LOGMETHODSTARTEND( PhoneUIVoIPExtension, - "CPhoneTransferDialerController::HandleNumberEntryIsEmpty()"); - __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) ); - iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, aIsEmpty, EFalse ); - iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, !aIsEmpty, EFalse ); - iToolbar->SetItemDimmed( EPhoneDialerCmdClear, aIsEmpty, EFalse ); - iNumberEntryIsEmpty = aIsEmpty; + TInt err = KErrNone; + + TInt arrayIdx = KErrNotFound; + if ( aIndex == ECallButton ) + { + arrayIdx = 0; + } + else if ( aIndex == EPhonebookButton ) + { + arrayIdx = 1; + } + + if ( arrayIdx >= 0 ) + { + const TPhoneDialerToolbarButton& arrItem = bArray[ arrayIdx ]; + CButtonData* btn = NULL; + TRAP( err, btn = CreateButtonDataL( arrItem.iCommandId, + arrItem.iIconIndex, + arrItem.iMaskIndex ) ); + if ( !err ) + { + err = aData.Append( btn ); + if ( err ) + { + delete btn; + } + } + } + else + { + // Trust base class on other buttons (i.e. the clear button) + err = CPhoneDialerController::GetButtonData( aIndex, aData ); + } + + return err; } -// ----------------------------------------------------------- -// CPhoneTransferDialerController::ShowButtons -// ----------------------------------------------------------- +// --------------------------------------------------------------------------- +// ButtonState +// --------------------------------------------------------------------------- // -void CPhoneTransferDialerController::ShowButtons( TBool aShow ) +TInt CPhoneTransferDialerController::ButtonState( TButtonIndex aIndex ) const { - __LOGMETHODSTARTEND( PhoneUIVoIPExtension, - "CPhoneTransferDialerController::ShowButtons()"); - __ASSERT_DEBUG( iToolbar, Panic( EPhoneCtrlInvariant ) ); - for( TInt i = 0; i < KButtonCount; i++ ) + // Out button have only one state. Trust base class on clear button + if ( aIndex == ECallButton || aIndex == EPhonebookButton ) { - iToolbar->HideItem( bArray[ i ].iCommandId, !aShow, EFalse ); - } - - if ( aShow ) + return 0; + } + else { - iToolbar->SetItemDimmed( EPhoneCmdTransferDialerOk, ETrue, EFalse ); - iToolbar->SetItemDimmed( EPhoneCmdTransferDialerSearch, EFalse, EFalse ); - iToolbar->SetItemDimmed( EPhoneDialerCmdClear, ETrue, EFalse ); + return CPhoneDialerController::ButtonState( aIndex ); } - - iToolbar->DrawDeferred(); } // --------------------------------------------------------------------------- -// PhoneTransferDialerController::CreateButtonLC +// ButtonDimmed // --------------------------------------------------------------------------- // -CAknButton* CPhoneTransferDialerController::CreateButtonLC( - TInt aNormalIconId, - TInt aNormalMaskId, - const TDesC& aTooltipText, - const TAknsItemID& aSkinIconId ) const - { +TBool CPhoneTransferDialerController::ButtonDimmed( TButtonIndex aIndex ) const + { + TBool dimmed = EFalse; + + // Ok is dimmed when there's no number. Search is dimmed when there is + // a number. Trust base class on clear button. + if ( aIndex == ECallButton ) + { + dimmed = !iNumberAvailable; + } + else if ( aIndex == EPhonebookButton ) + { + dimmed = iNumberAvailable; + } + else + { + dimmed = CPhoneDialerController::ButtonDimmed( aIndex ); + } + return dimmed; + } + +// --------------------------------------------------------------------------- +// EasyDialingAllowed +// --------------------------------------------------------------------------- +// +TBool CPhoneTransferDialerController::EasyDialingAllowed() const + { + return EFalse; + } + +// --------------------------------------------------------------------------- +// PhoneTransferDialerController::CreateButtonDataL +// --------------------------------------------------------------------------- +// +MPhoneDialerController::CButtonData* CPhoneTransferDialerController::CreateButtonDataL( + TInt aCommandId, + TInt aNormalIconId, + TInt aNormalMaskId ) const + { __LOGMETHODSTARTEND( PhoneUIVoIPExtension, - "CPhoneTransferDialerController::CreateButtonLC()"); + "CPhoneTransferDialerController::CreateButtonDataL()"); + + // Load tooltip text. + HBufC* tooltipText = GetTooltipTextL( aCommandId ); + CleanupStack::PushL( tooltipText ); + + // Load icon TFileName mifPath( KDriveZ ); mifPath.Append( KDC_APP_BITMAP_DIR ); mifPath.Append( KPhoneMifFileName ); - - CAknButton* button = CAknButton::NewLC( - mifPath, - aNormalIconId, - aNormalMaskId, - -1, -1, // dimmed - -1, -1, // pressed - -1, -1, // hover - KNullDesC, - aTooltipText, // help - 0, // flags - 0, // state flags - aSkinIconId ); - - button->SetFocusing( EFalse ); - button->SetBackground( iToolbar ); - - return button; + + TAknsItemID skinId = SkinId( aNormalIconId ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CGulIcon* icon = AknsUtils::CreateGulIconL( skin, skinId, mifPath, + aNormalIconId, aNormalMaskId ); + CleanupStack::PushL( icon ); + + CButtonData* btnData = new (ELeave) CButtonData( aCommandId, icon, tooltipText ); + CleanupStack::Pop( icon ); + CleanupStack::Pop( tooltipText ); + + return btnData; } // --------------------------------------------------------------------------- @@ -278,13 +290,16 @@ resourceId = R_VOIP_DIALER_TOOLTIP_SEARCH; break; default: - tooltip = KNullDesC().Alloc(); break; } if ( resourceId ) { - tooltip = StringLoader::LoadL( resourceId, CCoeEnv::Static() ); + tooltip = StringLoader::LoadL( resourceId, &iCoeEnv ); + } + else + { + tooltip = KNullDesC().AllocL(); } return tooltip; } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphoneunattendedtransfercmdhandler.cpp --- a/phoneapp/phoneuivoipextension/src/cphoneunattendedtransfercmdhandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphoneunattendedtransfercmdhandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -17,6 +17,8 @@ #include #include +#include + #include "cphoneunattendedtransfercmdhandler.h" #include "cphonelogger.h" @@ -32,6 +34,9 @@ #include "tphonecmdparamquery.h" #include "tphonecmdparamglobalnote.h" #include "cphonemainresourceresolver.h" +#include "cphonestatemachinevoip.h" +#include "cphonestateutilsvoip.h" + // ======== MEMBER FUNCTIONS ======== @@ -147,7 +152,23 @@ } } break; - + case EPhoneCmdUnattendedTransferCallBackOk: + { + MPEEngineInfo* info = iStateMachine.PhoneEngineInfo(); + const TDesC& callBackToAddr = info->CallBackAddress(); + // Service id used for last call is used to call back + TUint32 serviceId = info->ServiceIdCommand(); + static_cast( + iStateMachine ).StateUtils().SelectServiceAndDialL( + callBackToAddr, serviceId ); + } + break; + case EPhoneCmdUnattendedTransferCallBackCancel: + { + MPEEngineInfo* info = iStateMachine.PhoneEngineInfo(); + info->SetCallBackAddress( KNullDesC ); + } + break; default: __PHONELOG( EOnlyFatal, PhoneUIVoIPExtension, "CPhoneUnattendedTransferCmdHandler::HandleCommandL, DEFAULT" ); @@ -322,3 +343,48 @@ iViewCommandHandle.ExecuteCommandL( EPhoneViewShowGlobalNote, &globalNoteParam ); } + +// --------------------------------------------------------------------------- +// CPhoneUnattendedTransferCmdHandler::LaunchCallBackQuery +// --------------------------------------------------------------------------- +// +void CPhoneUnattendedTransferCmdHandler::LaunchCallBackQueryL() + { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneUnattendedTransferCmdHandler::LaunchCallBackQueryL() ") + MPEEngineInfo* info = iStateMachine.PhoneEngineInfo(); + const TDesC& callBackToAddr = info->CallBackAddress(); + // We cannot do call back if original call had private address + if ( callBackToAddr.Compare( KNullDesC ) == 0 ) + { + return; + } + + TPhoneCmdParamQuery queryParam; + queryParam.SetQueryType( EPhoneGlobalMsgQuery ); + + HBufC* msgHeader = + StringLoader::LoadLC( CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( EPhoneVoIPTransferCallBackHeader ) ); + queryParam.SetQueryPrompt( *msgHeader ); + + HBufC* queryText = + StringLoader::LoadLC( CPhoneMainResourceResolver::Instance()-> + ResolveResourceID( + EPhoneVoIPTransferCallBackText ), callBackToAddr ); + + queryParam.SetDataText( &queryText->Des() ); + + queryParam.SetDefaultCba( R_AVKON_SOFTKEYS_OK_CANCEL ); + + // configure custom command mappings for user responses + queryParam.SetCbaCommandMapping( + EAknSoftkeyOk, EPhoneCmdUnattendedTransferCallBackOk ); + queryParam.SetCbaCommandMapping( + EAknSoftkeyCancel, EPhoneCmdUnattendedTransferCallBackCancel ); + + iViewCommandHandle.ExecuteCommandL( EPhoneViewShowQuery, &queryParam ); + + CleanupStack::PopAndDestroy( queryText ); + CleanupStack::PopAndDestroy( msgHeader ); + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp --- a/phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -56,7 +56,8 @@ MPhoneStateMachine& aStateMachine, MPhoneViewCommandHandle& aViewCommandHandle ) : iStateMachine( aStateMachine ), - iViewCommandHandle( aViewCommandHandle ), iVccHoReady( ETrue ) + iViewCommandHandle( aViewCommandHandle ), iVccHoReady( ETrue ), + iHOFailure ( EFalse ) { } @@ -68,6 +69,7 @@ CPhoneVccHandler::~CPhoneVccHandler() { delete iPropListener; + delete iPropListenerReq; TRAPD( err, CancelHandoverNoteTimerL() ); if ( err != KErrNone ) { @@ -85,7 +87,12 @@ { iPropListener = CVccUiPsPropertyListener::NewL( KVccPropKeyHoStatus ); iPropListener->AddObserverL( *this ); - iPropListener->Start(); + iPropListener->Start(); + + iPropListenerReq = CVccUiPsPropertyListener::NewL( KVccPropKeyHoRequest ); + iPropListenerReq->AddObserverL( *this ); + iPropListenerReq->Start(); + } // ----------------------------------------------------------- @@ -274,7 +281,15 @@ if ( iVccHoReady && !iHandoverNoteTimer ) { - iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveGlobalNote ); + iViewCommandHandle.ExecuteCommandL( EPhoneViewRemoveGlobalNote ); + if ( iHOFailure ) + { + iHOFailure = EFalse; + CPhoneState* phoneState = + static_cast< CPhoneState* >( iStateMachine.State() ); + phoneState->SendGlobalInfoNoteL( EPhoneVoIPHandoverFail ); + + } } } @@ -284,10 +299,16 @@ // void CPhoneVccHandler::HandoverInProgressNoteL( TInt aCommand ) { - TPhoneCmdParamGlobalNote globalNoteParam; + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneVccHandler::HandoverInProgressNoteL()"); + + TPhoneCmdParamGlobalNote globalNoteParam; -// Check notification tone user setting - TInt tone = GetHoNotifToneModeL(); + // Check notification tone user setting + TInt tone = GetHoNotifToneModeL(); + + __PHONELOG1( EBasic, EPhoneControl, + "CPhoneVccHandler::HandoverInProgressNoteL - tone: %d", tone ); if ( tone == 1 ) { @@ -324,6 +345,41 @@ __PHONELOG1( EBasic, EPhoneControl, "CPhoneVccHandler::VccPropertyChangedL - key: %d", aValue ); + if( aKeyId == KVccPropKeyHoRequest ) + { + switch( aValue ) + { + case EVccAutomaticStartPsToCsHoRequest: + { + __PHONELOG( EBasic, PhoneUIVoIPExtension, + "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- EVccAutomaticStartPsToCsHoRequest" ); + // Do not show if already started since the wait note is + // already visible + if ( iVccHoReady && !iHandoverNoteTimer ) + { + iVccHoReady = EFalse; + HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan ); + } + } + break; + case EVccAutomaticStartCsToPsHoRequest: + { + __PHONELOG( EBasic, PhoneUIVoIPExtension, + "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- EVccAutomaticStartCsToPsHoRequest" ); + // Do not show if already started since the wait note is + // already visible + if ( iVccHoReady && !iHandoverNoteTimer ) + { + iVccHoReady = EFalse; + HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm ); + } + } + break; + default: + // none + break; + } + } if( aKeyId == KVccPropKeyHoStatus ) { @@ -338,11 +394,12 @@ if( !iVccHoReady ) { iVccHoReady = ETrue; - CPhoneState* phoneState = - static_cast< CPhoneState* >( iStateMachine.State() ); - CancelHandoverNoteTimerL(); - phoneState->SendGlobalInfoNoteL( EPhoneVoIPHandoverFail ); - } + iHOFailure = ETrue; + if ( !iHandoverNoteTimer ) + { + RemoveHandoverNoteL(); + } + } } break; case EVccCsToPsHoSuccessful: @@ -358,9 +415,9 @@ { __PHONELOG( EBasic, PhoneUIVoIPExtension, "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- CsToPsHoStarted" ); - // Do not show if manually started since the wait note is + // Do not show if already started since the wait note is // already visible - if ( iVccHoReady ) + if ( iVccHoReady && !iHandoverNoteTimer ) { iVccHoReady = EFalse; HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromGsm ); @@ -371,9 +428,9 @@ { __PHONELOG( EBasic, PhoneUIVoIPExtension, "CPhoneVccHandler::VccPropertyChangedL VccPropertyChangedL -- PsToCsHoStarted" ); - // Do not show if manually started since the wait note is + // Do not show if already started since the wait note is // already visible - if ( iVccHoReady ) + if ( iVccHoReady && !iHandoverNoteTimer ) { iVccHoReady = EFalse; HandoverInProgressNoteL( EPhoneVoIPWaitHandoverFromWlan); @@ -401,6 +458,14 @@ iVccHoAllowedToWlan = ETrue; iNoHoIfMultiCall = EFalse; iVccUnavailable = EFalse; + if( !iVccHoReady ) + { + iVccHoReady = ETrue; + if ( !iHandoverNoteTimer ) + { + RemoveHandoverNoteL(); + } + } break; } case EVccCsToPsNotAllowed: @@ -470,6 +535,9 @@ // TInt CPhoneVccHandler::GetHoNotifToneModeL() { + __LOGMETHODSTARTEND( PhoneUIVoIPExtension, + "CPhoneVccHandler::GetHoNotifToneModeL() "); + // Find out VCC service id CSPProperty* property = CSPProperty::NewLC(); @@ -484,6 +552,9 @@ TInt voipId; TInt error = property->GetValue( voipId ); + __PHONELOG1( EBasic, EPhoneControl, + "CPhoneVccHandler::GetHoNotifToneModeL - voipId: %d", voipId ); + // Find and get the HO notification tone property TInt tone = 0; RBuf value; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/phoneuivoipextension/srcdata/phoneuivoip.rss --- a/phoneapp/phoneuivoipextension/srcdata/phoneuivoip.rss Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/phoneuivoipextension/srcdata/phoneuivoip.rss Fri Apr 23 14:59:43 2010 +0100 @@ -853,7 +853,7 @@ MENU_ITEM { command = EPhoneCmdTransferDialerOk; - txt = text_softkey_accept; + txt = qtn_dialer_options_send_uatransfer_req; }, MENU_ITEM { @@ -909,7 +909,7 @@ // RESOURCE TBUF r_voip_dialer_tooltip_accept { - buf = text_softkey_accept; + buf = qtn_dialer_options_send_uatransfer_req; } // ----------------------------------------------------------------------------- @@ -1368,6 +1368,17 @@ //----------------------------------------------------------------------------- // +// r_voip_dialer_unatt_transfer_input_field_text "Address:" +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_voip_dialer_unatt_transfer_input_field_text + { + buf = qtn_dialer_unatt_transfer_input_field_text; + } + +//----------------------------------------------------------------------------- +// // r_phoneui_numberacq_options_menu_item_xsp // "%U call" // @@ -1380,6 +1391,28 @@ { buf = qtn_call_sub_voip_with_name; } + +//----------------------------------------------------------------------------- +// +// r_voip_transfer_call_back "Call back to\n%U" +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_voip_transfer_call_back + { + buf = qtn_voip_transfer_call_back; + } + +//----------------------------------------------------------------------------- +// +// r_voip_transfer_call_back_header "Call back request:" +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_voip_transfer_call_back_header + { + buf = qtn_voip_transfer_call_back_header; + } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneapp/silenceactionplugin/data/silence.rul --- a/phoneapp/silenceactionplugin/data/silence.rul Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneapp/silenceactionplugin/data/silence.rul Fri Apr 23 14:59:43 2010 +0100 @@ -1,133 +1,45 @@ \ No newline at end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/CPhCntContact.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/CPhCntContact.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/CPhCntContact.h Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ #define CPHCNTCONTACT_H #include -#include "MPhCntMatch.h" +#include "mphcntmatch.h" #include "tphcntnumber.h" class MPhCntContactFields; @@ -333,4 +333,4 @@ CCntRawPhoneNumberExtractor* iNumberExtractor; }; -#endif // CPHCNTCONTACT_H \ No newline at end of file +#endif // CPHCNTCONTACT_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactdataselection.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactdataselection.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactdataselection.h Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ #define CPHCNTCONTACTDATASELECTION_H #include -#include "MPhCntMatch.h" +#include "mphcntmatch.h" NONSHARABLE_CLASS( CPhCntSelectedData ) : public CBase { diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactdataselectionimpl.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactdataselectionimpl.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactdataselectionimpl.h Fri Apr 23 14:59:43 2010 +0100 @@ -25,7 +25,7 @@ #include "tphcntcontactlinkresult.h" #include "mphcntaiwservice.h" #include "MPhCntContactFetchObserver.h" -#include "MPhCntMatch.h" +#include "mphcntmatch.h" class MPhCntServiceRequestParamFactory; class MPhCntServiceRequestParam; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactfieldsresolver.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactfieldsresolver.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactfieldsresolver.h Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ #include #include "tphcntcontactfield.h" -#include "MPhCntMatch.h" +#include "mphcntmatch.h" #include "mphcntcontactfields.h" class MVPbkContactLink; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/mphcntcontactfields.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/mphcntcontactfields.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/mphcntcontactfields.h Fri Apr 23 14:59:43 2010 +0100 @@ -19,7 +19,7 @@ #define MPHCNTCONTACTFIELDS_H #include -#include "MPhCntMatch.h" +#include "mphcntmatch.h" #include "tphcntnumber.h" class MVPbkContactLinkArray; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/tphcntcontactfield.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/tphcntcontactfield.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/tphcntcontactfield.h Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ #include #include -#include "MPhCntMatch.h" +#include "mphcntmatch.h" #include "tphcntnumber.h" class MPhCntContactManager; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/inc/tphcntnumber.h --- a/phoneengine/PhoneCntFinder/ContactService/inc/tphcntnumber.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/inc/tphcntnumber.h Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ #include -#include "MPhCntMatch.h" +#include "mphcntmatch.h" /** * Represents phone number. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/src/CPhCntService.cpp --- a/phoneengine/PhoneCntFinder/ContactService/src/CPhCntService.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/src/CPhCntService.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -82,8 +82,8 @@ iCriteriaArray.AppendL( assignCriteria ); + CleanupStack::Pop( assignCriteria ); iAiwService->AttachL( iCriteriaArray ); - CleanupStack::Pop( assignCriteria ); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/ContactService/src/cphcntmatchervoipimpl.cpp --- a/phoneengine/PhoneCntFinder/ContactService/src/cphcntmatchervoipimpl.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/ContactService/src/cphcntmatchervoipimpl.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -27,7 +27,7 @@ #include "cphcntmatchcontact.h" #include "cphcntvoipcontactmatchstrategy.h" #include "tphcntvoipmatchArray.h" -#include "MPhCntMatch.h" +#include "mphcntmatch.h" #include "CPhCntContact.h" #include "cphcntvpbkcontactid.h" #include "cphcntfetchcontact.h" diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/Group/bld.inf --- a/phoneengine/PhoneCntFinder/Group/bld.inf Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/Group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -23,12 +23,12 @@ PRJ_EXPORTS ../inc/CPhoneCntFactory.h |../../../inc/cphonecntfactory.h ../inc/CPhoneCntSaveAddToName.h |../../../inc/cphonecntsaveaddtoname.h -../inc/MPhCntMatch.h |../../../inc/mphcntmatch.h +../inc/mphcntmatch.h |../../../inc/mphcntmatch.h ../inc/CPhCntMatcher.h |../../../inc/cphcntmatcher.h ../inc/cphcntcontactid.h |../../../inc/cphcntcontactid.h ../inc/Misc/CPhCntSingleItemFetch.h |../../../inc/cphcntsingleitemfetch.h -../inc/Misc/CPhCntThumbnailLoader.h |../../../inc/cphcntthumbnailloader.h +../inc/Misc/cphcntthumbnailloader.h |../../../inc/cphcntthumbnailloader.h ../inc/Misc/MPhCntThumbnailLoaderObserver.h |../../../inc/mphcntthumbnailloaderobserver.h ../inc/Misc/CPhCntSpeedDialMonitor.h |../../../inc/cphcntspeeddialmonitor.h ../inc/Misc/CPhCntRfsHandler.h |../../../inc/cphcntrfshandler.h diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/inc/CPhCntMatch.h --- a/phoneengine/PhoneCntFinder/inc/CPhCntMatch.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/inc/CPhCntMatch.h Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ #define CPHCNTMATCH_H // INCLUDES -#include "MPhCntMatch.h" +#include "mphcntmatch.h" // FORWARD DECLARATIONS class CPhCntMatchItem; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/inc/CPhCntMatchItem.h --- a/phoneengine/PhoneCntFinder/inc/CPhCntMatchItem.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/inc/CPhCntMatchItem.h Fri Apr 23 14:59:43 2010 +0100 @@ -24,7 +24,7 @@ #include // TContactItemId #include "CPhCntMatcher.h" // TFieldId -#include "MPhCntMatch.h" // TPhCCliType +#include "mphcntmatch.h" // TPhCCliType // CONSTANTS diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/inc/Misc/CPhCntThumbnailLoaderImpl.h --- a/phoneengine/PhoneCntFinder/inc/Misc/CPhCntThumbnailLoaderImpl.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/inc/Misc/CPhCntThumbnailLoaderImpl.h Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ #define CPHCNTTHUMBNAILLOADERIMPL_H // INCLUDES -#include "CPhCntThumbnailLoader.h" +#include "cphcntthumbnailloader.h" #include "mphcntthumbnailloader.h" // FORWARD DECLARATIONS diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/inc/Misc/MPhCntThumbnailLoaderObserver.h --- a/phoneengine/PhoneCntFinder/inc/Misc/MPhCntThumbnailLoaderObserver.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/inc/Misc/MPhCntThumbnailLoaderObserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ // INCLUDES #include -#include "CPhCntThumbnailLoader.h" +#include "cphcntthumbnailloader.h" // FORWARD DECLARATIONS class CFbsBitmap; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp --- a/phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/PhoneCntFinder/src/CPhoneCntFactoryImpl.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -45,7 +45,7 @@ #include "cphcntstoreloaderimpl.h" #include // CONE -#include // For TSecUi +#include // For TSecUi #include // Feature Manager #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/audiohandling/data/defaultbeep.rss --- a/phoneengine/audiohandling/data/defaultbeep.rss Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/audiohandling/data/defaultbeep.rss Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-2010 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" @@ -231,6 +231,33 @@ // 11 = OPCODE_END } +RESOURCE VAR_ARRAY r_net_call_waiting_alternative_tone + { + sequence={0,17,10,83,20,64,10,83,20,64,125,64,125,64,100,83,20,64,10,83,20,11}; + // 0 = OPCODE_SEQUENCE_START + // 17 = OPCODE_DURATION_UNIT + // 10 = duration unit => tone duration is 10ms * tone_tick + // 83-64=19=AUD_TONE_NETWORK_DUAL_FREQ_2 = 440Hz + // 20 = tone_tick = 200ms + // 64-64 = 0 = AUD_TONE_FREQ_OFF = 0Hz + // 10 = tone_tick = 100ms + // 83-64=19=AUD_TONE_NETWORK_DUAL_FREQ_2 = 440Hz + // 20 = tone_tick = 200ms + // 64-64 = 0 = AUD_TONE_FREQ_OFF = 0Hz + // 125 = tone_tick = 1250ms + // 64-64 = 0 = AUD_TONE_FREQ_OFF = 0Hz + // 125 = tone_tick = 1250ms + // 64-64 = 0 = AUD_TONE_FREQ_OFF = 0Hz + // 100 = tone_tick = 1000ms + // 83-64=19=AUD_TONE_NETWORK_DUAL_FREQ_2 = 440Hz + // 20 = tone_tick = 200ms + // 64-64 = 0 = AUD_TONE_FREQ_OFF = 0Hz + // 10 = tone_tick = 100ms + // 83-64=19=AUD_TONE_NETWORK_DUAL_FREQ_2 = 440Hz + // 20 = tone_tick = 200ms + // 11 = OPCODE_END + } + RESOURCE VAR_ARRAY r_data_call_tone { sequence={0,17,6,2,252,10,8,5,8,84,3,89,3,6,10,247,64,50,7,11}; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/audiohandling/group/audiohandling.mmp --- a/phoneengine/audiohandling/group/audiohandling.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/audiohandling/group/audiohandling.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-2010 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" @@ -62,5 +62,6 @@ LIBRARY flogger.lib LIBRARY mediaclientaudio.lib LIBRARY mmfdevsound.lib +LIBRARY featmgr.lib LANG SC \ No newline at end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/audiohandling/src/cpeaudioinbandtoneplayer.cpp --- a/phoneengine/audiohandling/src/cpeaudioinbandtoneplayer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/audiohandling/src/cpeaudioinbandtoneplayer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -147,7 +148,18 @@ HBufC8* resourceSpecial = resourceFile.AllocReadL( R_NET_SPECIAL_INFORMATION ); HBufC8* resourceRadioPath = resourceFile.AllocReadL( R_NET_RADIO_NOT_AVAILABLE ); HBufC8* resourceRingGoing = resourceFile.AllocReadL( R_NET_RING_GOING ); - HBufC8* resourceCallWaiting = resourceFile.AllocReadL( R_NET_CALL_WAITING ); + + HBufC8* resourceCallWaiting; + + if ( FeatureManager::FeatureSupported( KFeatureIdFfAlternativeCallWaitingTone ) ) + { + resourceCallWaiting = resourceFile.AllocReadL( R_NET_CALL_WAITING_ALTERNATIVE_TONE ); + } + else + { + resourceCallWaiting = resourceFile.AllocReadL( R_NET_CALL_WAITING ); + } + HBufC8* dataCallTone = resourceFile.AllocReadL( R_DATA_CALL_TONE ); HBufC8* noSoundSequence = resourceFile.AllocReadL( R_NO_SOUND_SEQUENCE ); HBufC8* beepSequence = resourceFile.AllocReadL( R_BEEP_SEQUENCE ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/callhandling/bwins/callhandlingu.def --- a/phoneengine/callhandling/bwins/callhandlingu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/callhandling/bwins/callhandlingu.def Fri Apr 23 14:59:43 2010 +0100 @@ -76,4 +76,5 @@ ?ForwardCallToAddress@CPECallHandling@@UAEHH@Z @ 75 NONAME ; int CPECallHandling::ForwardCallToAddress(int) ??1CPEDtmfHandling@@UAE@XZ @ 76 NONAME ; CPEDtmfHandling::~CPEDtmfHandling(void) ?CallCapsChanged@CPEConferenceCall@@UAEXW4TCCEConferenceCallCaps@MCCEConferenceCallObserver@@@Z @ 77 NONAME ; void CPEConferenceCall::CallCapsChanged(enum MCCEConferenceCallObserver::TCCEConferenceCallCaps) + ?ReleaseConference@CPECallHandling@@UAEHXZ @ 78 NONAME ; int CPECallHandling::ReleaseConference(void) diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/callhandling/eabi/callhandlingu.def --- a/phoneengine/callhandling/eabi/callhandlingu.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/callhandling/eabi/callhandlingu.def Fri Apr 23 14:59:43 2010 +0100 @@ -165,4 +165,6 @@ _ZThn8_NK15CPECallHandling16GetCallIdByStateEj @ 164 NONAME _ZThn8_NK15CPECallHandling28GetCallTerminatedDiagnosticsER4TBufILi128EE @ 165 NONAME _ZThn8_NK15CPECallHandling9CallOwnerEv @ 166 NONAME + _ZN15CPECallHandling17ReleaseConferenceEv @ 167 NONAME + _ZThn8_N15CPECallHandling17ReleaseConferenceEv @ 168 NONAME diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/callhandling/inc/cpecallhandling.h --- a/phoneengine/callhandling/inc/cpecallhandling.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/callhandling/inc/cpecallhandling.h Fri Apr 23 14:59:43 2010 +0100 @@ -432,6 +432,13 @@ * @return Error (KErrNone is success). */ IMPORT_C TInt ForwardCallToAddress( TInt aIndex ); + + /** + * Makes HangUp requests for conference call. + * @return Error (ECCPErrorNotFound if there is not a conference call + * + */ + IMPORT_C TInt ReleaseConference(); public: // From MPECallHandling - DTMF related /** @@ -655,8 +662,9 @@ * different from dialled number. * @param aCallid. * @param aCall reference to call object + * @return Updating Colp number was necessary. */ - void SetColpNumber( TInt aCallId, const MCCECall& aCall ) const; + TBool UpdateColpNumber( TInt aCallId, const MCCECall& aCall ) const; protected: // Phone model instance which owns this object. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/callhandling/inc/mpecallhandling.h --- a/phoneengine/callhandling/inc/mpecallhandling.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/callhandling/inc/mpecallhandling.h Fri Apr 23 14:59:43 2010 +0100 @@ -317,6 +317,14 @@ * @return Error (KErrNone is success). */ virtual TInt ForwardCallToAddress( TInt aIndex ) = 0; + + /** + * Put all the calls to idle and make an request to + * end the connection + * @return KErrNotFound if there is not a call + * KErrNone if there is one call at least + */ + virtual TInt ReleaseConference() = 0; public: // DTMF related /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/callhandling/src/cpecallhandling.cpp --- a/phoneengine/callhandling/src/cpecallhandling.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/callhandling/src/cpecallhandling.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -443,20 +443,20 @@ { TEFLOGSTRING( KTAMESINT, "CALL CPECallHandling::SendMessage -> EPEMessageRemotePartyInfoChanged"); // HO cases call type can changes - CPESingleCall* connectedCall; - connectedCall = iCallArrayOwner->CallPointerByState( EPEStateConnected ); - - if( connectedCall ) - { - MCCECall& call = connectedCall->Call(); - CCPCall::TCallType callType = call.Parameters().CallType(); - + CPESingleCall* call; + call = static_cast( iCallArrayOwner->CallByCallId( aCallId ) ); + + MCCECall& connectedCall = call->Call(); + CCPCall::TCallType callType = connectedCall.Parameters().CallType(); + + if ( EPEStateConnected == call->GetCallState() ) + { if ( callType == CCPCall::ECallTypePS ) { TEFLOGSTRING( KTAMESINT, "CALL CPECallHandling::SendMessage -> EPEMessageRemotePartyInfoChanged->update call type to PS"); iModel.DataStore()->SetCallType( EPECallTypeVoIP, aCallId ); - iModel.DataStore()->SetServiceIdCommand( connectedCall->Call().Parameters().ServiceId() ); + iModel.DataStore()->SetServiceIdCommand( call->Call().Parameters().ServiceId() ); iCallOpenParams->SetCallType( CCPCall::ECallTypePS); } else if ( callType == CCPCall::ECallTypeCSVoice ) @@ -465,14 +465,18 @@ "CALL CPECallHandling::SendMessage -> EPEMessageRemotePartyInfoChanged->update call type to CS"); iCallOpenParams->SetCallType( CCPCall::ECallTypeCSVoice ); iModel.DataStore()->SetServiceIdCommand( 1 ); - iModel.DataStore()->SetCallType( EPECallTypeCSVoice, aCallId ); - SetColpNumber( aCallId, call ); + iModel.DataStore()->SetCallType( EPECallTypeCSVoice, aCallId ); + + if ( UpdateColpNumber( aCallId, connectedCall )) + { + iModel.SendMessage( MEngineMonitor::EPEMessageColpNumberAvailable, aCallId ); + } } - - iModel.DataStore()->SetRemotePartyName( call.RemotePartyName(), aCallId ); - iModel.DataStore()->SetRemotePhoneNumber( call.RemoteParty(), aCallId ); - iModel.DataStore()->SetCallIndex(call.CallIndex(), aCallId ); } + // CNAP informations must be in incoming call + iModel.DataStore()->SetRemotePartyName( connectedCall.RemotePartyName(), aCallId ); + iModel.DataStore()->SetRemotePhoneNumber( connectedCall.RemoteParty().Left( KPEPhoneNumberMaxLength ), aCallId ); + iModel.DataStore()->SetCallIndex( connectedCall.CallIndex(), aCallId ); break; } @@ -484,7 +488,7 @@ { MCCECall& call = callData->Call(); iModel.DataStore()->SetRemotePartyName( call.RemotePartyName(), aCallId ); - iModel.DataStore()->SetRemotePhoneNumber( call.RemoteParty(), aCallId ); + iModel.DataStore()->SetRemotePhoneNumber( call.RemoteParty().Left( KPEPhoneNumberMaxLength ), aCallId ); iModel.DataStore()->SetCallIndex(call.CallIndex(), aCallId ); } break; @@ -833,10 +837,7 @@ else if ( CallIdCheck::IsConference( aCallId ) ) { - if( iConferenceCall ) - { - errorCode = iConferenceCall->HangUp(); - } + errorCode = ReleaseConference(); } return errorCode; } @@ -855,12 +856,7 @@ RejectCall(); // Rejects ringing call if one exists. - if ( iConferenceCall ) - { - TEFLOGSTRING( KTAMESOUT, - "CALL CPECallHandling::TerminateAllConnections: Hanging Up conference call" ); - iConferenceCall->HangUp(); - } + ReleaseConference(); // Release conference call if exists // Hangup normal Voice Calls for( TInt callId = 0; callId < KPEMaximumNumberOfVoiceCalls; callId++ ) @@ -1916,6 +1912,7 @@ SendMessage( MEngineMonitor::EPEMessageInitiatedEmergencyCall ); TEFLOGSTRING( KTAINT, "CALL CPECallHandling::DialEmergencyCall start emergency dialing" ); CPESingleCall* callData = iCallArrayOwner->GetCallObject( KPEEmergencyCallId ); + // coverity[dereference] callData->DialEmergency( aEmergencyNumber ); } @@ -2379,13 +2376,19 @@ else { CPESingleCall* callData = iCallArrayOwner->CallPointerByState( EPEStateHeld ); - // Check that no actice and held call, if waiting call gets idle - CPESingleCall* connectedCallData = iCallArrayOwner->CallPointerByState( EPEStateConnected ); - if( callData && ( iModel.DataStore()->ResumeHeldCall( callData->GetCallId() ) ) - && !connectedCallData ) + if ( callData ) { - TEFLOGSTRING( KTAINT, "CALL CPECallHandling::HandleAutoResume single" ); - callData->Resume(); + // Checks to be done in case waiting call gets idle state: + // Check that no active and held calls case + // Check that no dialling/connecting and held calls case + if ( iModel.DataStore()->ResumeHeldCall( callData->GetCallId() ) && + !IsCallInState( EPEStateConnected ) && + !IsCallInState( EPEStateConnecting ) && + !IsCallInState( EPEStateDialing ) ) + { + TEFLOGSTRING( KTAINT, "CALL CPECallHandling::HandleAutoResume single" ); + callData->Resume(); + } } } } @@ -2433,39 +2436,67 @@ } // ----------------------------------------------------------------------------- -// CPECallHandling::SetColpNumber +// CPECallHandling::UpdateColpNumber // ----------------------------------------------------------------------------- // -void CPECallHandling::SetColpNumber( TInt aCallId, const MCCECall& aCall ) const +TBool CPECallHandling::UpdateColpNumber( TInt aCallId, const MCCECall& aCall ) const { - TEFLOGSTRING( KTAINT, "CALL CPECallHandling::SetColpNumber" ); + TEFLOGSTRING( KTAINT, "CALL CPECallHandling::UpdateColpNumber" ); + TBool updateDone( EFalse ); TInt errorCode( KErrNone ); TInt value( KPEMatchDefault ); - TPEMatcher matcher; + TPEMatcher matcher; + TPEPhoneNumber remoteNumber; + + MPEDataStore* dataStore = iModel.DataStore(); - const TPEPhoneNumber& origRemoteNumber = iModel.DataStore()->RemotePhoneNumber( aCallId ); - const TPEPhoneNumber& remoteNumber = aCall.RemoteParty(); + if ( dataStore->RemoteColpNumber( aCallId ).Length() ) + { + remoteNumber = dataStore->RemoteColpNumber( aCallId ); + } + else + { + remoteNumber = dataStore->RemotePhoneNumber( aCallId ); + } + + const TPEPhoneNumber& updatedNumber = aCall.RemoteParty(); errorCode = iRepository->Get( KTelMatchDigits, value ); - if ( !errorCode == KErrNone ) { TEFLOGSTRING( KTAOBJECT, "Reading KTelMatchDigits failed, use default value for matching"); - } + } //check if remote number is different from dialled number - if ( !matcher.numbersMatch( origRemoteNumber, remoteNumber, value ) ) + if ( !matcher.numbersMatch( remoteNumber, updatedNumber, value ) ) { //set COLP number - iModel.DataStore()->SetRemoteColpNumber( remoteNumber, aCallId ); + dataStore->SetRemoteColpNumber( updatedNumber, aCallId ); TEFLOGSTRING3( KTAMESINT, - "CPECallHandling::SetColpNumber, colp number: '%S', call id: %d", - &remoteNumber, aCallId ); - } + "CPECallHandling::UpdateColpNumber, colp number: '%S', call id: %d", + &updatedNumber, aCallId ); + updateDone = ETrue; + } + + return updateDone; } - +// ----------------------------------------------------------------------------- +// CPECallHandling::ReleaseConference +// Release conference call +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CPECallHandling::ReleaseConference() + { + TInt errorCode( ECCPErrorNotFound ); + + if ( iConferenceCall ) + { + errorCode = iConferenceCall->HangUp(); + } + return errorCode; + } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/engineinfo/inc/cpecallinfo.h --- a/phoneengine/engineinfo/inc/cpecallinfo.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/engineinfo/inc/cpecallinfo.h Fri Apr 23 14:59:43 2010 +0100 @@ -465,6 +465,16 @@ */ TPECallOrigin CallOrigin() const; + /** + * Sets transfer call back flag. + */ + void SetDoCallBackRequest( TBool aDoCallBack ); + + /** + * Returns transfer call back flag. + */ + TBool DoCallBackRequest() const; + private: /** @@ -634,6 +644,11 @@ * Origin of the call. */ TPECallOrigin iCallOrigin; + + /** + * Flag which indicates if call back request is needed + */ + TBool iDoCallBackRequest; }; #endif // C_CPECALLINFO_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/engineinfo/inc/cpeengineinfoimpl.h --- a/phoneengine/engineinfo/inc/cpeengineinfoimpl.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/engineinfo/inc/cpeengineinfoimpl.h Fri Apr 23 14:59:43 2010 +0100 @@ -53,6 +53,7 @@ TPEPhoneNumber iSwitchToNumber; // Dialed Phonenumber, set by client TPEPhoneNumber iTransferToAddress; // Unattended transfer target address TInt iForwardToAddressIndex; // Array index for a address to be forwarded + TBool iTransferDial; // Flag which indicates utransfer dial }; NONSHARABLE_STRUCT( TPEBasicInfo ) // Contains information of the phone related variables @@ -90,6 +91,7 @@ TBool iSecureSpecified; // Secure specified status TName iDataPortName; // the name of data port currently on-loan TBool iSwitchToOngoing; // Switch to operation status + TPEPhoneNumber iCallBackAddress; // Address of the transfer originator used for calling back }; NONSHARABLE_STRUCT( TPEConferenceCallInfo ) // Contains conference call related variables @@ -621,6 +623,30 @@ * @param aCallState state to be checked. */ TBool CheckIfCallStateExists( const TPEState& aCallState ); + + /** + * From base class MPEEngineInfo + * @see MPEEngineInfo::SetTransferDial + */ + void SetIsTransferDial( TBool aTransferDial ); + + /** + * From base class MPEEngineInfo + * @see MPEEngineInfo::IsTransferDial + */ + TBool IsTransferDial() const; + + /** + * From base class MPEEngineInfo + * @see MPEEngineInfo::SetCallBackAddress + */ + void SetCallBackAddress( const TDesC& aAddress ); + + /** + * From base class MPEEngineInfo + * @see MPEEngineInfo::CallBackAddress + */ + const TDesC& CallBackAddress() const; // Functions from MPEDataStore (reading values) public: @@ -925,6 +951,12 @@ * @see MPEDataStore::CallIndex */ TInt CallIndex( TInt aCallId ) const; + + /** + * From base class MPEDataStore + * @see MPEDataStore::DoCallBackRequest + */ + TBool DoCallBackRequest( TInt aCallId ) const; // Functions from MPEDataStore (setting values) public: @@ -1529,6 +1561,12 @@ * @see MPEDataStore::SetCallOrigin */ void SetCallOrigin( TPECallOrigin aOrigin, TInt aCallId ); + + /** + * From base class MPEDataStore + * @see MPEDataStore::SetDoCallBackRequest + */ + void SetDoCallBackRequest( TBool aDoCallBack, TInt aCallId ); private: /** diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/engineinfo/inc/mpedatastore.h --- a/phoneengine/engineinfo/inc/mpedatastore.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/engineinfo/inc/mpedatastore.h Fri Apr 23 14:59:43 2010 +0100 @@ -816,6 +816,18 @@ * @param aOrigin indicates if the call is phone, client or SAT originated */ virtual void SetCallOrigin( TPECallOrigin aOrigin, TInt aCallId ) = 0; + + /** + * Sets flag indicating whether this is unattended transfer dial + * @param aTransferDial ETrue if voip unattended transfer dial was initiated + */ + virtual void SetDoCallBackRequest( TBool aDoCallBack, TInt aCallId ) = 0; + + /** + * Returns flag indicating whether call back request is needed + * @param aCallId + */ + virtual TBool DoCallBackRequest( TInt aCallId ) const = 0; }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/engineinfo/inc/mpeengineinfo.h --- a/phoneengine/engineinfo/inc/mpeengineinfo.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/engineinfo/inc/mpeengineinfo.h Fri Apr 23 14:59:43 2010 +0100 @@ -698,6 +698,28 @@ */ virtual TPECallOrigin CallOrigin( const TInt aCallId ) const = 0; + /** + * Sets flag indicating unattended transfer dial + * @param aTransferDial ETrue if voip unattended transfer dial was initiated + */ + virtual void SetIsTransferDial( TBool aTransferDial ) = 0; + + /** + * Returns flag indicating unattended transfer dial + */ + virtual TBool IsTransferDial() const = 0; + + /** + * Sets unattended transfer call back address + * @param aAddress Unattended transfer call back address + */ + virtual void SetCallBackAddress( const TDesC& aAddress ) = 0; + + /** + * Returns unattended transfer call back address + */ + virtual const TDesC& CallBackAddress() const = 0; + }; // MPEEngineInfo #endif //MPEENGINEINFO_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/engineinfo/src/cpecallinfo.cpp --- a/phoneengine/engineinfo/src/cpecallinfo.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/engineinfo/src/cpecallinfo.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -106,6 +106,7 @@ iDtmfPostFix = KNullDesC; iForwardAddressChoices = NULL; iCallIndex = KPEInvalidCallIndex; + iDoCallBackRequest = EFalse; } // --------------------------------------------------------------------------- @@ -649,6 +650,24 @@ { return iCallOrigin; } + +// --------------------------------------------------------------------------- +// Sets flag indicating if unattended transfer call back request is needed +// --------------------------------------------------------------------------- +// +void CPECallInfo::SetDoCallBackRequest( TBool aDoCallBack ) + { + iDoCallBackRequest = aDoCallBack; + } + +// --------------------------------------------------------------------------- +// Gets flag indicating if unattended transfer call back request is needed +// --------------------------------------------------------------------------- +// +TBool CPECallInfo::DoCallBackRequest() const + { + return iDoCallBackRequest; + } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/engineinfo/src/cpeengineinfoimpl.cpp --- a/phoneengine/engineinfo/src/cpeengineinfoimpl.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/engineinfo/src/cpeengineinfoimpl.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -44,6 +44,12 @@ iCallCommandInfo.iDtmfString = KNullDesC; iCallCommandInfo.iCallType = EPECallTypeUninitialized; iCallCommandInfo.iServiceId = 0; + iCallCommandInfo.iIdRestrict = RMobileCall::EIdRestrictDefault; + iCallCommandInfo.iEmergencyNumber = KNullDesC; + iCallCommandInfo.iTransferToAddress = KNullDesC; + iCallCommandInfo.iForwardToAddressIndex = ECCPErrorNotFound; + iCallCommandInfo.iTransferDial = EFalse; + iBasicInfo.iAudioOutputPreference = EPSAudioPrivate; iBasicInfo.iALSLine = CCCECallParameters::ECCELineTypePrimary; iBasicInfo.iALSLineSupport = EFalse; @@ -69,14 +75,7 @@ iBasicInfo.iTwoDigitSupportStatus = EFalse; iBasicInfo.iLifeTimeData.iHours = 0; iBasicInfo.iLifeTimeData.iMinutes = 0; - iBasicInfo.iNetworkRegistrationStatus = ENWStatusRegistrationUnknown; - - iCallCommandInfo.iIdRestrict = RMobileCall::EIdRestrictDefault; - iCallCommandInfo.iEmergencyNumber = KNullDesC; - - iCallCommandInfo.iTransferToAddress = KNullDesC; - iCallCommandInfo.iForwardToAddressIndex = ECCPErrorNotFound; iBasicInfo.iActiveForward.iActiveType = RMobilePhone::ECFUnconditionalActive; iBasicInfo.iActiveForward.iServiceGroup = RMobilePhone::EServiceUnspecified; iBasicInfo.iBarringInfo.iGroupCount = KPENumberInitValue; @@ -98,6 +97,7 @@ iBasicInfo.iSecureSpecified = ETrue; iBasicInfo.iDataPortName = KNullDesC; iBasicInfo.iSwitchToOngoing = EFalse; + iBasicInfo.iCallBackAddress = KNullDesC; iConferenceCallInfo.iConferenceCallState = EPEStateConferenceIdle; } @@ -663,6 +663,70 @@ { return iCallCommandInfo.iCallOrigin; } + +// ----------------------------------------------------------------------------- +// CPEEngineInfoImpl::SetTransferDial +// Sets flag indicating unattended transfer dial +// ----------------------------------------------------------------------------- +// +void CPEEngineInfoImpl::SetIsTransferDial( TBool aTransferDial ) + { + iCallCommandInfo.iTransferDial = aTransferDial; + } + +// ----------------------------------------------------------------------------- +// CPEEngineInfoImpl::IsTransferDial +// Gets flag indicating unattended transfer dial +// ----------------------------------------------------------------------------- +// +TBool CPEEngineInfoImpl::IsTransferDial() const + { + return iCallCommandInfo.iTransferDial; + } + +// ----------------------------------------------------------------------------- +// CPEEngineInfoImpl::SetDoCallBackRequest +// Sets flag indicating if unattended transfer call back request is needed +// ----------------------------------------------------------------------------- +// +void CPEEngineInfoImpl::SetDoCallBackRequest( TBool aDoCallBack, TInt aCallId ) + { + __ASSERT_DEBUG( iCurrentCalls.Count() > aCallId, Panic( EPEPanicCallIndexOutOfRange ) ); + iCurrentCalls[ aCallId ]->SetDoCallBackRequest( aDoCallBack ); + } + +// ----------------------------------------------------------------------------- +// CPEEngineInfoImpl::DoCallBackRequest +// Gets flag indicating if unattended transfer call back request is needed +// ----------------------------------------------------------------------------- +// +TBool CPEEngineInfoImpl::DoCallBackRequest( TInt aCallId) const + { + __ASSERT_DEBUG( iCurrentCalls.Count() > aCallId, Panic( EPEPanicCallIndexOutOfRange ) ); + return iCurrentCalls[ aCallId ]->DoCallBackRequest(); + } + +// ----------------------------------------------------------------------------- +// CPEEngineInfoImpl::SetCallBackAddress +// Sets address used for calling back to transfer originator +// in case when transfer call has been failed +// ----------------------------------------------------------------------------- +// +void CPEEngineInfoImpl::SetCallBackAddress( const TDesC& aAddress ) + { + iBasicInfo.iCallBackAddress = aAddress; + } + +// ----------------------------------------------------------------------------- +// CPEEngineInfoImpl::CallBackAddress +// Gets address used for calling back to transfer originator +// in case when transfer call has been failed +// ----------------------------------------------------------------------------- +// +const TDesC& CPEEngineInfoImpl::CallBackAddress() const + { + return iBasicInfo.iCallBackAddress; + } // CPEEngineInfoImpl::ProfileId // Gets the profile id from the TPEBasicInfo structure. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/loghandling/inc/cpelogevent.h --- a/phoneengine/loghandling/inc/cpelogevent.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/loghandling/inc/cpelogevent.h Fri Apr 23 14:59:43 2010 +0100 @@ -103,7 +103,7 @@ /** * Update log info for the log event - * @param TPELogInfo& alogInfo, log information + * @param CPELogInfo& alogInfo, log information * @return None. */ void UpdateLogInfoL( const CPELogInfo& aLogInfo ); @@ -237,6 +237,13 @@ */ void SetRemoteContact( CLogEvent& aEvent, const CPELogInfo& aLogInfo ); + /** + * Removes from event data the given tag and data attached to it. + * @since S60 v5.1 + * @param aTag Tag to be removed + */ + void RemoveTagFromDataFieldL( const TDesC8& aTag ); + private: // Data // Owner of the object. CPELogHandling& iOwner; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/loghandling/inc/cpeloghandling.h --- a/phoneengine/loghandling/inc/cpeloghandling.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/loghandling/inc/cpeloghandling.h Fri Apr 23 14:59:43 2010 +0100 @@ -254,6 +254,15 @@ CPELogExtensionWrapper* CreateExtensionWrapperLC( const TUid& aPluginUid ) const; + /** + * Checks if string is valid number for CS call. + * @since S60 v5.1 + * @param aString A string to be checked. + * @return ETrue if valid phone number. + */ + TBool IsValidPhoneNumber( + const TDesC& aString ) const; + private: // data // Reference to MPEPhoneModelInternal, also object owner MPEPhoneModelInternal& iModel; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/loghandling/src/cpelogevent.cpp --- a/phoneengine/loghandling/src/cpelogevent.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/loghandling/src/cpelogevent.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -673,6 +673,16 @@ if ( KNullDesC() != aLogInfo.PhoneNumber() ) { aEvent.SetNumber( aLogInfo.PhoneNumber() ); + + if ( CPELogInfo::EPEVoIPEvent == aLogInfo.EventType() ) + { + TRAPD( error, RemoveTagFromDataFieldL( KLogsDataFldTag_URL ) ); + if( error ) + { + TEFLOGSTRING2( KTAERROR, + "LOG CPELogEvent::SetRemoteContact()>RemoveTagFromDataFieldL(), error=%d", error ) + } + } } if ( KNullDesC() != aLogInfo.VoipAddress() ) @@ -681,8 +691,40 @@ if ( error ) { TEFLOGSTRING2( KTAERROR, - "LOG CPELogEvent::SetLogEvent()>SetDataFieldL(), error=%d", error ) + "LOG CPELogEvent::SetRemoteContact()>SetDataFieldL(), error=%d", error ) } + aEvent.SetNumber( KNullDesC() ); + } + } + +// ----------------------------------------------------------------------------- +// CPELogEvent::RemoveTagFromDataFieldL +// ----------------------------------------------------------------------------- +// +void CPELogEvent::RemoveTagFromDataFieldL( const TDesC8& aTag ) + { + __ASSERT_ALWAYS( aTag.Length() != 0 , + User::Leave( KErrArgument ) ); + + TInt index = iEvent->Data().Find( aTag ); + if ( KErrNotFound != index ) + { + HBufC8* eventData = iEvent->Data().AllocLC(); + TPtrC8 urlData = eventData->Mid( index ); + TInt otherTag = urlData.Find( KLogsDataFldNameDelimiter ); + + const TInt dlLen = KLogsDataFldNameDelimiter().Length(); + if ( KErrNotFound == otherTag ) + { + eventData->Des().Delete( index - dlLen, urlData.Length() + dlLen ); + } + else + { + eventData->Des().Delete( index - dlLen, otherTag ); + } + iEvent->SetDataL( *eventData ); + + CleanupStack::PopAndDestroy( eventData ); } } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/loghandling/src/cpeloghandling.cpp --- a/phoneengine/loghandling/src/cpeloghandling.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/loghandling/src/cpeloghandling.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -394,13 +394,16 @@ if ( EPECallTypeVoIP == iDataStore.CallType( aCallId ) ) { - // voip address field must be used for voip calls - aLogInfo.SetVoipAddress( aLogInfo.PhoneNumber() ); - aLogInfo.SetPhoneNumber( KNullDesC() ); + if ( EFalse == IsValidPhoneNumber( aLogInfo.PhoneNumber() ) ) + { + // voip address field must be used for voip calls if + // string is not valid for CS call. + aLogInfo.SetVoipAddress( aLogInfo.PhoneNumber() ); + aLogInfo.SetPhoneNumber( KNullDesC() ); + } } } - // ----------------------------------------------------------------------------- // CPELogHandling::SaveCallInfoL // Update log external data. @@ -841,4 +844,23 @@ return CPELogExtensionWrapper::NewLC( aPluginUid ); } +// ----------------------------------------------------------------------------- +// CPELogHandling::IsValidPhoneNumber +// ----------------------------------------------------------------------------- +// +TBool CPELogHandling::IsValidPhoneNumber( + const TDesC& aString ) const + { + _LIT( KAllowedCharsInPhoneNumber, "0123456789*+pw#PW" ); + + TLex input( aString ); + TPtrC validChars( KAllowedCharsInPhoneNumber ); + while ( validChars.Locate( input.Peek() ) != KErrNotFound ) + { + input.Inc(); + } + + return ( !input.Remainder().Length() ); + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/conf/s60telephony.confml Binary file phoneengine/phonemodel/conf/s60telephony.confml has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/conf/s60telephony_102828F8.crml Binary file phoneengine/phonemodel/conf/s60telephony_102828F8.crml has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/inc/cpemessagehandler.h --- a/phoneengine/phonemodel/inc/cpemessagehandler.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/inc/cpemessagehandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -167,7 +167,13 @@ * @return Return possible error code. */ TInt HandleReleaseCall( TPEHangUpOptions aAutoResumeOption = ETPEHangUpDefault ); - + + /** + * Handles release message from application + * @return Return possible error code. + */ + TInt HandleReleaseConference(); + /** * Handles send dtmf message from phone application * @return possible error code from the CallHandling subsystem. @@ -566,11 +572,6 @@ TInt HandleReplaceActive(); /** - * Check if phone is locked, if locked leave with ECCPErrorAuthenticationFailed error. - */ - void CheckIfPhoneIsLockedL(); - - /** * Handles unattended transfer request response. * @param aAcceptRequest ETrue to accept, EFalse to reject request. */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/inc/pevirtualengine.h --- a/phoneengine/phonemodel/inc/pevirtualengine.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/inc/pevirtualengine.h Fri Apr 23 14:59:43 2010 +0100 @@ -421,6 +421,7 @@ EPEMessageMovedPermanently, EPEMessageMultipleChoices, EPEMessageColpNumberAvailable, + EPEMessageTransferCallBackRequest, // Contact messages 3000 - 3999 EPEMessageThumbnailLoadingCompleted = 3000, diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/inc/telephonyvariant.hrh --- a/phoneengine/phonemodel/inc/telephonyvariant.hrh Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/inc/telephonyvariant.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -90,11 +90,6 @@ #define KTelephonyLVFlagAdvancedENCheck 0x00000200 /** -* KTelephonyLVFlagDisableCallControlHardKeysWhileLocked -*/ -#define KTelephonyLVFlagDisableCallControlHardKeysWhileLocked 0x00000400 - -/** * KTelephonyLVFlagUssdTone defines if the USSD tone play functionality is * enabled. * When the flag is set, tone is played when USSD message is received. @@ -112,11 +107,6 @@ #define KTelephonyLVFlagArbitraryVideoScaling 0x00001000 /** -* KTelephonyLVFlagAllowUnlockOnIncoming -*/ -#define KTelephonyLVFlagAllowUnlockOnIncoming 0x00002000 - -/** * KTelephonyLVFlagMannerMode defines if the manner mode is enabled. * When the flag is set, long press on hash key toggles silent on/off * @since Series 60 2.8 diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpeclientcommandhandlermonitor.cpp --- a/phoneengine/phonemodel/src/cpeclientcommandhandlermonitor.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpeclientcommandhandlermonitor.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -442,10 +442,10 @@ TEFLOGSTRING2( KTAINT, "CPEClientCommandHandlerMonitor::HangUp aState=%d", aState); TInt ret( ECCPErrorNotFound ); - TPEState conferenceState = iCallHandling.GetCallState( KPEConferenceCallID ); + TPEState conferenceState = iModel.DataStore()->ConferenceCallState(); if ( conferenceState == aState ) { - ret = iCallHandling.HangUp( KPEConferenceCallID, ETPEHangUpDefault ); + ret = iCallHandling.ReleaseConference(); } else { diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpeexternaldatahandler.cpp --- a/phoneengine/phonemodel/src/cpeexternaldatahandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpeexternaldatahandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpemessagehandler.cpp --- a/phoneengine/phonemodel/src/cpemessagehandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpemessagehandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -76,9 +76,9 @@ // None. // CONSTANTS -// Prefix change off. See SettingsInternalCRKeys.h +// Prefix change off. See settingsinternalcrkeys.h const TInt KPEPrefixChangeOff = 0; -// Prefix change on. See SettingsInternalCRKeys.h +// Prefix change on. See settingsinternalcrkeys.h const TInt KPEPrefixChangeOn = 1; // International prefix _LIT( KPEIntPrefix, "+" ); @@ -403,6 +403,19 @@ } // ----------------------------------------------------------------------------- +// CPEMessageHandler::HandleReleaseConference +// Handles release message from phone application +// Method calls HangUp method from the CallHandling subsystem. +// ----------------------------------------------------------------------------- +// +TInt CPEMessageHandler::HandleReleaseConference() + { + + return iCallHandling.ReleaseConference(); + + } + +// ----------------------------------------------------------------------------- // CPEMessageHandler::HandleSendDtmf // Handles send dtmf message from phone application // Method fetches dtmf string from the CPEEngineInfo class and then @@ -1730,13 +1743,17 @@ errorCode = HandleSendDtmf(); } } - + // Reset unattended transfer callback flag + iDataStore.SetDoCallBackRequest( EFalse, aCallId ); + iDataStore.SetErrorCode( errorCode ); - } - } + } + } // For Sat call ( normal or emergency ) iClientServices->CallRequestMonitor()->SendRespond( ECCPErrorNone ); + + // Reset Phonenumber from engine info, this is necessary so that call number // logging works OK (see CPEMessageHandler::SetPhoneNumberForCallLogging). iDataStore.SetPhoneNumber( KNullDesC() ); @@ -2173,6 +2190,11 @@ numberOfCalls ); } + if ( iDataStore.DoCallBackRequest( aCallId ) ) + { + iModel.SendMessage( MEngineMonitor::EPEMessageTransferCallBackRequest, aCallId ); + } + iDataStore.ResetCallInfo( aCallId ); //publish remote party info to Mediator after call info has been cleared. @@ -2838,26 +2860,6 @@ } // ----------------------------------------------------------------------------- -// CPEMessageHandler::CheckIfPhoneIsLockedL -// ----------------------------------------------------------------------------- -// -void CPEMessageHandler::CheckIfPhoneIsLockedL() - { - // Check if phone is locked - TInt keyLockStatus( EAutolockStatusUninitialized ); - TInt err = RProperty::Get( KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, keyLockStatus ); - const TBool phoneIsLocked = ( keyLockStatus > EAutolockOff ); - - if ( phoneIsLocked && err == KErrNone ) - { - // New call is not possible if device lock is on - TEFLOGSTRING2( KTAERROR, - "PE CPEMessageHandler::CheckIfPhoneIsLockedL, keyLockStatus : %d", keyLockStatus ); - User::Leave( ECCPErrorAuthenticationFailed ); - } - } - -// ----------------------------------------------------------------------------- // CPEMessageHandler::IsActiveVideo // Checks if there are any connected video calls // ----------------------------------------------------------------------------- @@ -2893,11 +2895,7 @@ void CPEMessageHandler::HandleRemotePartyInfoChanged( const TInt aCallId ) { UpdateRemotePartyInfo(); - - if ( iDataStore.RemoteColpNumber( aCallId ).Length() ) - { - iModel.SendMessage( MEngineMonitor::EPEMessageColpNumberAvailable ); - } + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpeparserphonenumberhandler.cpp --- a/phoneengine/phonemodel/src/cpeparserphonenumberhandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpeparserphonenumberhandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -69,9 +69,6 @@ &aNumber, &aDtmfPostfix ); - // Check if phone is locked - iOwner.CheckIfPhoneIsLockedL(); - if ( aNumber.Length() == 0 ) { User::Leave( ECCPErrorInvalidPhoneNumber ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpeparsersimcontrolhandler.cpp --- a/phoneengine/phonemodel/src/cpeparsersimcontrolhandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpeparsersimcontrolhandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -22,8 +22,8 @@ #include #include #include -#include -#include +#include +#include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpeparservoipnumberhandler.cpp --- a/phoneengine/phonemodel/src/cpeparservoipnumberhandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpeparservoipnumberhandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -98,9 +98,6 @@ &aDtmfPostfix ); TPEPhoneNumber phoneNumber; - - // Check if phone is locked - iOwner.CheckIfPhoneIsLockedL(); if ( aNumber.Length() == 0 ) { @@ -178,6 +175,12 @@ // DialCall method will set call origin as unknow TInt errorCode = iCallHandling.DialCall( phoneNumber, callId ); + if ( iDataStore.IsTransferDial() ) + { + iDataStore.SetDoCallBackRequest( ETrue, callId ); + iDataStore.SetIsTransferDial( EFalse ); + } + // Set dtmf string to dataStore iDataStore.SetDtmfPostFix( iDtmfString, callId ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpepcnparserprocedurehandler.cpp --- a/phoneengine/phonemodel/src/cpepcnparserprocedurehandler.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpepcnparserprocedurehandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -20,8 +20,8 @@ #include "cpepcnparserprocedurehandler.h" #include "mpephonemodelinternal.h" #include -#include -#include +#include +#include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/phonemodel/src/cpephonemodel.cpp --- a/phoneengine/phonemodel/src/cpephonemodel.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/phonemodel/src/cpephonemodel.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -478,8 +478,12 @@ case MEngineMonitor::EPEMessageRemotePartyInfoChanged: return MESSAGE("EPEMessageRemotePartyInfoChanged"); case MEngineMonitor::EPEMessageConnectingWithInband: - return MESSAGE("EPEMessageConnectingWithInband"); - + return MESSAGE("EPEMessageConnectingWithInband"); + case MEngineMonitor::EPEMessageColpNumberAvailable: + return MESSAGE("EPEMessageColpNumberAvailable"); + case MEngineMonitor::EPEMessageTransferCallBackRequest: + return MESSAGE("EPEMessageTransferCallBackRequest"); + // Contact messages 3000 - 3999 case MEngineMonitor::EPEMessageThumbnailLoadingCompleted: return MESSAGE("EPEMessageThumbnailLoadingCompleted"); @@ -716,8 +720,10 @@ errorCode = iMessageHandler->HandleReleaseAll( ); break; case MPEPhoneModel::EPEMessageRelease: //Make HangUp request + errorCode = iMessageHandler->HandleReleaseCall( ); + break; case CPEPhoneModelIF::EPEMessageHangUpConference: - errorCode = iMessageHandler->HandleReleaseCall( ); + errorCode = iMessageHandler->HandleReleaseConference(); break; case MPEPhoneModel::EPEMessageAnswer: //Make Answer request errorCode = iMessageHandler->HandleAnswerCall( EFalse ); @@ -1221,24 +1227,46 @@ TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::DelayMessageSending" ); TBool sendingDelayed( EFalse ); - - if ( MEngineMonitor::EPEMessageInitiatedEmergencyCall == aMessage ) + + switch ( aMessage ) { - iEngineInfo->SetIsSwitchToOperationOngoing( EFalse ); - if ( iCallStackCutter ) + case MEngineMonitor::EPEMessageInitiatedEmergencyCall: { - delete iCallStackCutter; - iCallStackCutter = NULL; + iEngineInfo->SetIsSwitchToOperationOngoing( EFalse ); + sendingDelayed = ETrue; + } + break; + case MEngineMonitor::EPEMessageColpNumberAvailable: + { + sendingDelayed = ETrue; + } + break; + case MEngineMonitor::EPEMessageTransferCallBackRequest: + { + sendingDelayed = ETrue; } - TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) ); - if ( !err ) - { - iCallBackMessage = aMessage; - iCallBackCallId = aCallId; - iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) ); - } - sendingDelayed = ETrue; + break; + default: + // Other messages cause no action. + break; } + + if ( sendingDelayed ) + { + if ( iCallStackCutter ) + { + delete iCallStackCutter; + iCallStackCutter = NULL; + } + TRAPD( err, iCallStackCutter = CIdle::NewL( CActive::EPriorityHigh ) ); + if ( !err ) + { + iCallBackMessage = aMessage; + iCallBackCallId = aCallId; + iCallStackCutter->Start( TCallBack( CallBackMessageSend , this ) ); + } + } + return sendingDelayed; } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneengine/servicehandling/src/cpeservicehandling.cpp --- a/phoneengine/servicehandling/src/cpeservicehandling.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneengine/servicehandling/src/cpeservicehandling.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -130,6 +130,9 @@ "PE CPEServiceHandling::EnableServiceL, Error: %d" , error ); SendErrorMessage( error ); + + iCurrentServiceId = KErrNotFound; + service->RemoveObserver( *this ); } } diff -r d398543c5fb7 -r 5d467ea4b3e5 phonesettings/pslncallimageplugin/Data/PslnCallImagePluginRsc.rss --- a/phonesettings/pslncallimageplugin/Data/PslnCallImagePluginRsc.rss Mon Apr 19 16:39:38 2010 +0300 +++ b/phonesettings/pslncallimageplugin/Data/PslnCallImagePluginRsc.rss Fri Apr 23 14:59:43 2010 +0100 @@ -102,11 +102,13 @@ { command = EPslnCmdAppActivate; txt = qtn_skins_option_activate; + flags = EEikMenuItemAction; }, MENU_ITEM { command = EPslnCmdAppDownload; txt = qtn_options_change; + flags = EEikMenuItemAction; }, #ifdef __SERIES60_HELP MENU_ITEM diff -r d398543c5fb7 -r 5d467ea4b3e5 phonesettings/pslncallimageplugin/src/PslnCallImagePlugin.cpp --- a/phonesettings/pslncallimageplugin/src/PslnCallImagePlugin.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phonesettings/pslncallimageplugin/src/PslnCallImagePlugin.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -41,13 +41,13 @@ // Psln Framework specific. #include #include -#include +#include // General services #include // Resources -#include +#include // Logging #include "PslnCallImagePluginLogger.h" diff -r d398543c5fb7 -r 5d467ea4b3e5 phonesettings/pslncallimageplugin/src/PslnCallImagePluginDRM.cpp --- a/phonesettings/pslncallimageplugin/src/PslnCallImagePluginDRM.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phonesettings/pslncallimageplugin/src/PslnCallImagePluginDRM.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include // Logging diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Inc/BMTouchPaneButton.h --- a/phoneuis/BubbleManager/Inc/BMTouchPaneButton.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Inc/BMTouchPaneButton.h Fri Apr 23 14:59:43 2010 +0100 @@ -182,6 +182,11 @@ */ void GetTextColors( TRgb& aPenColor ) const; + /** + * Selects the correct text color. + */ + void SelectTextColor(); + private: // data /** * Array of the button commands. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleManager.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleManager.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleManager.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -340,9 +340,6 @@ if ( iConfigFlags & EBMTouchCallhandling ) { - MBubbleTouchPaneInterface* touchPaneIf = - static_cast (iTouchPane); - if ( iTouchPane->IsVisible() ) { TInt variety = 0; @@ -992,7 +989,7 @@ TBool calledBegin = (TBool) CAknTransitionUtils::GetData( ( TInt ) this ); // Only draw parent control if no number entry exists, the number entry is // used or if begin has not been called. - if ( !iNumberEntry || iNumberEntry->IsUsed() || !calledBegin ) + if ( iNumberEntry->IsUsed() || !calledBegin ) { // Do redraw. Do not use DrawDeferred() here! iParentControl->DrawNow(); @@ -3521,6 +3518,8 @@ { __ASSERT_ALWAYS( ( iConfigFlags & EBMCallObjectDisplay ), Panic( EBMPanicFeatureNotSupported ) ); + StartChanges(); + iMainPaneControl->Reset(); if ( aPreload ) { iCallObjectManager->LoadCallThemeImage( @@ -3531,6 +3530,7 @@ { iCallObjectManager->ReleaseCallThemeImage(); } + EndChanges(); } // --------------------------------------------------------------------------- diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookBottom.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottom.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottom.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -370,15 +370,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - - + break; } default: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImCnap.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImCnap.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImCnap.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -256,14 +256,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + break; } default: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImage.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImage.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImage.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -247,14 +247,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + break; } case CBubbleManager::ENone: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRiCnap.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRiCnap.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRiCnap.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -370,14 +370,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + break; } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRight.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRight.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRight.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -362,14 +362,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + break; } case CBubbleManager::ENone: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookFiveLined.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookFiveLined.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookFiveLined.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -166,7 +166,7 @@ TInt CBubbleOutlookFiveLined::CountComponentControls() const { TInt amount = 0; - + if ( iNumberType ) { amount++; @@ -238,9 +238,8 @@ // CCoeControl* CBubbleOutlookFiveLined::ComponentControl(TInt aIndex) const { - TInt amount = -1; - + // coverity[var_compare_op] if ( iNumberType ) { amount++; @@ -248,6 +247,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iNumberType->Control(); } @@ -328,6 +328,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iSmallCallIndication->Control(); } @@ -358,6 +359,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iBigCallIndicator->Control(); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookMiddle.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddle.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddle.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -385,14 +385,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + if ( iHeader->CallObjectImage() ) { BubbleUtils::PrepareCallObjectImageL( diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookMiddleCnap.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddleCnap.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddleCnap.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -338,14 +338,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + if ( iHeader->CallObjectImage() ) { BubbleUtils::PrepareCallObjectImageL( diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookNE.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookNE.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookNE.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -41,7 +41,7 @@ //for resources #include -#include +#include // CONSTANTS const TUint8 KBubbleNE1LongLineFormat = 0; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookOneLined.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookOneLined.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookOneLined.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -198,6 +198,7 @@ CCoeControl* CBubbleOutlookOneLined::ComponentControl( TInt aIndex ) const { TInt amount = -1; + // coverity[var_compare_op] if ( iSmallCallIndication ) { amount++; @@ -205,6 +206,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iSmallCallIndication->Control(); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookThreeLined.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookThreeLined.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookThreeLined.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -216,7 +216,7 @@ TInt CBubbleOutlookThreeLined::CountComponentControls() const { TInt amount = 0; - + if ( iNumberType ) { amount++; @@ -285,7 +285,7 @@ { TInt amount = -1; - + // coverity[var_compare_op] if ( iNumberType ) { amount++; @@ -293,6 +293,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iNumberType->Control(); } @@ -353,6 +354,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iSmallCallIndication->Control(); } @@ -383,6 +385,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iBrandImage->Control(); } @@ -393,6 +396,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iBigCallIndicator->Control(); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookTopLeft.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookTopLeft.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookTopLeft.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -243,21 +243,18 @@ BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, outerRect, innerRect); - TAknsItemID coMaskFrameId; + if ( callState == CBubbleManager::EOnHold ) { iFrameId = KAknsIIDQsnFrCall2Bubble; - coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask; } else if ( callState == CBubbleManager::EDisconnected ) { iFrameId = KAknsIIDQsnFrCall2BubbleFirstDisconn; - coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask; } else { iFrameId = KAknsIIDQsnFrCall2BubbleFirst; - coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask; } iOuterRect = outerRect; @@ -298,14 +295,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + break; } case CBubbleManager::ENone: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookTopRight.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookTopRight.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookTopRight.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -240,21 +240,18 @@ BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, outerRect, innerRect); - TAknsItemID coMaskFrameId; + if ( callState == CBubbleManager::EOnHold ) { iFrameId = KAknsIIDQsnFrCall2Bubble; - coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask; } else if ( callState == CBubbleManager::EDisconnected ) { iFrameId = KAknsIIDQsnFrCall2BubbleSecondDisconn; - coMaskFrameId = KAknsIIDQsnFrCall2BubbleSecondCoMask; } else { iFrameId = KAknsIIDQsnFrCall2BubbleSecond; - coMaskFrameId = KAknsIIDQsnFrCall2BubbleSecondCoMask; } iOuterRect = outerRect; @@ -296,14 +293,7 @@ outerRect, innerRect, iBubble ); - - // Add transparency - BubbleUtils::AddTransparencyToBubbleImageL( - coMaskFrameId, - outerRect, - innerRect, - iBubble ); - + break; } case CBubbleManager::ENone: diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookTwoLined.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookTwoLined.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookTwoLined.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -275,7 +275,7 @@ { TInt amount = -1; - + // coverity[var_compare_op] if ( iNumberType ) { amount++; @@ -283,6 +283,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iNumberType->Control(); } @@ -293,6 +294,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iSmallCallIndication->Control(); } @@ -363,6 +365,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iBrandImage->Control(); } @@ -373,6 +376,7 @@ if ( aIndex == amount ) { + // coverity[var_deref_model] return iBigCallIndicator->Control(); } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookVideo.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookVideo.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookVideo.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMBubbleOutlookVideoCnap.cpp --- a/phoneuis/BubbleManager/Src/BMBubbleOutlookVideoCnap.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookVideoCnap.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMTouchPaneButton.cpp --- a/phoneuis/BubbleManager/Src/BMTouchPaneButton.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMTouchPaneButton.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -16,16 +16,17 @@ */ #include -#include +#include #include #include #include #include -#include +#include +#include -#include "bmtouchpanebutton.h" +#include "BMTouchPaneButton.h" #include "BMTouchPaneInterface.h" -#include "bmpanic.h" +#include "BMPanic.h" const TInt KBubbleButtonText = 255; @@ -97,9 +98,7 @@ CAknButton::ConstructFromResourceL( aReader ); - // function button text color - SetTextColorIds( KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG65 ); + SelectTextColor(); // Customize icons if ( iIconProvider ) @@ -377,10 +376,6 @@ { return KAknsIIDQsnFrButtonPressedReject; } - else if( frameId == KAknsIIDQsnFrButtonNormalHold ) - { - return KAknsIIDQsnFrButtonPressedHold; - } else { return KAknsIIDQsnFrButtonPressed; @@ -401,12 +396,30 @@ { return KAknsIIDQsnFrButtonInactiveReject; } - else if( frameId == KAknsIIDQsnFrButtonNormalHold ) - { - return KAknsIIDQsnFrButtonInactiveHold; - } else { return KAknsIIDQsnFrButtonInactive; } } + +// ----------------------------------------------------------------------------- +// Selects the correct text color. +// ----------------------------------------------------------------------------- +// +void CBubbleTouchPaneButton::SelectTextColor() + { + TAknsQsnTextColorsIndex textColorIndex( EAknsCIQsnTextColorsCG65 ); + TInt command = CommandId( EFalse ); + + if ( command == EPhoneCallComingCmdAnswer ) + { + textColorIndex = EAknsCIQsnTextColorsCG82; + } + else if ( command == EPhoneCallComingCmdReject ) + { + textColorIndex = EAknsCIQsnTextColorsCG83; + } + + // function button text color + SetTextColorIds( KAknsIIDQsnTextColors, textColorIndex ); + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/Src/BMUtils.cpp --- a/phoneuis/BubbleManager/Src/BMUtils.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/Src/BMUtils.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include @@ -1489,10 +1489,15 @@ CFbsBitGc* transparencyCtx; User::LeaveIfError( transparencyDev->CreateContext( transparencyCtx ) ); CleanupStack::PushL( transparencyCtx ); - transparencyCtx->SetBrushColor( KRgbDarkGray ); - transparencyCtx->SetBrushStyle( CGraphicsContext::ESolidBrush ); - transparencyCtx->DrawRect( rect ); - + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + AknsDrawUtils::DrawFrame( skin, + *transparencyCtx, + aOuterRect, + aInnerRect, + aFrameID, + KAknsIIDDefault, + KAknsDrawParamDefault ); + CleanupStack::PopAndDestroy( 2, transparencyDev ); // create solid black mask diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout.cpp --- a/phoneuis/BubbleManager/laf/BMLayout.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout.h --- a/phoneuis/BubbleManager/laf/BMLayout.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout.h Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ // INCLUDES #include #include -#include +#include /** * Layout coordinates from Application LAF diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout2.cpp --- a/phoneuis/BubbleManager/laf/BMLayout2.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout2.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout2.h --- a/phoneuis/BubbleManager/laf/BMLayout2.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout2.h Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ // INCLUDES #include #include -#include +#include /** * Layout coordinates from Application LAF diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout3.cpp --- a/phoneuis/BubbleManager/laf/BMLayout3.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout3.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout3.h --- a/phoneuis/BubbleManager/laf/BMLayout3.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout3.h Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ // INCLUDES #include #include -#include +#include /** * Call3 (video cli) layout coordinates from Application LAF diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout4.cpp --- a/phoneuis/BubbleManager/laf/BMLayout4.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout4.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout4.h --- a/phoneuis/BubbleManager/laf/BMLayout4.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout4.h Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ // INCLUDES #include #include -#include +#include /** * Layout coordinates from Application LAF diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout6.cpp --- a/phoneuis/BubbleManager/laf/BMLayout6.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/BubbleManager/laf/BMLayout6.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ #include "BMBubbleManager.h" #include #include -#include +#include #include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/BubbleManager/laf/BMLayout6.h diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/ConnectUtil/inc/CCoUtlActive.h --- a/phoneuis/ConnectUtil/inc/CCoUtlActive.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/ConnectUtil/inc/CCoUtlActive.h Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ #define CCOUTLACTIVE_H // INCLUDES -#include +#include #include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/ConnectUtil/inc/CCoUtlImplementation.h --- a/phoneuis/ConnectUtil/inc/CCoUtlImplementation.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/ConnectUtil/inc/CCoUtlImplementation.h Fri Apr 23 14:59:43 2010 +0100 @@ -21,7 +21,7 @@ #define CCOUTLIMPLEMENTATION_H // INCLUDES -#include +#include #include // FORWARD DECLARATION diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/ConnectUtil/inc/CCoUtlInterface.h --- a/phoneuis/ConnectUtil/inc/CCoUtlInterface.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/ConnectUtil/inc/CCoUtlInterface.h Fri Apr 23 14:59:43 2010 +0100 @@ -86,7 +86,7 @@ }; -#include +#include #endif // CCOUTLINTERFACE_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/ConnectUtil/inc/CCoUtlInterface.inl --- a/phoneuis/ConnectUtil/inc/CCoUtlInterface.inl Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/ConnectUtil/inc/CCoUtlInterface.inl Fri Apr 23 14:59:43 2010 +0100 @@ -19,7 +19,7 @@ // INCLUDE FILES #include -#include +#include // CONSTANTS _LIT8( KCoUtlResolverData, "default" ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/ConnectUtil/src/CCoUtlActive.cpp --- a/phoneuis/ConnectUtil/src/CCoUtlActive.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/ConnectUtil/src/CCoUtlActive.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/ConnectUtil/src/CoUtlMain.cpp --- a/phoneuis/ConnectUtil/src/CoUtlMain.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/ConnectUtil/src/CoUtlMain.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -20,7 +20,7 @@ // INCLUDE FILES #include #include -#include +#include #include "CCoUtlImplementation.h" // CONSTANTS diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/group/ussd.mmp --- a/phoneuis/Ussd/group/ussd.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/Ussd/group/ussd.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -62,13 +62,14 @@ LIBRARY hlplch.lib // for "Help" options menu LIBRARY FeatMgr.lib LIBRARY CdlEngine.lib -LIBRARY charconv.lib // for detecting unicode chars +LIBRARY charconv.lib // for detecting unicode chars LIBRARY CommonEngine.lib - LIBRARY AknLayout2Scalable.lib LIBRARY AknSkins.lib LIBRARY etext.lib LIBRARY CentralRepository.lib +LIBRARY peninputclient.lib +LIBRARY flogger.lib // ============================================================================ // AIF diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/inc/UssdLogger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/Ussd/inc/UssdLogger.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,90 @@ +/* +* Copyright (c) 2010 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: Logger headerfile for CbsServer +* +*/ + +#ifndef USSDLOGGER_H +#define USSDLOGGER_H + +/* +----------------------------------------------------------------------------- + LOGGIN MODE SELECTION +----------------------------------------------------------------------------- +*/ +#ifndef _DEBUG + // UREL BUILD: + #define USSDUI_LOGGING_METHOD 0 // No logging in UREL builds +#else + // UDEB BUILD: + // 0 = No logging, + // 1 = Flogger, + // 2 = RDebug + #define USSDUI_LOGGING_METHOD 2 +#endif //_DEBUG + +/* +----------------------------------------------------------------------------- + FILE LOGGING SETTINGS +----------------------------------------------------------------------------- +*/ +#if USSDUI_LOGGING_METHOD == 1 // Flogger + #include + _LIT(KCbsLogFolder, "ussdui"); + _LIT(KCbsLogFile, "ussdui.txt"); + +#elif USSDUI_LOGGING_METHOD == 2 // RDebug + + #include + +#endif //USSDUI_LOGGING_METHOD + +/* +----------------------------------------------------------------------------- + IMPLEMENTATION OF THE LOGGING MACROs + USE THESE MACROS IN YOUR CODE +---------------------------------------------------------------------------- +*/ + + +#if USSDUI_LOGGING_METHOD == 1 // Flogger + +#define _LOGTEXT(AAA) /*lint -save -e960 */ { RFileLogger::Write(KCbsLogFolder(),KCbsLogFile(),EFileLoggingModeAppend,AAA); } /*lint -restore */ +#define _LOGSTRING(AAA) /*lint -save -e960 */ { _LIT(tempLogDes,AAA); RFileLogger::Write(KCbsLogFolder(),KCbsLogFile(),EFileLoggingModeAppend,tempLogDes()); } /*lint -restore */ +#define _LOGSTRING2(AAA,BBB) /*lint -save -e960 -e437 */ { _LIT(tempLogDes,AAA); RFileLogger::WriteFormat(KCbsLogFolder(),KCbsLogFile(),EFileLoggingModeAppend,TRefByValue(tempLogDes()),BBB); } /*lint -restore */ +#define _LOGSTRING3(AAA,BBB,CCC) /*lint -save -e960 */ { _LIT(tempLogDes,AAA); RFileLogger::WriteFormat(KCbsLogFolder(),KCbsLogFile(),EFileLoggingModeAppend,TRefByValue(tempLogDes()),BBB,CCC); } /*lint -restore */ + +#elif USSDUI_LOGGING_METHOD == 2 // RDebug + +#define _LOGTEXT(AAA) RDebug::Print(AAA); +#define _LOGSTRING(AAA) RDebug::Print(_L(AAA)); +#define _LOGSTRING2(AAA,BBB) RDebug::Print(_L(AAA),BBB); +#define _LOGSTRING3(AAA,BBB,CCC) RDebug::Print(_L(AAA),BBB,CCC); + +#else // USSDUI_LOGGING_METHOD == 0 or invalid + +// Example: _LOGTEXT(own_desc); +#define _LOGTEXT(AAA) +// Example: _LOGSTRING("Test"); +#define _LOGSTRING(AAA) +// Example: _LOGSTRING("Test %i", aValue); +#define _LOGSTRING2(AAA,BBB) +// Example: _LOGSTRING("Test %i %i", aValue1, aValue2); +#define _LOGSTRING3(AAA,BBB,CCC) + +#endif // USSDUI_LOGGING_METHOD + +#endif // USSDLOGGER_H + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/inc/UssdNaviPane.h --- a/phoneuis/Ussd/inc/UssdNaviPane.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/Ussd/inc/UssdNaviPane.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -22,6 +22,7 @@ // INCLUDES #include +#include // FORWARD DECLARATIONS @@ -132,7 +133,8 @@ // The navipane control container. CAknNavigationControlContainer* iNaviPane; - + // Client for accessing pen editor (virtual keyboard) + RPeninputServer iPeninputServer; }; diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/src/UssdAppUi.cpp --- a/phoneuis/Ussd/src/UssdAppUi.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/Ussd/src/UssdAppUi.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -15,24 +15,22 @@ * */ - // INCLUDE FILES -#include "UssdAppUi.h" -#include "UssdContainer.h" -#include "UssdComms.h" #include #include -#include "ussd.hrh" #include #include #include #include #include - #include #include // For HlpLauncher - +#include "UssdAppUi.h" +#include "UssdContainer.h" +#include "UssdComms.h" +#include "ussd.hrh" +#include "UssdLogger.h" // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- @@ -41,11 +39,12 @@ // ----------------------------------------------------------------------------- void CUssdAppUi::ConstructL() { + _LOGSTRING( "CUssdAppUi::ConstructL =>" ) // Sets up TLS, must be done before FeatureManager is used in USSD. FeatureManager::InitializeLibL(); BaseConstructL( - EAknEnableSkin | EAknEnableMSK + EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible ); // Softkeys at start: @@ -66,9 +65,9 @@ iAppContainer->ConstructL( ClientRect() ); AddToStackL( iAppContainer ); iIsAddedToStack = ETrue; + _LOGSTRING( "CUssdAppUi::ConstructL <=" ) } - // ----------------------------------------------------------------------------- // CUssdAppUi::~CUssdAppUi // Destructor @@ -76,28 +75,29 @@ // ----------------------------------------------------------------------------- CUssdAppUi::~CUssdAppUi() { + _LOGSTRING( "CUssdAppUi::~CUssdAppUi =>" ) if ( iIsAddedToStack ) { RemoveFromStack( iAppContainer ); } delete iAppContainer; - iAppContainer = NULL; delete iComms; - iComms = NULL; // Frees the TLS! Must be done after FeatureManager is used. FeatureManager::UnInitializeLib(); + _LOGSTRING( "CUssdAppUi::~CUssdAppUi <=" ) } - // ----------------------------------------------------------------------------- // CUssdAppUi::HandleCommandL // Handle commands from the user. // ----------------------------------------------------------------------------- void CUssdAppUi::HandleCommandL( TInt aCommand ) { + _LOGSTRING2( "CUssdAppUi::HandleCommandL =>, aCommand=%d", + aCommand ) switch ( aCommand ) { case EAknCmdExit: @@ -145,9 +145,9 @@ default: break; } + _LOGSTRING( "CUssdAppUi::HandleCommandL <=" ) } - // ----------------------------------------------------------------------------- // CUssdAppUi::HandleResourceChangeL // ----------------------------------------------------------------------------- @@ -167,6 +167,8 @@ // ----------------------------------------------------------------------------- void CUssdAppUi::HandleForegroundEventL( TBool aForeground ) { + _LOGSTRING2( "CUssdAppUi::HandleForegroundEventL =>, aForeground=%d", + aForeground ) if ( iComms ) { if ( aForeground ) @@ -202,9 +204,9 @@ } CAknAppUi::HandleForegroundEventL( aForeground ); + _LOGSTRING( "CUssdAppUi::HandleForegroundEventL <=" ) } - // ----------------------------------------------------------------------------- // CUssdAppUi::DynInitMenuPaneL // Set's Send option visible. @@ -236,7 +238,6 @@ // If help not defined, do nothing } - // ----------------------------------------------------------------------------- // CUssdAppUi::SetSofkeySendVisibleL // Sets Send softkey (in)visible. diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/src/UssdContainer.cpp --- a/phoneuis/Ussd/src/UssdContainer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/Ussd/src/UssdContainer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -18,26 +18,15 @@ // INCLUDE FILES -#include "UssdComms.h" -#include "UssdNaviPane.h" -#include "UssdAppUi.h" -#include "UssdContainer.h" -#include "UssdEditorLines.h" + #include -#include "UssdLayout.h" #include -#include "ussd.hrh" #include #include #include - #include #include -#include "telephonyvariant.hrh" - #include // for help context -#include "UssdApp.h" // for applicationUID -#include // For skinning. #include @@ -45,7 +34,16 @@ #include #include - +#include "telephonyvariant.hrh" +#include "UssdComms.h" +#include "UssdNaviPane.h" +#include "UssdAppUi.h" +#include "UssdContainer.h" +#include "UssdEditorLines.h" +#include "UssdLayout.h" +#include "ussd.hrh" +#include "UssdApp.h" // for applicationUID +#include "UssdLogger.h" // ============================ MEMBER FUNCTIONS =============================== @@ -67,6 +65,7 @@ // void CUssdContainer::ConstructL( const TRect& aRect ) { + _LOGSTRING( "CUssdContainer::ConstructL =>" ) CreateWindowL(); // Create background control context for skins. @@ -100,12 +99,14 @@ ActivateL(); iEditor->SetFocus( ETrue ); + _LOGSTRING( "CUssdContainer::ConstructL <=" ) } // Destructor CUssdContainer::~CUssdContainer() { + _LOGSTRING( "CUssdContainer::~CUssdContainer =>" ) delete iLines; AknsUtils::DeregisterControlPosition( iEditor ); @@ -113,6 +114,7 @@ delete iNaviPaneHandler; delete iBgContext; // For skinning, can be deleted, NULL if not exist. + _LOGSTRING( "CUssdContainer::~CUssdContainer <=" ) } // ----------------------------------------------------------------------------- @@ -288,6 +290,9 @@ TKeyResponse CUssdContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) { + _LOGSTRING3( + "CUssdContainer::OfferKeyEventL =>,TKeyEvent::iCode=%d,TEventCode=%d", + aKeyEvent.iCode, aType ) TKeyResponse response = EKeyWasNotConsumed; // Special key handling comes first. @@ -335,7 +340,8 @@ iAppUi.Cba()->SetCommandSetL( R_USSD_SOFTKEYS_OPTIONS_EXIT_OPTIONS ); iAppUi.Cba()->DrawNow(); } - + _LOGSTRING2( + "CUssdContainer::OfferKeyEventL <=, response=%d", response ) return response; } @@ -444,12 +450,8 @@ newEditor->SetAknEditorInputMode( EAknEditorNumericInputMode ); newEditor->SetAknEditorNumericKeymap( EAknEditorStandardNumberModeKeymap ); - TInt editorFlags = EAknEditorFlagNoT9 | EAknEditorFlagEnableScrollBars; - - if ( FeatureManager::FeatureSupported( KFeatureIdJapanese ) ) - { - editorFlags |= EAknEditorFlagLatinInputModesOnly; - } + TInt editorFlags = EAknEditorFlagNoT9 | EAknEditorFlagEnableScrollBars | + EAknEditorFlagLatinInputModesOnly; if( FeatureManager::FeatureSupported( KFeatureIdPenSupport ) ) { @@ -482,6 +484,7 @@ // --------------------------------------------------------- void CUssdContainer::UpdateNavipaneMsgLengthL() { + _LOGSTRING( "CUssdContainer::UpdateNavipaneMsgLengthL =>" ) if ( iNaviPaneHandler ) { @@ -507,7 +510,7 @@ iEditor->SetMaxLength( maxLen ); } - + _LOGSTRING( "CUssdContainer::UpdateNavipaneMsgLengthL <=" ) } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/src/UssdEditorLines.cpp --- a/phoneuis/Ussd/src/UssdEditorLines.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/Ussd/src/UssdEditorLines.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -53,7 +53,10 @@ // transparency to display the editor window content as background // for this line-window. EnableWindowTransparency(); - + + // enabled drag event to editor for highlighting the text. + EnableDragEvents(); + // Create region buffer. iRegBuf = new ( ELeave ) RRegionBuf< KUssdMaxNumberOfEditorLines >; @@ -119,10 +122,10 @@ // // ----------------------------------------------------------------------------- // -void CUssdEditorLines::Draw( const TRect& aRect ) const +void CUssdEditorLines::Draw( const TRect& /*aRect*/ ) const { // Take the colour from some ramdom line. - // Here it is takem from the first line. + // Here it is taken from the first line. TRgb lineColour( KRgbWhite ); diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/Ussd/src/UssdNaviPane.cpp --- a/phoneuis/Ussd/src/UssdNaviPane.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/Ussd/src/UssdNaviPane.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -24,9 +24,9 @@ #include #include #include "UssdComms.h" - #include "UssdAppUi.h" #include "UssdNaviPane.h" +#include "UssdLogger.h" #include // CONSTANTS @@ -82,9 +82,11 @@ // void CUssdNaviPane::ConstructL() { + _LOGSTRING( "CUssdNaviPane::ConstructL =>" ) CreateExtraNaviLabelL(); + User::LeaveIfError( iPeninputServer.Connect() ); iCharacterSetConverter = CCnvCharacterSetConverter::NewL(); iCharacterSetConverter->PrepareToConvertToOrFromL( @@ -93,7 +95,7 @@ iCharacterSetConverter->SetDowngradeForExoticLineTerminatingCharacters( CCnvCharacterSetConverter::EDowngradeExoticLineTerminatingCharactersToJustLineFeed ); - + _LOGSTRING( "CUssdNaviPane::ConstructL <=" ) } // ----------------------------------------------------------------------------- @@ -104,6 +106,8 @@ // CUssdNaviPane::~CUssdNaviPane() { + _LOGSTRING( "CUssdNaviPane::~CUssdNaviPane =>" ) + iPeninputServer.Close(); if ( iNaviPane && iNaviDecorator ) { @@ -117,7 +121,7 @@ iCharacterSetConverter = NULL; iNaviLabel = NULL; - + _LOGSTRING( "CUssdNaviPane::~CUssdNaviPane <=" ) } // ---------------------------------------------------- @@ -150,6 +154,8 @@ TInt CUssdNaviPane::UpdateMsgLengthL( const TDesC& aInputString, CCoeControl* aControl ) { + _LOGSTRING2( "CUssdNaviPane::UpdateMsgLengthL =>, aInputString=%S", + &aInputString ) TInt maxLen(0); const TInt txtLen = aInputString.Length(); @@ -196,7 +202,12 @@ } iNaviLabel->SetTextL( *digitBuffer ); + _LOGSTRING( + "CUssdNaviPane::UpdateMsgLengthL iPeninputServer.UpdateAppInfo" ) + iPeninputServer.UpdateAppInfo( *digitBuffer, EAppIndicatorMsg ); CleanupStack::PopAndDestroy( digitBuffer ); + _LOGSTRING2( "CUssdNaviPane::UpdateMsgLengthL <=, maxLen=%d", + maxLen ) return maxLen; } @@ -210,6 +221,9 @@ // TBool CUssdNaviPane::NeedsToBeSentAsUnicodeL( const TDesC& aInputString ) const { + _LOGSTRING2( + "CUssdNaviPane::NeedsToBeSentAsUnicodeL =>, aInputString=%S", + &aInputString ) TBool needsToBeSentAsUnicode = EFalse; @@ -255,6 +269,9 @@ remainderOfInputString.Set( remainderOfInputString.Right( returnValue ) ); } + _LOGSTRING2( + "CUssdNaviPane::NeedsToBeSentAsUnicodeL <=, needsToBeSentAsUnicode=%d", + needsToBeSentAsUnicode ) return needsToBeSentAsUnicode; } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/bwins/dialeru.def --- a/phoneuis/dialer/bwins/dialeru.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/bwins/dialeru.def Fri Apr 23 14:59:43 2010 +0100 @@ -1,8 +1,15 @@ EXPORTS - ??1CDialer@@UAE@XZ @ 1 NONAME ; CDialer::~CDialer(void) - ??1CVideoDTMFDialer@@UAE@XZ @ 2 NONAME ; CVideoDTMFDialer::~CVideoDTMFDialer(void) - ?NewL@CDialer@@SAPAV1@ABVCCoeControl@@ABVTRect@@@Z @ 3 NONAME ; class CDialer * CDialer::NewL(class CCoeControl const &, class TRect const &) - ?NewL@CVideoDTMFDialer@@SAPAV1@ABVCCoeControl@@AAV2@ABVTRect@@@Z @ 4 NONAME ; class CVideoDTMFDialer * CVideoDTMFDialer::NewL(class CCoeControl const &, class CCoeControl &, class TRect const &) - ?NumberEntry@CDialer@@QAEPAVMNumberEntry@@XZ @ 5 NONAME ; class MNumberEntry * CDialer::NumberEntry(void) - ?SetNumberEntryObserver@CDialer@@UAEXAAVMNumberEntryObserver@@@Z @ 6 NONAME ; void CDialer::SetNumberEntryObserver(class MNumberEntryObserver &) + ?Controller@CDialer@@QAEPAVMPhoneDialerController@@XZ @ 1 NONAME ; class MPhoneDialerController * CDialer::Controller(void) + ?NumberEntry@CDialer@@QAEPAVMNumberEntry@@XZ @ 2 NONAME ; class MNumberEntry * CDialer::NumberEntry(void) + ?NewL@CVideoDTMFDialer@@SAPAV1@ABVCCoeControl@@AAV2@ABVTRect@@@Z @ 3 NONAME ; class CVideoDTMFDialer * CVideoDTMFDialer::NewL(class CCoeControl const &, class CCoeControl &, class TRect const &) + ?UpdateToolbar@CDialer@@QAEXXZ @ 4 NONAME ; void CDialer::UpdateToolbar(void) + ?SetNumberEntryObserver@CDialer@@UAEXAAVMNumberEntryObserver@@@Z @ 5 NONAME ; void CDialer::SetNumberEntryObserver(class MNumberEntryObserver &) + ?NewL@CDialer@@SAPAV1@ABVCCoeControl@@ABVTRect@@PAVMPhoneDialerController@@@Z @ 6 NONAME ; class CDialer * CDialer::NewL(class CCoeControl const &, class TRect const &, class MPhoneDialerController *) + ??1CDialer@@UAE@XZ @ 7 NONAME ; CDialer::~CDialer(void) + ?GetEasyDialingInterface@CDialer@@QBEPAVCDialingExtensionInterface@@XZ @ 8 NONAME ; class CDialingExtensionInterface * CDialer::GetEasyDialingInterface(void) const + ?SetControllerL@CDialer@@QAEXPAVMPhoneDialerController@@@Z @ 9 NONAME ; void CDialer::SetControllerL(class MPhoneDialerController *) + ?RelayoutAndDraw@CDialer@@QAEXXZ @ 10 NONAME ; void CDialer::RelayoutAndDraw(void) + ??1CVideoDTMFDialer@@UAE@XZ @ 11 NONAME ; CVideoDTMFDialer::~CVideoDTMFDialer(void) + ?HandleKeyboardLayoutChange@CDialer@@UAEXXZ @ 12 NONAME ; void CDialer::HandleKeyboardLayoutChange(void) + ?HandleQwertyModeChange@CDialer@@UAEXH@Z @ 13 NONAME ; void CDialer::HandleQwertyModeChange(int) diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialer.pkg --- a/phoneuis/dialer/data/dialer.pkg Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/data/dialer.pkg Fri Apr 23 14:59:43 2010 +0100 @@ -28,3 +28,16 @@ ;Files to install "\epoc32\release\armv5\urel\dialer.dll"-"z:\sys\bin\dialer.dll" "\epoc32\data\z\resource\dialer.rsc"-"z:\resource\dialer.rsc" +"\epoc32\data\z\resource\dialerkeypad.rsc"-"z:\resource\dialerkeypad.rsc" +"\epoc32\data\z\resource\dialerkeypad_cyrillic.rsc"-"z:\resource\dialerkeypad_cyrillic.rsc" +"\epoc32\data\z\resource\dialerkeypad_greek.rsc"-"z:\resource\dialerkeypad_greek.rsc" +"\epoc32\data\z\resource\dialerkeypad_hebrew.rsc"-"z:\resource\dialerkeypad_hebrew.rsc" +"\epoc32\data\z\resource\dialerkeypad_arabic.rsc"-"z:\resource\dialerkeypad_arabic.rsc" +"\epoc32\data\z\resource\dialerkeypad_farsi.rsc"-"z:\resource\dialerkeypad_farsi.rsc" +"\epoc32\data\z\resource\dialerkeypad_urdu.rsc"-"z:\resource\dialerkeypad_urdu.rsc" +"\epoc32\data\z\resource\dialerkeypad_thai.rsc"-"z:\resource\dialerkeypad_thai.rsc" +"\epoc32\data\z\resource\dialerkeypad_devanagari.rsc"-"z:\resource\dialerkeypad_devanagari.rsc" +"\epoc32\data\z\resource\dialerkeypad_chn_pinyin.rsc"-"z:\resource\dialerkeypad_chn_pinyin.rsc" +"\epoc32\data\z\resource\dialerkeypad_chn_stroke.rsc"-"z:\resource\dialerkeypad_chn_stroke.rsc" +"\epoc32\data\z\resource\dialerkeypad_chn_zhuyin.rsc"-"z:\resource\dialerkeypad_chn_zhuyin.rsc" + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialer.rss --- a/phoneuis/dialer/data/dialer.rss Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/data/dialer.rss Fri Apr 23 14:59:43 2010 +0100 @@ -32,8 +32,6 @@ #include #include - - // CONSTANTS // RESOURCE DEFINITIONS @@ -100,6 +98,5 @@ }; } - // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialer_stub.pkg --- a/phoneuis/dialer/data/dialer_stub.pkg Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/data/dialer_stub.pkg Fri Apr 23 14:59:43 2010 +0100 @@ -27,4 +27,17 @@ ;Files to install ""-"z:\sys\bin\dialer.dll" -""-"z:\resource\dialer.rsc" +""-"z:\resource\dialer.r*" +""-"z:\resource\dialerkeypad.rsc" +""-"z:\resource\dialerkeypad_cyrillic.rsc" +""-"z:\resource\dialerkeypad_greek.rsc" +""-"z:\resource\dialerkeypad_hebrew.rsc" +""-"z:\resource\dialerkeypad_arabic.rsc" +""-"z:\resource\dialerkeypad_farsi.rsc" +""-"z:\resource\dialerkeypad_urdu.rsc" +""-"z:\resource\dialerkeypad_thai.rsc" +""-"z:\resource\dialerkeypad_devanagari.rsc" +""-"z:\resource\dialerkeypad_chn_pinyin.rsc" +""-"z:\resource\dialerkeypad_chn_stroke.rsc" +""-"z:\resource\dialerkeypad_chn_zhuyin.rsc" + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialer_stub.sis Binary file phoneuis/dialer/data/dialer_stub.sis has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad.rh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad.rh Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,48 @@ +/* +* Copyright (c) 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: Resource prototypes for dialer keypad labels +* +*/ +#ifndef DIALERKEYPAD_RH +#define DIALERKEYPAD_RH + +// system includes + +// constants +#define DEFAULT_KEY_1_TEXT "" +#define DEFAULT_KEY_2_TEXT "abc" +#define DEFAULT_KEY_3_TEXT "def" +#define DEFAULT_KEY_4_TEXT "ghi" +#define DEFAULT_KEY_5_TEXT "jkl" +#define DEFAULT_KEY_6_TEXT "mno" +#define DEFAULT_KEY_7_TEXT "pqrs" +#define DEFAULT_KEY_8_TEXT "tuv" +#define DEFAULT_KEY_9_TEXT "wxyz" +#define DEFAULT_KEY_0_TEXT <0xf812> +#define DEFAULT_KEY_ASTERISK_TEXT "" +#define DEFAULT_KEY_HASH_TEXT "" + +STRUCT DIALER_KEY + { + LTEXT firstRow = ""; + LTEXT secondRow = ""; + } + +STRUCT DIALER_KEYPAD + { + STRUCT keys[]; + } + + +#endif // DIALERKEYPAD_RH diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,90 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This is the default latin variant of the file. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_arabic.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_arabic.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,97 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Arabic +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = <0x062A><0x200c><0x0628>; + secondRow = <0x062B><0x200c><0x0629>; + }, + DIALER_KEY // 3 + { + firstRow = <0x0621><0x200c><0x0627>; + }, + DIALER_KEY // 4 + { + firstRow = <0x0634><0x200c><0x0633>; + secondRow = <0x0636><0x200c><0x0635>; + }, + DIALER_KEY // 5 + { + firstRow = <0x0630><0x200c><0x062F>; + secondRow = <0x0632><0x200c><0x0631>; + }, + DIALER_KEY // 6 + { + firstRow = <0x062E><0x200c><0x062D><0x200c><0x062C>; + }, + DIALER_KEY // 7 + { + firstRow = <0x0647><0x200c><0x0646>; + secondRow = <0x064A><0x200c><0x0648>; + }, + DIALER_KEY // 8 + { + firstRow = <0x0643><0x200c><0x0642><0x200c><0x0641>; + secondRow = <0x0645><0x200c><0x0644><0x200c>; + }, + DIALER_KEY // 9 + { + firstRow = <0x0638><0x200c><0x0637>; + secondRow = <0x063A><0x200c><0x0639>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_chn_pinyin.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_chn_pinyin.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,90 @@ +/* +* Copyright (c) 2010 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: Dialer virtual keypad button text labels. +* This is the Chinese Pinyin variant of the file. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_chn_stroke.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_chn_stroke.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2010 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: Dialer virtual keypad button text labels. +* This is the Chinese Stroke variant of the file. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = <0x4e00>; + secondRow = " "; // to force two line layout + }, + DIALER_KEY // 2 + { + firstRow = <0x4e28>; + secondRow = DEFAULT_KEY_2_TEXT; + }, + DIALER_KEY // 3 + { + firstRow = <0x4e3f>; + secondRow = DEFAULT_KEY_3_TEXT; + }, + DIALER_KEY // 4 + { + firstRow = <0x4e36>; + secondRow = DEFAULT_KEY_4_TEXT; + }, + DIALER_KEY // 5 + { + firstRow = <0x4e5b>; + secondRow = DEFAULT_KEY_5_TEXT; + }, + DIALER_KEY // 6 + { + secondRow = DEFAULT_KEY_6_TEXT; + }, + DIALER_KEY // 7 + { + secondRow = DEFAULT_KEY_7_TEXT; + }, + DIALER_KEY // 8 + { + secondRow = DEFAULT_KEY_8_TEXT; + }, + DIALER_KEY // 9 + { + secondRow = DEFAULT_KEY_9_TEXT; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_chn_zhuyin.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_chn_zhuyin.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,96 @@ +/* +* Copyright (c) 2010 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: Dialer virtual keypad button text labels. +* This is the Chinese Zhuyin variant of the file. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = <0x3105><0x3106>; + secondRow = <0x3107><0x3108>; + }, + DIALER_KEY // 2 + { + firstRow = <0x3109><0x310a>; + secondRow = <0x310b><0x310c>; + }, + DIALER_KEY // 3 + { + firstRow = <0x310d><0x310e><0x310f>; + }, + DIALER_KEY // 4 + { + firstRow = <0x3110><0x3111><0x3112>; + }, + DIALER_KEY // 5 + { + firstRow = <0x3113><0x3114>; + secondRow = <0x3115><0x3116>; + }, + DIALER_KEY // 6 + { + firstRow = <0x3117><0x3118><0x3119>; + }, + DIALER_KEY // 7 + { + firstRow = <0x311a><0x311b>; + secondRow = <0x311c><0x311d>; + }, + DIALER_KEY // 8 + { + firstRow = <0x311e><0x311f>; + secondRow = <0x3120><0x3121>; + }, + DIALER_KEY // 9 + { + firstRow = <0x3122><0x3123>; + secondRow = <0x3124><0x3125><0x3126>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = <0x3127><0x3128><0x3129>; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_cyrillic.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_cyrillic.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Cyrillic +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + secondRow = <0x0430><0x0431><0x0432><0x0433>; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + secondRow = <0x0434><0x0435><0x0436><0x0437>; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + secondRow = <0x0438><0x0439><0x043A><0x043B>; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + secondRow = <0x043C><0x043D><0x043E><0x043F>; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + secondRow = <0x0440><0x0441><0x0442><0x0443>; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + secondRow = <0x0444><0x0445><0x0446><0x0447>; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + secondRow = <0x0448><0x0449><0x044A><0x044B>; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + secondRow = <0x044C><0x044D><0x044E><0x044F>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_devanagari.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_devanagari.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Devanagari +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + secondRow = <0x0905><0x002D><0x090A>; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + secondRow = <0x090F><0x002D><0x0914>; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + secondRow = <0x0915><0x002D><0x0919>; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + secondRow = <0x091A><0x002D><0x091E>; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + secondRow = <0x091F><0x002D><0x0923>; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + secondRow = <0x0924><0x002D><0x0928>; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + secondRow = <0x092A><0x002D><0x092E>; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + secondRow = <0x092F><0x002D><0x0939>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_farsi.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_farsi.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Farsi +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = <0x067E><0x200c><0x0628>; + secondRow = <0x062B><0x200c><0x062A>; + }, + DIALER_KEY // 3 + { + firstRow = <0x0624><0x200c><0x0622><0x200c><0x0627>; + secondRow = <0x0621><0x200c><0x0626>; + }, + DIALER_KEY // 4 + { + firstRow = <0x0634><0x200c><0x0633>; + secondRow = <0x0636><0x200c><0x0635>; + }, + DIALER_KEY // 5 + { + firstRow = <0x0631><0x200c><0x0630><0x200c><0x062F>; + secondRow = <0x0698><0x200c><0x0632>; + }, + DIALER_KEY // 6 + { + firstRow = <0x0686><0x200c><0x062C>; + secondRow = <0x062E><0x200c><0x062D>; + }, + DIALER_KEY // 7 + { + firstRow = <0x0648><0x200c><0x0646>; + secondRow = <0x06CC><0x200c><0x0647>; + }, + DIALER_KEY // 8 + { + firstRow = <0x06A9><0x200c><0x0642><0x200c><0x0641>; + secondRow = <0x0645><0x200c><0x0644><0x200c><0x06AF>; + }, + DIALER_KEY // 9 + { + firstRow = <0x0638><0x200c><0x0637>; + secondRow = <0x063A><0x200c><0x0639>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_greek.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_greek.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Greek +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + secondRow = <0x03B1><0x03B2><0x03B3>; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + secondRow = <0x03B4><0x03B5><0x03B6>; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + secondRow = <0x03B7><0x03B8><0x03B9>; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + secondRow = <0x03BA><0x03BB><0x03BC>; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + secondRow = <0x03BD><0x03BE><0x03BF>; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + secondRow = <0x03C0><0x03C1><0x03C3><0x03C2>; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + secondRow = <0x03C4><0x03C5><0x03C6>; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + secondRow = <0x03C7><0x03C8><0x03C9>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_hebrew.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_hebrew.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Hebrew +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + secondRow = <0x05D5><0x05D4><0x05D3>; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + secondRow = <0x05D2><0x05D1><0x05D0>; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + secondRow = <0x05E0><0x05DE>; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + secondRow = <0x05DC><0x05DB><0x05D9>; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + secondRow = <0x05D8><0x05D7><0x05D6>; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + secondRow = <0x05EA><0x05E9><0x05E8>; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + secondRow = <0x05E7><0x05E6>; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + secondRow = <0x05E4><0x05E2><0x05E1>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_thai.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_thai.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,100 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Thai +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + secondRow = <0x0E01><0x002D><0x0E05>; + }, + DIALER_KEY // 2 + { + firstRow = DEFAULT_KEY_2_TEXT; + secondRow = <0x0E06><0x002D><0x0E09>; + }, + DIALER_KEY // 3 + { + firstRow = DEFAULT_KEY_3_TEXT; + secondRow = <0x0E0A><0x002D><0x0E0D>; + }, + DIALER_KEY // 4 + { + firstRow = DEFAULT_KEY_4_TEXT; + secondRow = <0x0E0E><0x002D><0x0E13>; + }, + DIALER_KEY // 5 + { + firstRow = DEFAULT_KEY_5_TEXT; + secondRow = <0x0E14><0x002D><0x0E18>; + }, + DIALER_KEY // 6 + { + firstRow = DEFAULT_KEY_6_TEXT; + secondRow = <0x0E19><0x002D><0x0E1D>; + }, + DIALER_KEY // 7 + { + firstRow = DEFAULT_KEY_7_TEXT; + secondRow = <0x0E1E><0x002D><0x0E22>; + }, + DIALER_KEY // 8 + { + firstRow = DEFAULT_KEY_8_TEXT; + secondRow = <0x0E23><0x002D><0x0E29>; + }, + DIALER_KEY // 9 + { + firstRow = DEFAULT_KEY_9_TEXT; + secondRow = <0x0E2A><0x002D><0x0E2E>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/data/dialerkeypad_urdu.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/data/dialerkeypad_urdu.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,98 @@ +/* +* Copyright (c) 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: Dialer virtual keypad button text labels. +* This variant is for languages written with Urdu +* alphabets. +* +*/ + +// NOTE: It's mandatory that all variated keypad resources have +// the same resouce identifier and same structure. Same interface +// is used for all of them! + +// RESOURCE IDENTIFIER +NAME DIKP + +#include +#include + +#include "dialerkeypad.rh" + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF { buf=""; } + +RESOURCE DIALER_KEYPAD r_dialer_keypad + { + keys = + { + DIALER_KEY // 1 + { + firstRow = DEFAULT_KEY_1_TEXT; + }, + DIALER_KEY // 2 + { + firstRow = <0x062A><0x200c><0x067E><0x200c><0x0628>; + secondRow = <0x062B><0x200c><0x0679>; + }, + DIALER_KEY // 3 + { + firstRow = <0x0621><0x200c><0x0622><0x200c><0x0627>; + }, + DIALER_KEY // 4 + { + firstRow = <0x0634><0x200c><0x0633>; + secondRow = <0x0636><0x200c><0x0635>; + }, + DIALER_KEY // 5 + { + firstRow = <0x0631><0x200c><0x0630><0x200c><0x0688><0x200c><0x062F>; + secondRow = <0x0698><0x200c><0x0632><0x200c><0x0691>; + }, + DIALER_KEY // 6 + { + firstRow = <0x0686><0x200c><0x062C>; + secondRow = <0x062E><0x200c><0x062D>; + }, + DIALER_KEY // 7 + { + firstRow = <0x06BE><0x200c><0x0648><0x200c><0x0646>; + secondRow = <0x06D2><0x200c><0x06CC>; + }, + DIALER_KEY // 8 + { + firstRow = <0x06A9><0x200c><0x0642><0x200c><0x0641>; + secondRow = <0x0645><0x200c><0x0644><0x200c><0x06AF>; + }, + DIALER_KEY // 9 + { + firstRow = <0x0638><0x200c><0x0637>; + secondRow = <0x063A><0x200c><0x0639>; + }, + DIALER_KEY // * + { + firstRow = DEFAULT_KEY_ASTERISK_TEXT; + }, + DIALER_KEY // 0 + { + firstRow = DEFAULT_KEY_0_TEXT; + }, + DIALER_KEY // # + { + firstRow = DEFAULT_KEY_HASH_TEXT; + } + }; + } + +// End Of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/eabi/dialeru.def --- a/phoneuis/dialer/eabi/dialeru.def Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/eabi/dialeru.def Fri Apr 23 14:59:43 2010 +0100 @@ -3,11 +3,20 @@ _ZN16CVideoDTMFDialerD0Ev @ 2 NONAME _ZN16CVideoDTMFDialerD1Ev @ 3 NONAME _ZN16CVideoDTMFDialerD2Ev @ 4 NONAME - _ZN7CDialer11NumberEntryEv @ 5 NONAME - _ZN7CDialer22SetNumberEntryObserverER20MNumberEntryObserver @ 6 NONAME - _ZN7CDialer4NewLERK11CCoeControlRK5TRect @ 7 NONAME - _ZN7CDialerD0Ev @ 8 NONAME - _ZN7CDialerD1Ev @ 9 NONAME - _ZN7CDialerD2Ev @ 10 NONAME - _ZThn52_N7CDialer22SetNumberEntryObserverER20MNumberEntryObserver @ 11 NONAME ; ## + _ZN7CDialer10ControllerEv @ 5 NONAME + _ZN7CDialer11NumberEntryEv @ 6 NONAME + _ZN7CDialer13UpdateToolbarEv @ 7 NONAME + _ZN7CDialer14SetControllerLEP22MPhoneDialerController @ 8 NONAME + _ZN7CDialer15RelayoutAndDrawEv @ 9 NONAME + _ZN7CDialer22SetNumberEntryObserverER20MNumberEntryObserver @ 10 NONAME + _ZN7CDialer4NewLERK11CCoeControlRK5TRectP22MPhoneDialerController @ 11 NONAME + _ZN7CDialerD0Ev @ 12 NONAME + _ZN7CDialerD1Ev @ 13 NONAME + _ZN7CDialerD2Ev @ 14 NONAME + _ZNK7CDialer23GetEasyDialingInterfaceEv @ 15 NONAME + _ZThn52_N7CDialer22SetNumberEntryObserverER20MNumberEntryObserver @ 16 NONAME + _ZN7CDialer22HandleQwertyModeChangeEi @ 17 NONAME + _ZN7CDialer26HandleKeyboardLayoutChangeEv @ 18 NONAME + _ZThn64_N7CDialer22HandleQwertyModeChangeEi @ 19 NONAME + _ZThn64_N7CDialer26HandleKeyboardLayoutChangeEv @ 20 NONAME diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/group/bld.inf --- a/phoneuis/dialer/group/bld.inf Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -30,6 +30,8 @@ ../rom/dialer.iby CORE_APP_LAYER_IBY_EXPORT_PATH(dialer.iby) +../rom/dialer_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(dialer_variant.iby) + PRJ_EXTENSIONS START EXTENSION s60/mifconv OPTION TARGETFILE dialer.mif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/group/dialer.mmp --- a/phoneuis/dialer/group/dialer.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/group/dialer.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -39,15 +39,23 @@ SOURCE cdialer.cpp SOURCE cdialercontainerbase.cpp SOURCE cdialerkeypadcontainer.cpp +SOURCE cdialerkeypadbutton.cpp SOURCE cdialernumberentry.cpp SOURCE cdialervideocontainer.cpp SOURCE cvideodtmfdialer.cpp +SOURCE cdialingextensionobserver.cpp +SOURCE cdialertoolbarcontainer.cpp +SOURCE cdialerkeypadlabelmanager.cpp +SOURCE cdialercenrepwrapper.cpp USERINCLUDE ../inc USERINCLUDE ../data +USERINCLUDE ../../../phoneapp/phoneuiutils/inc APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE ../../../inc + LIBRARY euser.lib eikcore.lib estor.lib etext.lib LIBRARY cone.lib ws32.lib bmpanim.lib LIBRARY eikcoctl.lib fbscli.lib bafl.lib @@ -60,5 +68,61 @@ LIBRARY efsrv.lib LIBRARY aknlayout2.lib touchfeedback.lib +LIBRARY ecom.lib +LIBRARY CommonEngine.lib +LIBRARY PtiEngine.lib +LIBRARY centralrepository.lib +LIBRARY cenrepnotifhandler.lib +LIBRARY serviceprovidersettings.lib +// Keypad resources. Header is generated only for the +// default variant, all the variants use the same header. +START RESOURCE ../data/dialerkeypad.rss +TARGETPATH RESOURCE_FILES_DIR +HEADER +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_cyrillic.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_greek.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_hebrew.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_arabic.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_farsi.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_urdu.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_thai.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_devanagari.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_chn_pinyin.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_chn_zhuyin.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE + +START RESOURCE ../data/dialerkeypad_chn_stroke.rss +TARGETPATH RESOURCE_FILES_DIR +END // RESOURCE // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/group/dialerstub.mmp --- a/phoneuis/dialer/group/dialerstub.mmp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/group/dialerstub.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -67,5 +67,6 @@ LIBRARY bitgdi.lib LIBRARY egul.lib LIBRARY efsrv.lib +LIBRARY ecom.lib // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/group/iconlist.txt --- a/phoneuis/dialer/group/iconlist.txt Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/group/iconlist.txt Fri Apr 23 14:59:43 2010 +0100 @@ -1,12 +1,2 @@ --c8,8 qgn_indi_dialer_eight --c8,8 qgn_indi_dialer_five --c8,8 qgn_indi_dialer_four --c8,8 qgn_indi_dialer_hash --c8,8 qgn_indi_dialer_nine --c8,8 qgn_indi_dialer_one --c8,8 qgn_indi_dialer_prefix --c8,8 qgn_indi_dialer_seven --c8,8 qgn_indi_dialer_six --c8,8 qgn_indi_dialer_three --c8,8 qgn_indi_dialer_two --c8,8 qgn_indi_dialer_zero \ No newline at end of file +-c8,8 qgn_indi_dialer_voicemail +-c8,8 qgn_indi_dialer_internet diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialer.h --- a/phoneuis/dialer/inc/cdialer.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/cdialer.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -25,6 +25,7 @@ #include #include "mnumberentry.h" +#include "mphoneqwertymodeobserver.h" // CONSTANTS @@ -37,6 +38,10 @@ class CEikonEnv; class CAknEdwinState; class MNumberEntryObserver; +class CDialingExtensionInterface; +class CDialingExtensionObserver; +class CDialerToolbarContainer; +class MPhoneDialerController; // CLASS DECLARATION @@ -114,7 +119,11 @@ delete dialer; * */ -NONSHARABLE_CLASS(CDialer) : public CCoeControl, public MNumberEntry +NONSHARABLE_CLASS(CDialer) : + public CCoeControl, + public MNumberEntry, + public MCoeControlObserver, + public MPhoneQwertyModeObserver { public: // Constructors and destructor @@ -122,10 +131,12 @@ * Two phase constructor * @param aContainer Parent container * @param aRect Area to use for dialer + * @param aController Dialer controller providing state data for dialer * @return New instance of Dialer */ IMPORT_C static CDialer* NewL( const CCoeControl& aContainer, - const TRect& aRect ); + const TRect& aRect, + MPhoneDialerController* aController ); /** * Destructor. @@ -144,7 +155,45 @@ * Set number entry observer. */ IMPORT_C void SetNumberEntryObserver( MNumberEntryObserver& aObserver ); + + /** + * Sets controller of the dialer. Controller is responsible of providing + * toolbar functions, text prompt, etc, as appropriate for the curret dialer state. + */ + IMPORT_C void SetControllerL( MPhoneDialerController* aController ); + + /** + * Gets current controller of the dialer. + */ + IMPORT_C MPhoneDialerController* Controller(); + /** + * Returns pointer to easydialing interface. This can be NULL if + * easydialing is not present in device, so value must be checked + * before using the interface. + * + * @return Pointer to easydialing interface + */ + IMPORT_C CDialingExtensionInterface* GetEasyDialingInterface() const; + + /** + * Toolbar of the easydialing layout is owned by the Dialer. + * Calling this methods updates status of its buttons. + */ + IMPORT_C void UpdateToolbar(); + + /** + * Updates number entry editor to correct state. State depends on + * qwerty availability and easydialing and voip settings. + */ + void UpdateNumberEntryConfiguration(); + + + /** + * Relayout and draw control. Also updates toolbar. + */ + IMPORT_C void RelayoutAndDraw(); + public: // from MNumberEntry /** @@ -179,9 +228,9 @@ /** * Get Number Entry Text. - * @param aDesC The text. + * @param aDes The text. */ - void GetTextFromNumberEntry( TDes& aDesC ); + void GetTextFromNumberEntry( TDes& aDes ); /** * Removes NE and empties the buffer. @@ -223,6 +272,21 @@ */ void EnableTactileFeedback( const TBool aEnable ); + /** + * Handle Qwerty mode change. + * @param aMode 0 = off, 1 = on + */ + IMPORT_C void HandleQwertyModeChange( TInt aMode ); + + /** + * @see MIdleQwertyModeObserver. + */ + IMPORT_C void HandleKeyboardLayoutChange(); + + private: // Functions from MCoeControlObserver + + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + private: // Functions from CCoeControl /** @@ -287,9 +351,11 @@ * 2nd phase constructor. * @param aContainer Parent container * @param aRect Area to use for dialer + * @param aController Dialer controller providing state data for dialer */ - void ConstructL( const CCoeControl& aContainer , - const TRect& aRect ); + void ConstructL( const CCoeControl& aContainer, + const TRect& aRect, + MPhoneDialerController* aController ); /** * Load resource file. @@ -311,14 +377,42 @@ * Returns edwin state * @return Pointer to CAknEdwinState */ - CAknEdwinState* EdwinState(); + CAknEdwinState* EdwinState() const; + /** Editor types. */ + enum TEditorType + { + ENumericEditor, + EAlphanumericEditor, + EVirtualKeyboardEditor + }; + /** * Updates editor flags for virtual * keyboard. */ - void UpdateVkbEditorFlagsL(); + void UpdateEdwinState( TEditorType aType ); + /** + * Loads easydialing plugin. If loading fails (for instance when + * easydialing feature flag is not enabled in the device), + * iEasyDialer will be NULL after this function returns. + */ + void LoadEasyDialingPlugin(); + + /** + * Checks if Easy dialing is available, allowed, and currently enabled. + * + * @return ETrue if Easy Dialing is enabked + */ + TBool EasyDialingEnabled() const; + + /** + * Layout number entry component. The used layout depends on + * the availability and state of Easy dialing. + */ + void LayoutNumberEntry( const TRect& aParent, TInt aVariety ); + private: // Data // Keypad container - owned @@ -327,21 +421,44 @@ // Number entry container - owned CDialerNumberEntry* iNumberEntry; - // Parent container - const CCoeControl* iParentControl; - // Is Number entry (e.g. dialer) being used at the moment TBool iIsUsed; - // Reference to CEikonEnv - CEikonEnv& iEikEnv; - // Resource TInt iResourceOffset; // Is virtual key board open TBool iVirtualKeyBoardOpen; + /** + * Easydialing plugin. This can be NULL if easydialing feature flag + * is not enabled in the device. + * Own. + */ + CDialingExtensionInterface* iEasyDialer; + + /** + * Observer for Easydialing. + * Own. + */ + CDialingExtensionObserver* iDialingExtensionObserver; + + /** + * Toolbar used in Easy dialing layout. + * Own. + */ + CDialerToolbarContainer* iToolbar; + + /** + * Controller rules the mode of the Dialer (e.g. normal, DTMF, restricted...) + * Not owned. + */ + MPhoneDialerController* iController; + + /* + * Is qwerty mode on. + */ + TBool iQwertyMode; }; #endif // CDIALER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialercenrepwrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/inc/cdialercenrepwrapper.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,110 @@ +/* +* Copyright (c) 2010 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: Wrapper class for Central Repository handling. +* Using this helper class is most helpful when one class needs +* to observe state changes in several repositories. +*/ + +#ifndef DIALERCENREPWRAPPER_H +#define DIALERCENREPWRAPPER_H + +// INCLUDES +#include +#include +#include + +// CALLBACK INTERFACE +NONSHARABLE_CLASS( MDialerCenRepObserver ) + { +public: + virtual void HandleRepositoryChange( TUid aRepository, TUint32 aKey ) = 0; + }; + +// FORWARD DECLARATIONS +class CRepository; + +// CLASS DECLARATION + +/** + * CDialerCenRepWrapper + * + */ +NONSHARABLE_CLASS( CDialerCenRepWrapper ): + public CBase, public MCenRepNotifyHandlerCallback + { +public: // constructors and destructor + + /** + * Destructor. + */ + ~CDialerCenRepWrapper(); + + /** + * Two-phased constructor. + */ + static CDialerCenRepWrapper* NewL( + MDialerCenRepObserver& aObserver, TUid aRepository ); + + /** + * Two-phased constructor. + */ + static CDialerCenRepWrapper* NewLC( + MDialerCenRepObserver& aObserver, TUid aRepository ); + +private: // consturctors + + /** + * Constructor for performing 1st stage construction + */ + CDialerCenRepWrapper( + MDialerCenRepObserver& aObserver, TUid aRepository ); + + /** + * Symbian default constructor for performing 2nd stage construction + */ + void ConstructL(); + +public: // from MCenRepNotifyHandlerCallback + + /** + * @see MCenRepNotifyHandlerCallback + */ + void HandleNotifyGeneric( TUint32 aId ); + +public: // new methods + + /** + * Get integer value from the repository. + * @see CRepository::Get + */ + TInt Get( TUint32 aKey, TInt& aValue ); + + // Getters for other data types may be added here if needed + +private: // data + + /** Observer is notified on repository changes */ + MDialerCenRepObserver& iObserver; + + /** UID of the repository */ + TUid iRepositoryId; + + /** Repository handle. Owned. */ + CRepository* iRepository; + + /** Helper for reacting to repository changes. */ + CCenRepNotifyHandler* iCenRepNotifyHandler; + }; + +#endif // DIALERCENREPWRAPPER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialerkeypadbutton.h --- a/phoneuis/dialer/inc/cdialerkeypadbutton.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/cdialerkeypadbutton.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008, 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" @@ -21,6 +21,9 @@ #include #include +#include "dialercommon.h" + +const TMifDialer KDialerNoIcon = EMbmDialerLastElement; // CLASS DECLARATION @@ -30,39 +33,204 @@ * @lib dialer.lib * @since S60 v5.0 */ -NONSHARABLE_CLASS( CDialerKeyPadButton ) : public CBase +NONSHARABLE_CLASS( CDialerKeyPadButton ) : public CAknButton { + public: // Enumerations + + enum TDialerKeyPadButtonEvent + { + /* Reported to the observer when pointer is dragged outside + * the button's area. + */ + EEventDraggingOutsideButton = 200 + }; + public: - CDialerKeyPadButton(); - + /** + * @param aNumberLabel The number (etc) of the key. + * Reference must remain valid until reset with SetNumLabel + * @parem aPrimaryAlphaLabel The first row of alphabets of the key. + * Reference must remain valid until reset with SetPrimaryAlphaLabel + * @param aSecondaryAlphaLabel The second row of alphabets of the key. + * Reference must remain valid until reset with SetSecondaryAlphaLabel + * @param aScanCode The button scanCode. + * @param aKeyCode The button keyCode. + * @param aButtonIconId The icon for the normal state. + * @param aButtonIconMaskId The icon mask for the normal state. + * @param aFlags CAknButton flags + */ + static CDialerKeyPadButton* NewLC( const TDesC& aNumberLabel, + const TDesC& aPrimaryAlphaLabel, + const TDesC& aSecondaryAlphaLabel, + TInt aScanCode, + TInt aKeyCode, + TMifDialer aButtonIconId, + TMifDialer aButtonIconMaskId, + TInt aFlags ); + + /** + * Destructor + */ ~CDialerKeyPadButton(); - + public: - CCoeControl* Control() const { return iButton; }; + + /** + * Scan code associated with the key. + */ TInt ScanCode() const; + + /** + * Key code associated with the key + */ TInt KeyCode() const; - void CreateButtonL( const TInt aScanCode, - const TInt aKeyCode, - const TMifDialer aButtonIcon, - const TMifDialer aButtonIconMask ); - void SetIconSize( TSize& aSize ); - void HandleResourceChange( TInt aType ); - void MapDialerIconToSkinIcon( const TInt aDialerIcon, - TAknsItemID& aItemId ) const; + + /** + * Set layout variety to be used + */ + void SetVariety( TInt aVariety ); + + /** + * Set operation mode of the keypad. Operation mode has rules, + * which labels are shown and how they are laid out. + */ + void SetOperationMode( TDialerOperationMode aMode ); + + /** + * Set number label for the key. + * @param aLabel Reference to new label text. The reference must remain + * valid until reset or this button is deleted. + */ + void SetNumLabel( const TDesC& aLabel ); + + /** + * Set first row alphabet label. + * @param aLabel Reference to new label text. The reference must remain + * valid until reset or this button is deleted. + */ + void SetPrimaryAlphaLabel( const TDesC& aLabel ); + + /** + * Set second row alphabet label for the key. + * @param aLabel Reference to new label text. The reference must remain + * valid until reset or this button is deleted. + */ + void SetSecondaryAlphaLabel( const TDesC& aLabel ); + + /** + * Enable or disable audio feedback for this button. + * @param aEnable ETrue if audio feedback should be enabled. + * EFalse otherwise. + */ void EnableAudioFeedback( const TBool aEnable ); + public: //from CAknButton + + /** + * @see CAknButton + */ + void HandleResourceChange( TInt aType ); + + protected: // from CAknButton + + /** + * @see CAknButton + */ + void Draw(const TRect& aRect) const; + + /** + * @see CAknButton + */ + void SizeChanged(); + + /** + * @see CAknButton + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + private: + void UpdateIconL(); + void DrawIconAndText( CWindowGc& aGc ) const; + void GetTextColors( TRgb& aPenColor, TRgb& aBrushColor ) const; + void MapDialerIconToSkinIcon( TInt aDialerIcon, + TAknsItemID& aItemId ) const; + void SetIconLayout( const TRect& aRect ); + + private: // constructors + + /** + * C++ constructor + * + * @param aNumberLabel The number (etc) of the key. + * @param aPrimaryAlphaLabel The first row of alphabets of the key. + * @param aSecondaryAlphaLabel The second row of alphabets of the key. + * @param aScanCode The button scanCode. + * @param aKeyCode The button keyCode. + * @param aButtonIconId The icon for the normal state. + * @param aButtonIconMaskId The mask icon for the normal state. + * @param aFlags CAknButton flags + */ + CDialerKeyPadButton( const TDesC& aNumberLabel, + const TDesC& aPrimaryAlphaLabel, + const TDesC& aSecondaryAlphaLabel, + TInt aScanCode, + TInt aKeyCode, + TMifDialer aButtonIconId, + TMifDialer aButtonIconMaskId, + TInt aFlags ); + + /** + * Symbian 2nd phase constructor. + * + * @param aFlags Flags of the button. + */ + void ConstructL( TInt aFlags ); private: // data - - CAknButton* iButton; - + + /** Scan code of the key */ TInt iScanCode; + + /** Key code of the key */ TInt iKeyCode; - TMifDialer iButtonIcon; - TMifDialer iButtonIconMask; + + /** ID of the icon bitmap */ + TMifDialer iButtonIconId; + + /** ID of the icon mask */ + TMifDialer iButtonIconMaskId; + + /** Layout variety to use */ + TInt iVariety; + + /** Operation mode of the keypad */ + TDialerOperationMode iOperationMode; + + /** Layout for number */ + TAknLayoutText iNumberLayout; + + /** Layout for primary row of alphabets */ + TAknLayoutText iPrimaryAlphaLayout; + + /** Layout for secondar row of alphabets */ + TAknLayoutText iSecondaryAlphaLayout; + + /** Label containing the number or hash or asterisk */ + TPtrC iNumberLabel; + + /** Label containing first row of alphabets */ + TPtrC iPrimaryAlphaLabel; + + /** Label containing second row of alphabets */ + TPtrC iSecondaryAlphaLabel; + + /** Rect inside the button where icon is drawn (if available) */ + TRect iIconRect; + + /** Own variable for counting drag events, cannot use the one in base class */ + TInt iDragEventCounter; }; #endif // C_CDIALERKEYPADBUTTON_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialerkeypadcontainer.h --- a/phoneuis/dialer/inc/cdialerkeypadcontainer.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/cdialerkeypadcontainer.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -26,12 +26,14 @@ #include #include "cdialercontainerbase.h" +#include "cdialerkeypadlabelmanager.h" // CONSTANTS // FORWARD DECLARATIONS class CDialerKeyPadButton; + // CLASS DECLARATION /** @@ -41,7 +43,8 @@ * @since S60 v5.0 */ NONSHARABLE_CLASS(CDialerKeyPadContainer) : public CDialerContainerBase, - public MCoeForegroundObserver + public MCoeForegroundObserver, + public MDialerKeyPadLabelManagerCallback { public: // Constructors and destructor @@ -69,6 +72,19 @@ void EnableTactileFeedback( const TBool aEnable ); + // moved from private to public + /** + * @see CCoeControl + */ + void MakeVisible( TBool aVisible ); + + /** + * Sets the operation mode. New mode takes effect once the + * size of the component is reset. + * @param aOperatingMode New operation mode. + */ + void SetOperationMode( TDialerOperationMode aOperatingMode ); + private: // Functions from base classes /** @@ -92,11 +108,6 @@ void HandleResourceChange( TInt aType ); /** - * @see CCoeControl - */ - void MakeVisible( TBool aVisible ); - - /** * @see MCoeControlObserver */ void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType ); @@ -111,6 +122,10 @@ */ void HandleLosingForeground(); + /** + * @see MDialerKeyPadLabelManagerCallback + */ + void KeyLabelsChanged(); private: // From CDialerContainerBase @@ -140,6 +155,11 @@ void SetPhoneLayout(); /** + * Set layout in Easy Dialing mode + */ + void SetEasyDialingLayout(); + + /** * Set layout in Video DTMF mode */ void SetVideoLayout(); @@ -149,7 +169,6 @@ */ void CreateButtonsL(); - private: // Data TDialerOperationMode iOperatingMode; @@ -158,22 +177,29 @@ * Keypad buttons. * Owned. */ - RPointerArray iButtons; + RPointerArray iButtons; /** - * Number of buttons. + * True, when EEventStateChanged event reported. */ - TInt iButtonCount; - - /** - * True, when EEventStateChanged event reported. - */ TBool iButtonPressedDown; /** * Stores last pointer event. - */ + */ TPointerEvent iPointerEvent; + + /** + * Helper to manage keypad button labels + */ + CDialerKeyPadLabelManager* iKeyLabelManager; + + /** + * True if key up event has been simulated in order to cancel + * long tap action due to dragging pointer outside of + * pressed button. + */ + TBool iKeyUpSimulatedDueToDragging; }; #endif // CDIALERKEYPADCONTAINER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialerkeypadlabelmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/inc/cdialerkeypadlabelmanager.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,224 @@ +/* +* Copyright (c) 2009, 2010 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: Helper class to handle virtual keypad text labels +* +*/ + +#ifndef CDIALERKEYPADLABELMANAGER_H +#define CDIALERKEYPADLABELMANAGER_H + +// INCLUDES +#include +#include +#include +#include "cdialercenrepwrapper.h" + + +// FORWARD DECLARATIONS +class CCoeEnv; +class CPtiEngine; +class CEnvironmentChangeNotifier; + + +// CALLBACK INTERFACE +NONSHARABLE_CLASS( MDialerKeyPadLabelManagerCallback ) + { +public: + /** + * This event is given when change in system settings has + * caused key label texts to change. All the TPtrC descriptors + * previously returned by CDialerKeyPadLabelManager become + * dangling references when this happens and they must not + * be used after this method is called. + */ + virtual void KeyLabelsChanged() = 0; + }; + + +// CLASS DECLARATION + +/** + * CDialerKeyPadLabelManager + * + */ +NONSHARABLE_CLASS( CDialerKeyPadLabelManager ) : public CBase, public MDialerCenRepObserver + { +public: // Constructors and destructor + + /** + * Destructor. + */ + ~CDialerKeyPadLabelManager(); + + /** + * Two-phased constructor. + */ + static CDialerKeyPadLabelManager* NewL( CCoeEnv& aCoeEnv, + MDialerKeyPadLabelManagerCallback& aObserver ); + + /** + * Two-phased constructor. + */ + static CDialerKeyPadLabelManager* NewLC( CCoeEnv& aCoeEnv, + MDialerKeyPadLabelManagerCallback& aObserver ); + +private: // consturctors + + /** + * Constructor for performing 1st stage construction + */ + CDialerKeyPadLabelManager( CCoeEnv& aCoeEnv, + MDialerKeyPadLabelManagerCallback& aObserver ); + + /** + * Symbian default constructor for performing 2nd stage construction + */ + void ConstructL(); + +public: // methods + + /** + * Get number label for the button. + * @return Reference to the number text in current global number mode. + * The reference is valid until this label manager is deleted or + * global number mode is changed. Callback KeyLabelsChanged() + * is given to observer in the latter case. + */ + TPtrC ButtonNumLabel( TInt aIndex ) const; + + /** + * Get first row alphabet label for the button + * @return Reference to descriptor containing text for the first + * row of alphabets to be shown on the key. The reference is + * valid until this label manager is deleted or input language + * is changed. Callback KeyLabelsChanged() + * is given to observer in the latter case. + */ + TPtrC ButtonFirstAlphaLabel( TInt aIndex ) const; + + /** + * Get second row alphabet label for the button + * @return Reference to descriptor containing text for the first + * row of alphabets to be shown on the key. The reference is + * valid until this label manager is deleted or input language + * is changed. Callback KeyLabelsChanged() + * is given to observer in the latter case. + */ + TPtrC ButtonSecondAlphaLabel( TInt aIndex ) const; + +public: // from MDialerCenRepObserver + + /** + * Handle change in one of the observed repositories. + */ + void HandleRepositoryChange( TUid aRepository, TUint32 aId ); + +private: // methods + + /** + * Handle environment change event. We are interested about digit + * type changes in locale data. + */ + void HandleEnvChange(); + + /** + * Static wrapper for HandleEnvChange() function to be passed in TCallBack object. + */ + static TInt EnvChangeCallback( TAny* aSelfPtr ); + + /** + * Update button text labels to match current input and UI language. + */ + void UpdateTextLabelsL(); + + /** + * Update button number labels to use current global number mode. + */ + void UpdateNumLabelsL(); + + /** + * Get the full path of the keypad resource file to be used in current situation. + * @param aFileName On return, contains the file name. Caller is responsible + * of supplying large enough buffer. Maximum path length + * in Symbian is 256 characters. + */ + void GetResourceFileNameL( TDes& aFileName ); + + /** + * Returns code of the script to be used in current situation. + * It depends on the current input language, current UI language, and all + * available input languages on the device. + */ + TInt LabelScriptToUseL() const; + + /** + * Returns code of the Chinese script to be used in key labels. + * This depends on the currently active Chinese adaptive search mode. + * This should be used only when current input language is Chinese. + */ + TInt ChineseScriptToUseL() const; + +private: // data + + /** Control environment to use for resource management */ + CCoeEnv& iCoeEnv; + + /** Observer is notified when keypad labels are changed */ + MDialerKeyPadLabelManagerCallback& iObserver; + + /** PtiEngine instance is needed to find out available input languages */ + CPtiEngine* iPtiEngine; + + /** AknFep repository stores the current input language */ + CDialerCenRepWrapper* iAknFepRepository; + + /** Avkon repository stores the current Chinese matching mode */ + CDialerCenRepWrapper* iAvkonRepository; + + /** Helper to observe locale changes. Locale data contains digit type used for number labels. */ + CEnvironmentChangeNotifier* iEnvChangeNotifier; + + /** + * Array of number labels. Indexing matches that of the + * CDialerKeypadContainer::iButtons array. Owned. + */ + CDesCArray* iKeypadNumLabelArray; + + /** + * Array of first row alphabet labels. Indexing matches that of the + * CDialerKeypadContainer::iButtons array. Owned. + */ + CDesCArray* iKeypadFirstLabelArray; + + /** + * Array of second row alphabet labels. Indexing matches that of the + * CDialerKeypadContainer::iButtons array. Owned. + */ + CDesCArray* iKeypadSecondLabelArray; + + /** + * Offset value of currently loaded keypad resource. + * 0 if there's no loaded resource. + */ + TInt iResourceOffset; + + /** Script ID of the current keypad labels */ + TInt iLabelScriptInUse; + + /** Digit type currently used for keypad number labels */ + TDigitType iDigitTypeInUse; + }; + +#endif // CDIALERKEYPADLABELMANAGER_H + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialernumberentry.h --- a/phoneuis/dialer/inc/cdialernumberentry.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/cdialernumberentry.h Fri Apr 23 14:59:43 2010 +0100 @@ -28,6 +28,7 @@ #include #include "cdialercontainerbase.h" +#include "dialer.hrh" // CONSTANTS @@ -37,7 +38,7 @@ class CAknsFrameBackgroundControlContext; class MNumberEntryObserver; class CEikLabel; - +class CDialingExtensionInterface; // Number entry varietys enum TDialerNEVariety @@ -111,10 +112,16 @@ void SetTextToNumberEntry( const TDesC& aDesC ); /** + * Returns TPtrC pointed to editor text. + * @return Pointer to editor text. + */ + TPtrC Text() const; + + /** * Get tect from number entry. - * @param aDesc Text is returned here. + * @param aDes Text is returned here. */ - void GetTextFromNumberEntry( TDes& aDesC ); + void GetTextFromNumberEntry( TDes& aDes ); /** * Reset editor to default values. @@ -143,7 +150,13 @@ * Clear editor flags to default values. */ void ClearEditorFlags(); + + void SetEasyDialingPlugin( CDialingExtensionInterface* iEasyDialer ); + void SetOperationMode( TDialerOperationMode aMode ); + + TBool Validate( const TDesC& aString ); + private: // Functions from MCoeControlObserver /** * @see MCoeControlObserver @@ -178,12 +191,22 @@ */ void HandleResourceChange( TInt aType ); + /** + * @see CCoeControl + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + public: /** * @see CCoeControl */ void SetFocus( TBool aFocus, TDrawNow aDrawNow=ENoDrawNow ); + + /** + * @see CCoeControl + */ + void MakeVisible( TBool aVisible ); private: // From CDialerContainerBase @@ -271,7 +294,7 @@ CAknPhoneNumberEditor* iEditor; //Prompt text label for number entry. - CEikLabel* iLabel; + CEikLabel* iLabel; // NE Font. CFbsFont* iNEFont; @@ -286,9 +309,19 @@ TRect iInnerRect; - MNumberEntryObserver* iObserver; + MNumberEntryObserver* iObserver; + + TBool iNumberContents; - TBool iNumberContents; + TBuf iPreviousNumberEntryContent; + + // NOT OWN + CDialingExtensionInterface* iEasyDialer; + + TDialerOperationMode iOperationMode; + + // NOT OWNED. + CEikAppUi* iAppUi; }; #endif // CDIALERNUMBERENTRY_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialertoolbarcontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/inc/cdialertoolbarcontainer.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2009, 2010 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: CDialerToolbarContainer replaces the standard S60 toolbar +* in the Dialer layout in the Easy dialing mode. It's +* responsible of the toolbar layout and logic, but not of the +* contents which are provided by an instance of +* MPhoneDialerController. +* +*/ + +#ifndef CDIALERTOOLBAR_H_ +#define CDIALERTOOLBAR_H_ + +// INCLUDES +#include +#include "cdialercontainerbase.h" + +// FORWARD DECLARATIONS +class CAknButton; + + +// CLASS DECLARATION +NONSHARABLE_CLASS(CDialerToolbarContainer) : + public CDialerContainerBase, + private MCoeForegroundObserver + { +public: // constructor and destructor + static CDialerToolbarContainer* NewL( + CCoeControl& aParent, + MPhoneDialerController* aContentProvider ); + virtual ~CDialerToolbarContainer(); + +private: // constructors + CDialerToolbarContainer( + CCoeControl& aParent, + MPhoneDialerController* aContentProvider ); + void ConstructL(); + +public: // new methods + /** + * Set provider of toolbar button functions + */ + void SetContentProviderL( MPhoneDialerController* aProvider ); + + /** + * Update states of all toolbar buttons. + */ + void UpdateButtonStates(); + +protected: // from CDialerContainerBase + virtual void SetVariety(); + virtual void SetLayout(); + +protected: // from CCoeControl + TInt CountComponentControls() const; + CCoeControl* ComponentControl( TInt aIndex ) const; + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + +private: // from MCoeControlObserver + /** + * Callback for handling button presses. + */ + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + +private: // from MCoeForegroundObserver + void HandleGainingForeground(); + void HandleLosingForeground(); + +private: // new methods + + /** + * Create toolbar button instances and fill them with states + * according the data given by the content provider. + */ + void CreateButtonsL(); + + /** + * Delete all buttons and free the memory reserved for button data. + */ + void DeleteButtons(); + + /** + * Create and add new button state. + */ + void AddButtonStateL( TInt aButtonIndex, MPhoneDialerController::CButtonData& aButtonData ); + + /** + * Get command ID for the given button in it's current state. + */ + TInt ButtonCommand( const CAknButton& aButton ) const; + + /** + * Set layout for one button. + * @param aButtonIdx Index of the button to be laid out. + * @param aPos Position (top-left corned) where button is to be placed. + * @return Position of the next button. + */ + TPoint LayoutButton( TInt aButtonIdx, TPoint aPos ); + +private: // data + + /** Provides toolbar button data. Not owned. */ + MPhoneDialerController* iContentProvider; + + /** Button objects. Owned. */ + RPointerArray< CAknButton > iButtons; + + /** + * Maps buttons states to command IDs. + * First index is the button index, second index is the state index. + */ + RArray< RArray > iButtonCommands; + + /** The last received pointer event. */ + TPointerEvent iLatestPointerEvent; + }; + +#endif /* CDIALERTOOLBAR_H_ */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/cdialingextensionobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/inc/cdialingextensionobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,89 @@ +/* +* Copyright (c) 2007 - 2010 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: CDialingExtensionObserver provides an observer class for +* dialingextension plug-in. +* +*/ + +#ifndef CDIALINGEXTENSIONOBSERVER_H +#define CDIALINGEXTENSIONOBSERVER_H + +#include + +class CDialingExtensionInterface; +class CDialerNumberEntry; +class CDialer; + + +NONSHARABLE_CLASS( CDialingExtensionObserver ) : public CBase, public MDialingExtensionObserver + { +public: + + /** + * Two phase constructor + * @param aDialingExtension Dialer extension. Does not take ownership. + * @param aNumberEditor Number editor. Does not take ownership. + * @param aDialer Dialer. Does not take ownership. + * @return New instance + */ + static CDialingExtensionObserver* NewL( + CDialingExtensionInterface* aDialingExtension, + CDialerNumberEntry* aNumberEntry, + CDialer* aDialer ); + + /** + * Destructor + */ + ~CDialingExtensionObserver(); + + /** + * MDialingExtensionObserver function. + */ + void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ); + +private: + + + /** + * Cconstructor + * @param aDialingExtension Dialer extension. Does not take ownership. + * @param aNumberEditor Number editor. Does not take ownership. + * @param aDialer Dialer. Does not take ownership. + */ + CDialingExtensionObserver( + CDialingExtensionInterface* aDialingExtension, + CDialerNumberEntry* aNumberEntry, + CDialer* aDialer ); + + void UpdateCba(); + + void SearchL(); + +private: + + // Not owned. + CDialingExtensionInterface* iDialingExtension; + + // Not owned. + CDialerNumberEntry* iNumberEntry; + + // Not owned. + CDialer* iDialer; + + // Not owned. + CEikonEnv* iEikonEnvironment; + }; + +#endif // CDIALINGEXTENSIONOBSERVER_H + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/dialer.hrh --- a/phoneuis/dialer/inc/dialer.hrh Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/dialer.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -101,7 +101,8 @@ { EModeDialer, // Phone Dialer EModeVoiceDTMF, // Phone DTMF string query - EModeVideoDTMF // Video telephony DTMF send + EModeVideoDTMF, // Video telephony DTMF send + EModeEasyDialing // Easy dialing mode }; enum TVideoVariety diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/dialercommon.h --- a/phoneuis/dialer/inc/dialercommon.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/dialercommon.h Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -35,6 +35,28 @@ // ROM drive. _LIT( KDriveZ, "z:" ); +// Application name literal for panic macro +_LIT( KModuleName, "Dialer" ); + +// Panic macro +inline void DialerPanic( TInt aReason ) + { + User::Panic( KModuleName, aReason ); + } + +// Panic codes +enum TDialerPanicCode + { + EDialerPanicDrawingError = 100, + EDialerPanicNoApplicationInstance, + EDialerPanicUnknownScript, + EDialerPanicChineseScriptError, + EDialerPanicLabelNotFound, + EDialerPanicToolbarButtonNotFound, + EDialerPanicNullController, + EDialerPanicEventFromUnknownControl + }; + #endif // DIALERCOMMON_H // End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/inc/mnumberentry.h --- a/phoneuis/dialer/inc/mnumberentry.h Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/inc/mnumberentry.h Fri Apr 23 14:59:43 2010 +0100 @@ -29,6 +29,7 @@ // FORWARD DECLARATIONS class CCoeControl; +class CEikMenuPane; // easydialing // CLASS DECLARATION diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/rom/dialer_variant.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/rom/dialer_variant.iby Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2009, 2010 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: Image description file for variable resouces of Dialer +* +*/ + + +#ifndef DIALER_VARIANT_IBY +#define DIALER_VARIANT_IBY + +#include + +// NOTE: It's necessary to include keypad resources only to those scripts +// which are present in the device. However, including them all doens't hurt +// either and each resource file is quite small. +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad.rsc RESOURCE_FILES_DIR\dialerkeypad.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_cyrillic.rsc RESOURCE_FILES_DIR\dialerkeypad_cyrillic.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_greek.rsc RESOURCE_FILES_DIR\dialerkeypad_greek.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_hebrew.rsc RESOURCE_FILES_DIR\dialerkeypad_hebrew.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_arabic.rsc RESOURCE_FILES_DIR\dialerkeypad_arabic.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_farsi.rsc RESOURCE_FILES_DIR\dialerkeypad_farsi.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_urdu.rsc RESOURCE_FILES_DIR\dialerkeypad_urdu.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_thai.rsc RESOURCE_FILES_DIR\dialerkeypad_thai.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_devanagari.rsc RESOURCE_FILES_DIR\dialerkeypad_devanagari.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_chn_pinyin.rsc RESOURCE_FILES_DIR\dialerkeypad_chn_pinyin.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_chn_stroke.rsc RESOURCE_FILES_DIR\dialerkeypad_chn_stroke.rsc +data = DATAZ_\RESOURCE_FILES_DIR\dialerkeypad_chn_zhuyin.rsc RESOURCE_FILES_DIR\dialerkeypad_chn_zhuyin.rsc + +#endif // DIALER_VARIANT_IBY diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialer.cpp --- a/phoneuis/dialer/src/cdialer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/src/cdialer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -31,20 +31,27 @@ #include // for KDC_APP_RESOURCE_DIR #include // for BaflUtils #include +#include +#include +#include +#include #include "cdialer.h" #include "dialercommon.h" -#include #include "dialer.hrh" #include "cdialerkeypadcontainer.h" #include "cdialernumberentry.h" #include "dialertrace.h" #include "mnumberentry.h" +#include "cdialingextensionobserver.h" +#include "cdialertoolbarcontainer.h" /// ROM drive. _LIT( KDialerResourceFile, "dialer.rsc" ); -// number entry, keypad area -const TInt KContainedControlsInTelephonyMode = 2; + +// number entry, keypad area, easydialing, toolbar +const TInt KContainedControlsInTelephonyMode = 4; + // ========================= MEMBER FUNCTIONS ================================ @@ -55,16 +62,22 @@ // --------------------------------------------------------------------------- // EXPORT_C CDialer* CDialer::NewL( const CCoeControl& aContainer, - const TRect& aRect ) + const TRect& aRect, + MPhoneDialerController* aController ) { - CDialer* self = new( ELeave )CDialer ( ); + CDialer* self = new( ELeave )CDialer(); CleanupStack::PushL( self ); - self->ConstructL( aContainer , aRect ); - CleanupStack::Pop(); // self + self->ConstructL( aContainer, aRect, aController ); + CleanupStack::Pop( self ); return self; } +// ----------------------------------------------------------------------------- +// CDialer::~CDialer +// // Destructor +// ----------------------------------------------------------------------------- +// EXPORT_C CDialer::~CDialer() { DIALER_PRINT("CDialer::~CDialer<"); @@ -73,6 +86,10 @@ delete iKeypadArea; delete iNumberEntry; + delete iEasyDialer; + delete iDialingExtensionObserver; + delete iToolbar; + UnLoadResources(); DIALER_PRINT("CDialer::~CDialer>"); } @@ -85,7 +102,8 @@ // void CDialer::ConstructL( const CCoeControl& aContainer, - const TRect& aRect ) + const TRect& aRect, + MPhoneDialerController* aController ) { DIALER_PRINT("CDialer::ConstructL<"); LoadResourceL(); @@ -93,25 +111,41 @@ // set window SetContainerWindowL( aContainer ); SetParent( const_cast(&aContainer) ); - iParentControl = &aContainer; iNumberEntry = CDialerNumberEntry::NewL( *this ); - iKeypadArea = CDialerKeyPadContainer::NewL( *this, EModeDialer ); + iController = aController; + + iKeypadArea = CDialerKeyPadContainer::NewL( *this, EModeEasyDialing ); + iToolbar = CDialerToolbarContainer::NewL( *this, iController ); + + // try to create easydialing plugin. If plugin is not present, iEasydialer gets value NULL. + LoadEasyDialingPlugin(); + + iNumberEntry->SetEasyDialingPlugin( iEasyDialer ); + iNumberEntry->SetObserver( this ); + iNumberEntry->SetNumberEntryPromptTextL( iController->NumberEntryPromptTextL() ); + + UpdateToolbar(); + SetRect( aRect ); - SetComponentsToInheritVisibility( ETrue ); - + SetComponentsToInheritVisibility( EFalse ); + ActivateL(); DIALER_PRINT("CDialer::ConstructL>"); } -// Constructor -CDialer::CDialer( ) : - iEikEnv( *CEikonEnv::Static() ) +// ----------------------------------------------------------------------------- +// CDialer::CDialer +// +// Default constructor +// ----------------------------------------------------------------------------- +// +CDialer::CDialer() { - // Empty + // Empty } // ----------------------------------------------------------------------------- @@ -127,8 +161,6 @@ // ----------------------------------------------------------------------------- // CDialer::SetNumberEntryObserver -// -// // ----------------------------------------------------------------------------- // EXPORT_C void CDialer::SetNumberEntryObserver( MNumberEntryObserver& aObserver ) @@ -136,6 +168,101 @@ iNumberEntry->SetNumberEntryObserver( aObserver ); } +// ----------------------------------------------------------------------------- +// CDialer::SetControllerL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CDialer::SetControllerL( MPhoneDialerController* aController ) + { + DIALER_PRINTF( "CDialer::SetControllerL, aController = %x", aController ); + __ASSERT_DEBUG( aController, DialerPanic(EDialerPanicNullController) ); + if ( aController && iController != aController ) + { + iController = aController; + iToolbar->SetContentProviderL( iController ); + iNumberEntry->SetNumberEntryPromptTextL( iController->NumberEntryPromptTextL() ); + SizeChanged(); + UpdateToolbar(); + } + } + +// --------------------------------------------------------------------------- +// CDialer::Controller +// --------------------------------------------------------------------------- +// +EXPORT_C MPhoneDialerController* CDialer::Controller() + { + return iController; + } + +// --------------------------------------------------------------------------- +// CDialer::GetEasyDialingInterface +// --------------------------------------------------------------------------- +// +EXPORT_C CDialingExtensionInterface* CDialer::GetEasyDialingInterface() const + { + DIALER_PRINT("CDialer::GetEasyDialingInterface"); + return iEasyDialer; + } + +// --------------------------------------------------------------------------- +// CDialer::UpdateToolbar +// --------------------------------------------------------------------------- +// +EXPORT_C void CDialer::UpdateToolbar() + { + if ( iToolbar && iNumberEntry && iController ) + { + TBool numAvailable = ( iNumberEntry->TextLength() > 0 ); + iController->SetNumberEntryIsEmpty( !numAvailable ); + iToolbar->UpdateButtonStates(); + iToolbar->DrawDeferred(); + iKeypadArea->DrawDeferred(); // needed to remove drawing problem from leftmost button column + } + } + +// --------------------------------------------------------------------------- +// CDialer::UpdateNumberEntryConfiguration +// --------------------------------------------------------------------------- +// +void CDialer::UpdateNumberEntryConfiguration() + { + TEditorType editorType = ENumericEditor; + if ( iQwertyMode && iController->EasyDialingAllowed() ) + { + TBool voipSupported( EFalse ); + CSPSettings* serviceProviderSettings = NULL; + TRAPD( err, serviceProviderSettings = CSPSettings::NewL() ); + if ( !err ) + { + voipSupported = serviceProviderSettings->IsFeatureSupported( + ESupportInternetCallFeature ); + delete serviceProviderSettings; + } + + if ( EasyDialingEnabled() || voipSupported ) + { + editorType = EAlphanumericEditor; + } + } + + UpdateEdwinState( editorType ); + } + +// --------------------------------------------------------------------------- +// CDialer::RelayoutAndDraw +// --------------------------------------------------------------------------- +// +EXPORT_C void CDialer::RelayoutAndDraw() + { + if ( iIsUsed ) + { + SetSize( Size() ); + DrawDeferred(); + UpdateToolbar(); + } + } + // Methods from MNumberEntry // --------------------------------------------------------------------------- @@ -149,6 +276,8 @@ DIALER_PRINT("CDialer::CreateNumberEntry<"); iIsUsed = ETrue; + + UpdateNumberEntryConfiguration(); DIALER_PRINT("CDialer::CreateNumberEntry>"); } @@ -158,7 +287,7 @@ // // --------------------------------------------------------------------------- // -CCoeControl* CDialer::GetNumberEntry( ) const +CCoeControl* CDialer::GetNumberEntry() const { CCoeControl* control( NULL ); control = iNumberEntry->GetNumberEntry(); @@ -170,7 +299,7 @@ // // --------------------------------------------------------------------------- // -TBool CDialer::IsNumberEntryUsed( ) const +TBool CDialer::IsNumberEntryUsed() const { return iIsUsed; } @@ -199,9 +328,9 @@ // // --------------------------------------------------------------------------- // -void CDialer::GetTextFromNumberEntry( TDes& aDesC ) +void CDialer::GetTextFromNumberEntry( TDes& aDes ) { - iNumberEntry->GetTextFromNumberEntry( aDesC ); + iNumberEntry->GetTextFromNumberEntry( aDes ); } // --------------------------------------------------------------------------- @@ -209,10 +338,18 @@ // // --------------------------------------------------------------------------- // -void CDialer::RemoveNumberEntry( ) +void CDialer::RemoveNumberEntry() { ResetEditorToDefaultValues(); iIsUsed = EFalse; + + // easydialer change begins + if (iEasyDialer) + { + TRAP_IGNORE( iEasyDialer->HandleCommandL( EEasyDialingClosePopup ) ); + iEasyDialer->Reset(); + } + // easydialer change ends } // --------------------------------------------------------------------------- @@ -223,7 +360,7 @@ TInt CDialer::ChangeEditorMode( TBool aDefaultMode ) { TInt ret( KErrNotSupported ); - ret = iNumberEntry->ChangeEditorMode( aDefaultMode ); + ret = iNumberEntry->ChangeEditorMode( aDefaultMode ); return ret; } @@ -235,7 +372,7 @@ void CDialer::OpenVkbL() { iVirtualKeyBoardOpen = ETrue; - UpdateVkbEditorFlagsL(); + UpdateEdwinState( EVirtualKeyboardEditor ); iNumberEntry->HandleCommandL( EDialerCmdTouchInput ); } @@ -247,7 +384,8 @@ // TInt CDialer::GetEditorMode() const { - return iVirtualKeyBoardOpen ? EAknEditorTextInputMode : + TBool vkbOpen = EdwinState()->Flags() & EAknEditorFlagTouchInputModeOpened; + return ( iQwertyMode || vkbOpen ) ? EAknEditorTextInputMode : EAknEditorNumericInputMode; } @@ -281,6 +419,48 @@ iKeypadArea->EnableTactileFeedback( aEnable ); } +// --------------------------------------------------------- +// CDialer::HandleQwertyModeChange +// --------------------------------------------------------- +// +EXPORT_C void CDialer::HandleQwertyModeChange( TInt aMode ) + { + iQwertyMode = aMode; + UpdateNumberEntryConfiguration(); + } + +// --------------------------------------------------------- +// CDialer::HandleKeyboardLayoutChange +// --------------------------------------------------------- +// +EXPORT_C void CDialer::HandleKeyboardLayoutChange() + { + } + +// --------------------------------------------------------------------------- +// CDialer::HandleControlEventL +// --------------------------------------------------------------------------- +// +void CDialer::HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ) + { + switch ( aEventType ) + { + case MCoeControlObserver::EEventRequestFocus: + if ( aControl == iNumberEntry ) + { + if ( iEasyDialer ) + { + iEasyDialer->SetFocus( EFalse ); + } + iNumberEntry->SetFocus( ETrue ); + } + break; + + default: + break; + } + } + // Functions from CCoeControl // --------------------------------------------------------------------------- @@ -293,7 +473,7 @@ void CDialer::SizeChanged() { AknsUtils::RegisterControlPosition( this ); - TRect parentRect(Rect()); + TRect parentRect( Rect() ); // Method is called before containers are created. if ( !iKeypadArea ) @@ -301,19 +481,32 @@ return; } - TDialerVariety variety( EDialerVarietyLandscape ); - if ( !Layout_Meta_Data::IsLandscapeOrientation() ) - { - variety = EDialerVarietyPortrait; - } - // number entry - AknLayoutUtils::LayoutControl( - iNumberEntry, parentRect, - AknLayoutScalable_Apps::dialer2_ne_pane( variety ).LayoutLine() ); - // keypad area. + TDialerVariety variety = ( Layout_Meta_Data::IsLandscapeOrientation() ? + EDialerVarietyLandscape : EDialerVarietyPortrait ); + + // keypad area + TDialerOperationMode keypadOpMode = + ( EasyDialingEnabled() ? EModeEasyDialing : EModeDialer ); + iKeypadArea->SetOperationMode( keypadOpMode ); AknLayoutUtils::LayoutControl( iKeypadArea, parentRect, - AknLayoutScalable_Apps::grid_dialer2_keypad_pane( variety ).LayoutLine() ); + AknLayoutScalable_Apps::dia3_keypad_num_pane( variety ).LayoutLine() ); + + // toolbar + AknLayoutUtils::LayoutControl( + iToolbar, parentRect, + AknLayoutScalable_Apps::dia3_keypad_fun_pane( variety ).LayoutLine() ); + + // easy dial contacts list + if ( iEasyDialer ) + { + AknLayoutUtils::LayoutControl( + iEasyDialer, parentRect, + AknLayoutScalable_Apps::dia3_listscroll_pane( variety ).LayoutLine() ); + } + + // number entry + LayoutNumberEntry( parentRect, variety ); } // --------------------------------------------------------------------------- @@ -333,8 +526,12 @@ // TInt CDialer::CountComponentControls() const { - TInt count(0); - count = KContainedControlsInTelephonyMode; + TInt count( KContainedControlsInTelephonyMode ); + + if ( !iEasyDialer ) + { + count--; + } return count; } @@ -347,7 +544,7 @@ CCoeControl* CDialer::ComponentControl( TInt aIndex ) const { CCoeControl* currentControl(NULL); - currentControl = ComponentControlForDialerMode( aIndex); + currentControl = ComponentControlForDialerMode( aIndex ); return currentControl; } @@ -365,7 +562,17 @@ // void CDialer::FocusChanged(TDrawNow aDrawNow) { - iNumberEntry->SetFocus( IsFocused(), aDrawNow ); + if ( iEasyDialer ) + { + // Number entry is set to focus if dialer is in focus and easydialing plugin + // is not in focus. + TBool numberEntryFocus = IsFocused() && !iEasyDialer->IsFocused(); + iNumberEntry->SetFocus( numberEntryFocus, aDrawNow ); + } + else + { + iNumberEntry->SetFocus( IsFocused(), aDrawNow ); + } } // --------------------------------------------------------------------------- @@ -373,9 +580,32 @@ // --------------------------------------------------------------------------- // void CDialer::MakeVisible( TBool aVisible ) - { - CCoeControl::MakeVisible( aVisible ); - } + { + CCoeControl::MakeVisible( aVisible ); + + // Component control do not inherit visibility automatically as we + // want to control their visibility separately. + if ( iNumberEntry ) + { + iNumberEntry->MakeVisible( aVisible ); + } + + if ( iKeypadArea ) + { + iKeypadArea->MakeVisible( aVisible ); + } + + if ( iEasyDialer ) + { + TBool edVisible = + ( aVisible && EasyDialingEnabled() ); + iEasyDialer->MakeVisible( edVisible ); + } + if ( iToolbar ) + { + iToolbar->MakeVisible( aVisible ); + } + } // --------------------------------------------------------------------------- // CDialer::PrepareForFocusGainL @@ -389,9 +619,7 @@ // Clear editor flags and report // edwin state changed. iVirtualKeyBoardOpen = EFalse; - iNumberEntry->ClearEditorFlags(); - EdwinState()->ReportAknEdStateEventL( - MAknEdStateObserver::EAknEdwinStateEventStateUpdate ); + UpdateNumberEntryConfiguration(); } } @@ -433,9 +661,9 @@ path.Append( KDC_RESOURCE_FILES_DIR ); path.Append( KDialerResourceFile ); - RFs &fsSession= iEikEnv.FsSession(); + RFs& fsSession= ControlEnv()->FsSession(); BaflUtils::NearestLanguageFile( fsSession, path ); - iResourceOffset = iEikEnv.AddResourceFileL( path ); + iResourceOffset = ControlEnv()->AddResourceFileL( path ); } // ----------------------------------------------------------------------------- @@ -447,7 +675,7 @@ { if ( iResourceOffset > 0 ) { - iEikEnv.DeleteResourceFile( iResourceOffset ); + ControlEnv()->DeleteResourceFile( iResourceOffset ); iResourceOffset = 0; } } @@ -471,6 +699,14 @@ case 1: currentControl = iKeypadArea; break; + + case 2: + currentControl = iToolbar; + break; + case 3: + currentControl = iEasyDialer; + break; + default: { __ASSERT_DEBUG( EFalse, _L("CDialer::ComponentControl no such component defined")); @@ -487,7 +723,7 @@ // // --------------------------------------------------------------------------- // -CAknEdwinState* CDialer::EdwinState() +CAknEdwinState* CDialer::EdwinState() const { MCoeFepAwareTextEditor_Extension1* extension = static_cast @@ -497,31 +733,141 @@ } // --------------------------------------------------------------------------- -// CDialer::UpdateVkbEditorFlagsL +// CDialer::UpdateEdwinState // // --------------------------------------------------------------------------- // -void CDialer::UpdateVkbEditorFlagsL() +void CDialer::UpdateEdwinState( TEditorType aType ) { CAknEdwinState* edwinState = EdwinState(); - // Set flags, input mode, SCT, permitted modes, - // keymapping and menu for alphanumeric virtual - // keyboard. - edwinState->SetCurrentInputMode( EAknEditorTextInputMode ); - edwinState->SetSpecialCharacterTableResourceId( - R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG ); - edwinState->SetFlags( EAknEditorFlagNoT9 | - EAknEditorFlagLatinInputModesOnly | - EAknEditorFlagNoEditIndicators ); - edwinState->SetPermittedInputModes( - EAknEditorNumericInputMode | - EAknEditorTextInputMode ); - edwinState->SetNumericKeymap( EAknEditorAlphanumericNumberModeKeymap ); - edwinState->SetMenu(); + + switch ( aType ) + { + case ENumericEditor: + { + iNumberEntry->ClearEditorFlags(); + } + break; + + case EAlphanumericEditor: + case EVirtualKeyboardEditor: + // intended fall-through + { + TBool vkbOpen = edwinState->Flags() & EAknEditorFlagTouchInputModeOpened; + TInt flags = EAknEditorFlagNoT9 | + EAknEditorFlagLatinInputModesOnly | + EAknEditorFlagSelectionVisible; + edwinState->SetDefaultInputMode( EAknEditorTextInputMode ); + edwinState->SetCurrentInputMode( EAknEditorTextInputMode ); + + if ( EVirtualKeyboardEditor == aType || vkbOpen ) + { + // Indicators would be shown after closing VKB unless disabled + // here. + flags = ( flags |= EAknEditorFlagNoEditIndicators ); + } + else + { + iVirtualKeyBoardOpen = EFalse; + } + + edwinState->SetFlags( flags ); + edwinState->SetPermittedInputModes( + EAknEditorNumericInputMode | EAknEditorTextInputMode ); + edwinState->SetPermittedCases( + EAknEditorUpperCase | EAknEditorLowerCase ); + edwinState->SetDefaultCase( EAknEditorLowerCase ); + edwinState->SetCurrentCase( EAknEditorLowerCase ); + edwinState->SetSpecialCharacterTableResourceId( + R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG ); + edwinState->SetNumericKeymap( + EAknEditorAlphanumericNumberModeKeymap ); + edwinState->SetMenu(); + } + break; + + default: + DIALER_PRINT( "CDialer::ConfigureEditorSettings, DEFAULT" ) + ASSERT( EFalse ); + } + + TRAPD( result, edwinState->ReportAknEdStateEventL( + MAknEdStateObserver::EAknEdwinStateEventStateUpdate ) ); - // Report state updated - edwinState->ReportAknEdStateEventL( - MAknEdStateObserver::EAknEdwinStateEventStateUpdate ); + if ( KErrNone != result ) + { + DIALER_PRINTF( "CDialer::ConfigureEditorSettings, RESULT: %d", result ) + } + } + +// --------------------------------------------------------------------------- +// CDialer::LoadEasyDialingPlugin +// --------------------------------------------------------------------------- +// +void CDialer::LoadEasyDialingPlugin() + { + DIALER_PRINT( "CDialer::LoadEasyDialingPlugin" ) + TRAPD( error, + { + iEasyDialer = CDialingExtensionInterface::NewL(); + iEasyDialer->InitializeL( *this ); + + iDialingExtensionObserver = CDialingExtensionObserver::NewL( iEasyDialer, iNumberEntry, this ); + iEasyDialer->AddObserverL( iDialingExtensionObserver ); + } ); + + if ( error ) + { + DIALER_PRINT( "CDialer::LoadEasyDialingPlugin, load failed" ) + + delete iEasyDialer; + iEasyDialer = NULL; + + delete iDialingExtensionObserver; + iDialingExtensionObserver = NULL; + } + } + +// --------------------------------------------------------------------------- +// CDialer::EasyDialingEnabled +// --------------------------------------------------------------------------- +// +TBool CDialer::EasyDialingEnabled() const + { + TBool easyDialEnabled = ( iEasyDialer && + iEasyDialer->IsEnabled() && + iController && + iController->EasyDialingAllowed() ); + return easyDialEnabled; + } + +// --------------------------------------------------------------------------- +// CDialer::LayoutNumberEntry +// --------------------------------------------------------------------------- +// +void CDialer::LayoutNumberEntry( const TRect& aParent, TInt aVariety ) + { + // Use larger number entry if Easy dialing is not currently enabled. + if ( EasyDialingEnabled() ) + { + iNumberEntry->SetOperationMode( EModeEasyDialing ); + AknLayoutUtils::LayoutControl( + iNumberEntry, aParent, + AknLayoutScalable_Apps::dia3_numentry_pane( aVariety ).LayoutLine() ); + } + else + { + iNumberEntry->SetOperationMode( EModeDialer ); + TAknLayoutRect neLayoutRect; + neLayoutRect.LayoutRect( aParent, AknLayoutScalable_Apps::dia3_numentry_pane( aVariety ) ); + TAknLayoutRect edLayoutRect; + edLayoutRect.LayoutRect( aParent, AknLayoutScalable_Apps::dia3_listscroll_pane( aVariety ) ); + + // create rect which is union of layout rects for ED and NE + TRect neRect( edLayoutRect.Rect().iTl, neLayoutRect.Rect().iBr ); + + iNumberEntry->SetRect( neRect ); + } } // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialercenrepwrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/src/cdialercenrepwrapper.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,111 @@ +/* +* Copyright (c) 2010 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: Wrapper class for Central Repository handling. +* Using this helper class is most helpful when one class needs +* to observe state changes in several repositories. +*/ + +#include +#include "cdialercenrepwrapper.h" + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::CDialerCenRepWrapper +// +// --------------------------------------------------------------------------- +// +CDialerCenRepWrapper::CDialerCenRepWrapper( + MDialerCenRepObserver& aObserver, TUid aRepository ) : + iObserver( aObserver ), iRepositoryId( aRepository ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::~CDialerCenRepWrapper +// +// --------------------------------------------------------------------------- +// +CDialerCenRepWrapper::~CDialerCenRepWrapper() + { + if ( iCenRepNotifyHandler ) + { + iCenRepNotifyHandler->StopListening(); + delete iCenRepNotifyHandler; + } + delete iRepository; + } + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::NewLC +// +// --------------------------------------------------------------------------- +// +CDialerCenRepWrapper* CDialerCenRepWrapper::NewLC( + MDialerCenRepObserver& aObserver, TUid aRepository ) + { + CDialerCenRepWrapper* self = + new (ELeave) CDialerCenRepWrapper( aObserver, aRepository ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::NewL +// +// --------------------------------------------------------------------------- +// +CDialerCenRepWrapper* CDialerCenRepWrapper::NewL( + MDialerCenRepObserver& aObserver, TUid aRepository ) + { + CDialerCenRepWrapper* self = + CDialerCenRepWrapper::NewLC( aObserver, aRepository ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::ConstructL +// +// --------------------------------------------------------------------------- +// +void CDialerCenRepWrapper::ConstructL() + { + iRepository = CRepository::NewL( iRepositoryId ); + iCenRepNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iRepository ); + iCenRepNotifyHandler->StartListeningL(); + } + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::HandleNotifyGeneric +// +// --------------------------------------------------------------------------- +// +void CDialerCenRepWrapper::HandleNotifyGeneric( TUint32 aId ) + { + iObserver.HandleRepositoryChange( iRepositoryId, aId ); + } + +// --------------------------------------------------------------------------- +// CDialerCenRepWrapper::Get +// +// --------------------------------------------------------------------------- +// +TInt CDialerCenRepWrapper::Get( TUint32 aKey, TInt& aValue ) + { + return iRepository->Get( aKey, aValue ); + } + +// end of file + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialercontainerbase.cpp --- a/phoneuis/dialer/src/cdialercontainerbase.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/src/cdialercontainerbase.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialerkeypadbutton.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/src/cdialerkeypadbutton.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,537 @@ +/* +* Copyright (c) 2009, 2010 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: Shows number keypad and generates keypress event when +* buttons are pressed. +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include // for KDC_APP_RESOURCE_DIR +#include +#include +#include +#include + +#include "dialercommon.h" +#include "dialertrace.h" +#include "cdialerkeypadbutton.h" + +_LIT( KDialerMifFileName, "dialer.mif" ); + +// Keypad icon size relative to height of button. +static const TInt KIconSizePercent = 40; + +// Keypad icon size used when key has already two lines +// of text, and the icon needs to be squeezed into smaller space. +static const TInt KSmallIconSizePercent = 30; + +// Horizontal icon margin relative to button width. +static const TInt KIconMarginXPercent = 10; + +// Vertical icon margin relative to button height. +static const TInt KIconMarginYPercent = 5; + +static const TInt KCent = 100; + +// Copied from CAknButton +const TInt KDragEventSensitivity = 1; + +// --------------------------------------------------------------------------- +// C++ default constructor +// --------------------------------------------------------------------------- +// +CDialerKeyPadButton::CDialerKeyPadButton( const TDesC& aNumberLabel, + const TDesC& aPrimaryAlphaLabel, + const TDesC& aSecondaryAlphaLabel, + TInt aScanCode, + TInt aKeyCode, + TMifDialer aButtonIconId, + TMifDialer aButtonIconMaskId, + TInt aFlags ): + CAknButton( aFlags ), + iScanCode( aScanCode ), + iKeyCode( aKeyCode ), + iButtonIconId( aButtonIconId ), + iButtonIconMaskId( aButtonIconMaskId ), + iNumberLabel( aNumberLabel ), + iPrimaryAlphaLabel( aPrimaryAlphaLabel ), + iSecondaryAlphaLabel( aSecondaryAlphaLabel ) + { + } + +// ----------------------------------------------------------------------------- +// CDialerKeyPadButton::NewLC +// Two-phased constructor. +// Constructs dialer button. +// ----------------------------------------------------------------------------- +// + +CDialerKeyPadButton* CDialerKeyPadButton::NewLC( const TDesC& aNumberLabel, + const TDesC& aPrimaryAlphaLabel, + const TDesC& aSecondaryAlphaLabel, + TInt aScanCode, + TInt aKeyCode, + TMifDialer aButtonIconId, + TMifDialer aButtonIconMaskId, + TInt aFlags ) + { + CDialerKeyPadButton* self = new (ELeave) CDialerKeyPadButton( aNumberLabel, + aPrimaryAlphaLabel, + aSecondaryAlphaLabel, + aScanCode, + aKeyCode, + aButtonIconId, + aButtonIconMaskId, + aFlags ); + CleanupStack::PushL( self ); + self->ConstructL( aFlags ); + return self; + } + +// ----------------------------------------------------------------------------- +// CDialerKeyPadButton::ConstructL +// Symbian 2nd phase constructor for dialer button. +// ----------------------------------------------------------------------------- +// +void CDialerKeyPadButton::ConstructL( TInt aFlags ) + { + CAknButton::ConstructL( NULL, NULL, NULL, NULL, KNullDesC, KNullDesC, aFlags ); + UpdateIconL(); + + // button text color + SetTextColorIds( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG65 ); + SetIconScaleMode( EAspectRatioPreserved ); + SetMargins( TMargins8(0,0,0,0) ); + AknsUtils::RegisterControlPosition( this ); + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CDialerKeyPadButton::~CDialerKeyPadButton() + { + AknsUtils::DeregisterControlPosition( this ); + + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->RemoveFeedbackForControl( this ); + } + } + +// --------------------------------------------------------------------------- +// Draw dialer button, text and icon. +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::Draw( const TRect& aRect ) const + { + TAknLayoutRect centerLayout; + centerLayout.LayoutRect( aRect, + AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine() ); + TRect innerRect = centerLayout.Rect(); + + CWindowGc& gc = SystemGc(); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TAknsItemID frameId = KAknsIIDQsnFrButtonNormal; + + if ( iButtonPressed ) + { + frameId = KAknsIIDQsnFrButtonPressed; + } + else if ( IsDimmed() ) + { + frameId = KAknsIIDQsnFrButtonInactive; + } + + iBgContext->SetFrame( frameId ); + iBgContext->SetCenter( KAknsIIDQsnFrButtonCenterNormal ); + iBgContext->SetFrameRects( aRect, innerRect ); + + TBool bgDrawn = AknsDrawUtils::Background( skin, + iBgContext, + NULL, + gc, + aRect, + KAknsDrawParamNoClearUnderImage ); + + __ASSERT_DEBUG( bgDrawn, DialerPanic( EDialerPanicDrawingError ) ); + + DrawIconAndText( gc ); + } + +// ----------------------------------------------------------------------------- +// Respond to changes in the button size +// ----------------------------------------------------------------------------- +// +void CDialerKeyPadButton::SizeChanged() + { + CAknButton::SizeChanged(); + AknsUtils::RegisterControlPosition( this ); + + TRect buttonRect = Rect(); + TAknLayoutRect iconLayout; + const CGulIcon* icon = GetCurrentIcon(); + + if ( iOperationMode == EModeEasyDialing ) + { + // Number layout + TAknTextComponentLayout numLayout = + AknLayoutScalable_Apps::cell_dia3_key_num_pane_t1( iVariety ); + // Center the number label if key doens't contain any alphabets or icon. + if ( !icon && !iPrimaryAlphaLabel.Length() && !iSecondaryAlphaLabel.Length() ) + { + // eliminate margins, alignment takes care of correct position + numLayout.Setl( 0 ); + numLayout.Setr( 0 ); + numLayout.SetJ( 1 ); // ID for center alignment + } + iNumberLayout.LayoutText( buttonRect, numLayout ); + + // Alphabet layout is different if two rows of alphabets are given + if ( iSecondaryAlphaLabel.Length() ) + { + iPrimaryAlphaLayout.LayoutText( buttonRect, + AknLayoutScalable_Apps::cell_dia3_key_num_pane_t3( iVariety ) ); + iSecondaryAlphaLayout.LayoutText( buttonRect, + AknLayoutScalable_Apps::cell_dia3_key_num_pane_t4( iVariety ) ); + } + else + { + iPrimaryAlphaLayout.LayoutText( buttonRect, + AknLayoutScalable_Apps::cell_dia3_key_num_pane_t2( iVariety ) ); + } + } + else if ( iOperationMode == EModeDialer ) + { + // Number layout + // Center number labels as only numbers are shown + TAknTextComponentLayout numLayout = + AknLayoutScalable_Apps::cell_dia3_key_num_pane_t1( iVariety ); + // eliminate margins, alignment takes care of correct position + numLayout.Setl( 0 ); + numLayout.Setr( 0 ); + numLayout.SetJ( 1 ); // ID for center alignment + iNumberLayout.LayoutText( buttonRect, numLayout ); + } + else // video mode layout + { + // Number layout + iNumberLayout.LayoutText( buttonRect, + AknLayoutScalable_Apps::cell_video_dialer_keypad_pane_t1() ); + } + + SetIconLayout( buttonRect ); + } + +// --------------------------------------------------------------------------- +// Pointer event handling. Implemented here just to detect when touch is +// dragged outside pressed button as no appropriate control event is sent +// by CAknButton when this happens. +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + // Do the check before forwarding events to base class as it will update + // iButtonPressed member variable used here. + // Own drag event counter has to be used. + // Logic here to determine whether pointer is dragged outside button is + // the same as used in CAknButton. + + if ( State() && IsVisible() ) + { + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + iDragEventCounter = 0; + } + else if ( aPointerEvent.iType == TPointerEvent::EDrag ) + { + iDragEventCounter++; + if ( iDragEventCounter >= KDragEventSensitivity ) + { + iDragEventCounter = 0; + + TBool buttonEvent( Rect().Contains( aPointerEvent.iPosition ) ); + + // Pointer is dragged outside the pressed button area + if ( !buttonEvent && iButtonPressed && Observer() ) + { + Observer()->HandleControlEventL( this, + static_cast( + CDialerKeyPadButton::EEventDraggingOutsideButton ) ); + } + } + } + } + + CAknButton::HandlePointerEventL( aPointerEvent ); + } + +// ----------------------------------------------------------------------------- +// Gets the correct text color. +// ----------------------------------------------------------------------------- +// +void CDialerKeyPadButton::GetTextColors( TRgb& aPenColor, TRgb& aBrushColor ) const + { + aBrushColor = iEikonEnv->ControlColor( EColorControlBackground, *this ); + + if ( iButtonPressed ) + { + aPenColor = iEikonEnv->ControlColor( EColorButtonTextPressed, *this ); + } + else + { + aPenColor = iEikonEnv->ControlColor( EColorButtonText, *this ); + } + } + +// -------------------------------------------------------------------------- +// Draw text and icon according to the layout. +// -------------------------------------------------------------------------- +// +void CDialerKeyPadButton::DrawIconAndText( CWindowGc& aGc ) const + { + TRect parentRect( Rect() ); + TAknLayoutText buttonText; + TAknLayoutRect layoutRect; + + TRgb penColor; + TRgb brushColor; + GetTextColors( penColor, brushColor ); + + // Don't ues logical-to-visual conversion, strings in our keypad resources are already + // in visual order. + TBool logToVisConv = EFalse; + + iNumberLayout.DrawText( aGc, iNumberLabel, logToVisConv, penColor ); + + // Draw also alphabet label(s) in Easy Dialing mode + if ( iOperationMode == EModeEasyDialing ) + { + if ( iPrimaryAlphaLabel.Length() ) + { + iPrimaryAlphaLayout.DrawText( aGc, iPrimaryAlphaLabel, logToVisConv, penColor ); + } + if ( iSecondaryAlphaLabel.Length() ) + { + iSecondaryAlphaLayout.DrawText( aGc, iSecondaryAlphaLabel, logToVisConv, penColor ); + } + } + + const CGulIcon* icon = GetCurrentIcon(); + if ( icon ) + { + CFbsBitmap* buttonBmp = icon->Bitmap(); + CFbsBitmap* buttonMask = icon->Mask(); + + if ( buttonBmp && buttonMask ) + { + aGc.BitBltMasked( iIconRect.iTl, buttonBmp, + iIconRect.Size(), buttonMask, ETrue ); + } + } + } + +// -------------------------------------------------------------------------- +// Set layout data for text. +// -------------------------------------------------------------------------- +void CDialerKeyPadButton::SetVariety( TInt aVariety ) + { + iVariety = aVariety; + } + +// -------------------------------------------------------------------------- +// Set layout data for text. +// -------------------------------------------------------------------------- +void CDialerKeyPadButton::SetOperationMode( TDialerOperationMode aMode ) + { + iOperationMode = aMode; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::SetNumLabel( const TDesC& aLabel ) + { + iNumberLabel.Set( aLabel ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::SetPrimaryAlphaLabel( const TDesC& aLabel ) + { + iPrimaryAlphaLabel.Set( aLabel ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::SetSecondaryAlphaLabel( const TDesC& aLabel ) + { + iSecondaryAlphaLabel.Set( aLabel ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CDialerKeyPadButton::ScanCode() const + { + return iScanCode; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CDialerKeyPadButton::KeyCode() const + { + return iKeyCode; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::MapDialerIconToSkinIcon( + TInt aDialerIcon, TAknsItemID& aItemId ) const + { + switch ( aDialerIcon ) + { + case EMbmDialerQgn_indi_dialer_voicemail: + aItemId = KAknsIIDQgnIndiDialerVoicemail; + break; + default: + break; + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::SetIconLayout( const TRect& aRect ) + { + // Calculate icon size and placement. + TInt iconSize = aRect.Height() * KIconSizePercent / KCent; + TInt xMargin = aRect.Width() * KIconMarginXPercent / KCent; + TInt yMargin = aRect.Height() * KIconMarginYPercent / KCent; + + // Adapt icon size and vertical margin. If the button has + // already two lines of text, use smaller icon size + if ( iOperationMode == EModeEasyDialing && iSecondaryAlphaLabel.Length() ) + { + iconSize = aRect.Height() * KSmallIconSizePercent / KCent; + yMargin = 0; + } + + if ( AknLayoutUtils::LayoutMirrored() ) + { + iIconRect.SetRect( aRect.iTl.iX + xMargin, + aRect.iTl.iY + yMargin, + aRect.iTl.iX + xMargin + iconSize, + aRect.iTl.iY + iconSize + yMargin ); + } + else + { + iIconRect.SetRect( aRect.iBr.iX - iconSize - xMargin, + aRect.iTl.iY + yMargin, + aRect.iBr.iX - xMargin, + aRect.iTl.iY + iconSize + yMargin ); + } + SetIconSize( iIconRect.Size() ); + } + +// --------------------------------------------------------------------------- +// Update icon when skin is changed +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::UpdateIconL() + { + if ( KDialerNoIcon != iButtonIconId ) + { + TFileName mifPath( KDriveZ ); + mifPath.Append( KDC_APP_BITMAP_DIR ); + mifPath.Append( KDialerMifFileName ); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + CFbsBitmap* bitmap (NULL); + CFbsBitmap* mask (NULL); + + // Get icon id. + TAknsItemID skinItemId( KAknsIIDNone ); + MapDialerIconToSkinIcon( iButtonIconId, skinItemId ); + + AknsUtils::CreateColorIconLC( + skin, + skinItemId, + KAknsIIDQsnIconColors, + EAknsCIQsnIconColorsCG30, + bitmap, + mask, + mifPath, + iButtonIconId, + iButtonIconMaskId, + KRgbBlack + ); + + CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); + CleanupStack::Pop( 2 ); + + State()->SetIcon( icon ); // icon ownership transfered + } + } + +// --------------------------------------------------------------------------- +// +// Enable or disable audio but keep vibra feedback +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::EnableAudioFeedback( const TBool aEnable ) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if ( feedback ) + { + feedback->EnableFeedbackForControl( this, ETrue, aEnable ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadButton::HandleResourceChange( TInt aType ) + { + CAknButton::HandleResourceChange( aType ); + + if ( KAknsMessageSkinChange == aType ) + { + TRAP_IGNORE( UpdateIconL() ); + } + } + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialerkeypadcontainer.cpp --- a/phoneuis/dialer/src/cdialerkeypadcontainer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/src/cdialerkeypadcontainer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -21,322 +21,71 @@ #include #include #include -#include #include #include #include #include #include #include -#include +#include #include #include #include // for KDC_APP_RESOURCE_DIR #include +#include +#include #include "cdialerkeypadcontainer.h" #include "dialercommon.h" #include "dialertrace.h" #include "cdialerkeypadbutton.h" -_LIT( KDialerMifFileName, "dialer.mif" ); // Number of buttons in this container const TInt KNumberOfButtons = 12; -// Keypad button images -const TMifDialer KKeyPadButtons[] = +struct TDialerButton + { + TMifDialer iBitmap; + TMifDialer iBitmapMask; + TInt iScanCode; + TInt iKeyCode; + }; + +const TDialerButton KKeyPadButtons[ KNumberOfButtons ] = + { - EMbmDialerQgn_indi_dialer_one, - EMbmDialerQgn_indi_dialer_two, - EMbmDialerQgn_indi_dialer_three, - EMbmDialerQgn_indi_dialer_four, - EMbmDialerQgn_indi_dialer_five, - EMbmDialerQgn_indi_dialer_six, - EMbmDialerQgn_indi_dialer_seven, - EMbmDialerQgn_indi_dialer_eight, - EMbmDialerQgn_indi_dialer_nine, - EMbmDialerQgn_indi_dialer_prefix, - EMbmDialerQgn_indi_dialer_zero, - EMbmDialerQgn_indi_dialer_hash - }; - -// Keypad button image masks -const TMifDialer KKeyPadButtonsMasks[] = - { - EMbmDialerQgn_indi_dialer_one_mask, - EMbmDialerQgn_indi_dialer_two_mask, - EMbmDialerQgn_indi_dialer_three_mask, - EMbmDialerQgn_indi_dialer_four_mask, - EMbmDialerQgn_indi_dialer_five_mask, - EMbmDialerQgn_indi_dialer_six_mask, - EMbmDialerQgn_indi_dialer_seven_mask, - EMbmDialerQgn_indi_dialer_eight_mask, - EMbmDialerQgn_indi_dialer_nine_mask, - EMbmDialerQgn_indi_dialer_prefix_mask, - EMbmDialerQgn_indi_dialer_zero_mask, - EMbmDialerQgn_indi_dialer_hash_mask + { EMbmDialerQgn_indi_dialer_voicemail, + EMbmDialerQgn_indi_dialer_voicemail_mask, + '1', + '1' + }, + { KDialerNoIcon, KDialerNoIcon, + '2', '2' }, + { KDialerNoIcon, KDialerNoIcon, + '3', '3' }, + { KDialerNoIcon, KDialerNoIcon, + '4', '4' }, + { KDialerNoIcon, KDialerNoIcon, + '5', '5' }, + { KDialerNoIcon, KDialerNoIcon, + '6', '6' }, + { KDialerNoIcon, KDialerNoIcon, + '7', '7' }, + { KDialerNoIcon, KDialerNoIcon, + '8', '8' }, + { KDialerNoIcon, KDialerNoIcon, + '9', '9' }, + { KDialerNoIcon, KDialerNoIcon, + EStdKeyNkpAsterisk, '*' }, + { EMbmDialerQgn_indi_dialer_internet, + EMbmDialerQgn_indi_dialer_internet_mask, + '0', '0' }, + { KDialerNoIcon, KDialerNoIcon, + EStdKeyHash, '#' } }; -// Match keypresses to keyevents send to the phone -// -const TInt TDialerButtonToKeypadMap[12][2] = - { - { 49, // ScanCode - 49 // KeyCode - }, - { 50, - 50 - }, - { 51, - 51 - }, - { 52, - 52 - }, - { 53, - 53 - }, - { 54, - 54 - }, - { 55, - 55 - }, - { 56, - 56 - }, - { 57, - 57 - }, - { EStdKeyNkpAsterisk, - 42 - }, - { '0', - '0' - }, - { EStdKeyHash, - 35 - } - }; -// Class declaration for CDialerKeyPadButton separated to cdialerkeypadbutton.h. - -// --------------------------------------------------------------------------- -// C++ default constructor -// --------------------------------------------------------------------------- -// -CDialerKeyPadButton::CDialerKeyPadButton() - { - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CDialerKeyPadButton::~CDialerKeyPadButton() - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->RemoveFeedbackForControl( iButton ); - } - delete iButton; - } - -// --------------------------------------------------------------------------- -// Creates number keypad button -// --------------------------------------------------------------------------- -// -void CDialerKeyPadButton::CreateButtonL( const TInt aScanCode, - const TInt aKeyCode, - const TMifDialer aButtonIcon, - const TMifDialer aButtonIconMask ) - { - iScanCode = aScanCode; - iKeyCode = aKeyCode; - iButtonIcon = aButtonIcon; - iButtonIconMask = aButtonIconMask; - - TFileName mifPath( KDriveZ ); - mifPath.Append( KDC_APP_BITMAP_DIR ); - mifPath.Append( KDialerMifFileName ); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - CFbsBitmap* bitmap (NULL); - CFbsBitmap* mask (NULL); - - // Get icon ids. - TAknsItemID skinItemId( KAknsIIDNone ); - - // Create button image. - MapDialerIconToSkinIcon( aButtonIcon ,skinItemId ); - AknsUtils::CreateColorIconLC( - skin, - skinItemId, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG30, - bitmap, - mask, - mifPath, - aButtonIcon, - aButtonIconMask, - KRgbBlack - ); - - CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); - CleanupStack::Pop( 2 ); - CleanupStack::PushL( icon ); - iButton = CAknButton::NewL( - icon , // ownership taken - NULL, NULL, NULL, _L(""), _L(""), 0, 0 ); - iButton->SetButtonFlags( KAknButtonReportOnLongPress| - KAknButtonReportOnKeyDown | - KAknButtonRequestExitOnButtonUpEvent ); - iButton->SetIconScaleMode( EAspectRatioPreserved ); - iButton->SetMargins( TMargins8(0,0,0,0) ); - CleanupStack::Pop( icon ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CDialerKeyPadButton::ScanCode() const - { - return iScanCode; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CDialerKeyPadButton::KeyCode() const - { - return iKeyCode; - } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CDialerKeyPadButton::MapDialerIconToSkinIcon( const TInt aDialerIcon, - TAknsItemID& aItemId ) const - { - switch ( aDialerIcon ) - { - case EMbmDialerQgn_indi_dialer_one: - aItemId = KAknsIIDQgnIndiDialerOne; - break; - case EMbmDialerQgn_indi_dialer_two: - aItemId = KAknsIIDQgnIndiDialerTwo; - break; - case EMbmDialerQgn_indi_dialer_three: - aItemId = KAknsIIDQgnIndiDialerThree; - break; - case EMbmDialerQgn_indi_dialer_four: - aItemId = KAknsIIDQgnIndiDialerFour; - break; - case EMbmDialerQgn_indi_dialer_five: - aItemId = KAknsIIDQgnIndiDialerFive; - break; - case EMbmDialerQgn_indi_dialer_six: - aItemId = KAknsIIDQgnIndiDialerSix; - break; - case EMbmDialerQgn_indi_dialer_seven: - aItemId = KAknsIIDQgnIndiDialerSeven; - break; - case EMbmDialerQgn_indi_dialer_eight: - aItemId = KAknsIIDQgnIndiDialerEight; - break; - case EMbmDialerQgn_indi_dialer_nine: - aItemId = KAknsIIDQgnIndiDialerNine; - break; - case EMbmDialerQgn_indi_dialer_zero: - aItemId = KAknsIIDQgnIndiDialerZero; - break; - case EMbmDialerQgn_indi_dialer_prefix: - aItemId = KAknsIIDQgnIndiDialerPrefix; - break; - case EMbmDialerQgn_indi_dialer_hash: - aItemId = KAknsIIDQgnIndiDialerHash; - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CDialerKeyPadButton::SetIconSize( TSize& aSize ) - { - iButton->SetIconSize( aSize ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CDialerKeyPadButton::UpdateIconL() - { - TFileName mifPath( KDriveZ ); - mifPath.Append( KDC_APP_BITMAP_DIR ); - mifPath.Append( KDialerMifFileName ); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - CFbsBitmap* bitmap (NULL); - CFbsBitmap* mask (NULL); - - // Get icon id. - TAknsItemID skinItemId( KAknsIIDNone ); - MapDialerIconToSkinIcon( iButtonIcon, skinItemId ); - - AknsUtils::CreateColorIconLC( - skin, - skinItemId, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG30, - bitmap, - mask, - mifPath, - iButtonIcon, - iButtonIconMask, - KRgbBlack - ); - - CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); - CleanupStack::Pop( 2 ); - - iButton->State()->SetIcon( icon ); // icon ownership transfered - - } - -// --------------------------------------------------------------------------- -// -// Enable or disable audio but keep vibra feedback -// --------------------------------------------------------------------------- -// -void CDialerKeyPadButton::EnableAudioFeedback( const TBool aEnable ) - { - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if ( feedback ) - { - feedback->EnableFeedbackForControl( iButton, ETrue, aEnable ); - } - } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CDialerKeyPadButton::HandleResourceChange( TInt aType ) - { - if ( aType == KAknsMessageSkinChange ) - { - TRAP_IGNORE( UpdateIconL() ); - iButton->HandleResourceChange( aType ); - } - } // ========================= MEMBER FUNCTIONS ================================ @@ -366,9 +115,9 @@ { DIALER_PRINT("KeyPadContainer::ConstructL<"); BaseConstructL(); + iKeyLabelManager = CDialerKeyPadLabelManager::NewL( *iCoeEnv, *this ); CreateButtonsL(); - CCoeEnv* env = CCoeEnv::Static(); - env->AddForegroundObserverL( *this ); + iCoeEnv->AddForegroundObserverL( *this ); DIALER_PRINT("KeyPadContainer::ConstructL>"); } @@ -378,23 +127,16 @@ TDialerOperationMode aOperatingMode ) : CDialerContainerBase ( const_cast(aContainer) ), - iOperatingMode( aOperatingMode ), - iButtonCount( KNumberOfButtons ) + iOperatingMode( aOperatingMode ) { } // Destructor CDialerKeyPadContainer::~CDialerKeyPadContainer() { - for ( TInt i = 0; i < iButtonCount; i++ ) - { - AknsUtils::DeregisterControlPosition( - ((CDialerKeyPadButton*)iButtons[i])->Control()); - delete iButtons[i]; - } - iButtons.Close(); - CCoeEnv* env = CCoeEnv::Static(); - env->RemoveForegroundObserver( *this ); + iButtons.ResetAndDestroy(); + iCoeEnv->RemoveForegroundObserver( *this ); + delete iKeyLabelManager; } // --------------------------------------------------------------------------- @@ -417,7 +159,7 @@ __ASSERT_DEBUG( aIndex < KNumberOfButtons, _L("CDialerKeyPadContainer::ComponentControl, index out of range.")); - return ((CDialerKeyPadButton*)iButtons[aIndex])->Control(); + return iButtons[aIndex]; } // --------------------------------------------------------------------------- @@ -434,7 +176,8 @@ if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { - iPointerEvent = aPointerEvent; + iPointerEvent = aPointerEvent; + iKeyUpSimulatedDueToDragging = EFalse; } DIALER_PRINT("KeyPadContainer::HandlePointerEventL>"); } @@ -465,9 +208,12 @@ // void CDialerKeyPadContainer::SetLayout() { - if ( iOperatingMode == EModeDialer ) + if ( iOperatingMode == EModeDialer || + iOperatingMode == EModeEasyDialing ) { - SetPhoneLayout(); + // Same renewed layout is used regardless of the status + // of Easy Dialing + SetEasyDialingLayout(); } else { @@ -497,20 +243,9 @@ TRect parentRect( Rect() ); - // Icon size - all in same size - TAknLayoutRect functionGraphics; - - functionGraphics.LayoutRect( - parentRect, - TAknWindowComponentLayout::Compose( - AknLayoutScalable_Apps::cell_dialer2_keypad_pane( iVariety ), - AknLayoutScalable_Apps::cell_dialer2_keypad_pane_g1( - iVariety ) ) ); - TSize iconSize = functionGraphics.Rect().Size(); - // Layout buttons TAknLayoutScalableParameterLimits limits = - AknLayoutScalable_Apps::cell_dialer2_keypad_pane_ParamLimits( iVariety ); + AknLayoutScalable_Apps::cell_dialer2_keypad_pane_ParamLimits( iVariety ); TInt i = 0; for ( TInt row = limits.FirstRow(); row <= limits.LastRow(); row++ ) @@ -518,22 +253,63 @@ for ( TInt col = limits.FirstColumn(); col <= limits.LastColumn(); col++ ) { - // Layout button - AknLayoutUtils::LayoutControl( - ((CDialerKeyPadButton*)iButtons[i])->Control(), parentRect, - TAknWindowComponentLayout::Compose( - AknLayoutScalable_Apps::cell_dialer2_keypad_pane( iVariety, - col, row ), - AknLayoutScalable_Apps::bg_button_pane_pane_cp04( - iVariety ) ) ); - - // Set icon size - ((CDialerKeyPadButton*)iButtons[i++])->SetIconSize( iconSize ); + iButtons[i]->SetVariety( iVariety ); + iButtons[i]->SetOperationMode( iOperatingMode ); + + AknLayoutUtils::LayoutControl( iButtons[i], parentRect, TAknWindowComponentLayout::Compose( + AknLayoutScalable_Apps::cell_dialer2_keypad_pane( iVariety, col, row ), + AknLayoutScalable_Apps::bg_button_pane_pane_cp04( iVariety ) ) ); + i++; } } } // --------------------------------------------------------------------------- +// CDialerKeyPadContainer::SetEasyDialingLayout +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadContainer::SetEasyDialingLayout() + { + TRect parentRect( Rect() ); + + // Layout buttons + TAknLayoutScalableParameterLimits limits = + AknLayoutScalable_Apps::cell_dialer2_keypad_pane_ParamLimits( iVariety ); + + // Rectangle of the first button + TAknLayoutRect buttonLayoutRect; + buttonLayoutRect.LayoutRect( parentRect, + AknLayoutScalable_Apps::cell_dia3_key_num_pane( iVariety ) ); + TRect firstButtonRect = buttonLayoutRect.Rect(); + // Move the first button rect to top-left-corner of the keypad area, + // the default place is wrong in mirrored layout. + firstButtonRect.SetRect( parentRect.iTl, firstButtonRect.Size() ); + + TInt colCount = limits.LastColumn() - limits.FirstColumn() + 1; + + for ( TInt row = limits.FirstRow() ; row <= limits.LastRow() ; row++ ) + { + for ( TInt col = limits.FirstColumn() ; col <= limits.LastColumn() ; col++ ) + { + // Calculate corresponding index in iButtons array + TInt idx = col + row * colCount; + + // Set mode and variety so that correct button internal layout will be used + iButtons[idx]->SetVariety( iVariety ); + iButtons[idx]->SetOperationMode( iOperatingMode ); + + // Layout button + TRect buttonRect = firstButtonRect; + buttonRect.Move( col * buttonRect.Width(), row * buttonRect.Height() ); + buttonRect.Shrink( 1, 1 ); // to create small gap between buttons + iButtons[idx]->SetRect( buttonRect ); + } + } + + } + +// --------------------------------------------------------------------------- // CDialerKeyPadContainer::SetVideoLayout // // --------------------------------------------------------------------------- @@ -542,21 +318,8 @@ { TRect parentRect( Rect() ); - // Icon size - all in same size - TAknLayoutRect functionGraphics; - - functionGraphics.LayoutRect( - parentRect, - TAknWindowComponentLayout::Compose( - AknLayoutScalable_Apps::cell_video_dialer_keypad_pane( iVariety, - 0, 0 ), - AknLayoutScalable_Apps::cell_video_dialer_keypad_pane_g1( - iVariety ) ) ); - TSize iconSize = functionGraphics.Rect().Size(); - TAknLayoutScalableParameterLimits limits = - AknLayoutScalable_Apps::cell_video_dialer_keypad_pane_ParamLimits( - iVariety ) ; + AknLayoutScalable_Apps::cell_video_dialer_keypad_pane_ParamLimits( iVariety ) ; TInt i = 0; for ( TInt row = limits.FirstRow(); row <= limits.LastRow(); row++ ) @@ -565,17 +328,17 @@ col <= limits.LastColumn(); col++ ) { + iButtons[i]->SetVariety( iVariety ); + iButtons[i]->SetOperationMode( iOperatingMode ); + // Layout button AknLayoutUtils::LayoutControl( - ((CDialerKeyPadButton*)iButtons[i])->Control(), parentRect, + iButtons[i], parentRect, TAknWindowComponentLayout::Compose( AknLayoutScalable_Apps::cell_video_dialer_keypad_pane( - iVariety, col, row ), - AknLayoutScalable_Apps::bg_button_pane_cp08( - iVariety ) ) ); - - // Set icon size - iButtons[i++]->SetIconSize( iconSize ); + iVariety, col, row ), + AknLayoutScalable_Apps::bg_button_pane_cp08( iVariety ) ) ); + i++; } } } @@ -590,24 +353,36 @@ { DIALER_PRINT("KeyPadContainer::CreateButtonsL<"); - for ( TInt i=0; i < KNumberOfButtons; i++ ) + TInt flags ( KAknButtonReportOnKeyDown | + KAknButtonRequestExitOnButtonUpEvent ); + + for ( TInt i = 0; i < KNumberOfButtons; i++ ) { - CDialerKeyPadButton* button = new (ELeave) CDialerKeyPadButton(); - CleanupStack::PushL( button ); - button->CreateButtonL( TDialerButtonToKeypadMap[i][0], - TDialerButtonToKeypadMap[i][1], - KKeyPadButtons[i], - KKeyPadButtonsMasks[i] ); + const TPtrC numLabel = iKeyLabelManager->ButtonNumLabel( i ); + + const TPtrC alphaLabel = iKeyLabelManager->ButtonFirstAlphaLabel( i ); + + const TPtrC secondAlphaLabel = iKeyLabelManager->ButtonSecondAlphaLabel( i ); + + CDialerKeyPadButton* button = CDialerKeyPadButton::NewLC( + numLabel, + alphaLabel, + secondAlphaLabel, + KKeyPadButtons[i].iScanCode, + KKeyPadButtons[i].iKeyCode, + KKeyPadButtons[i].iBitmap, + KKeyPadButtons[i].iBitmapMask, + flags ); + iButtons.AppendL( button ); CleanupStack::Pop( button ); - iButtons.Append( button ); - button->Control()->SetMopParent( this ); - button->Control()->SetParent( this ); - button->Control()->SetContainerWindowL( *this ); - button->Control()->SetObserver( this ); - button->Control()->ActivateL(); - AknsUtils::RegisterControlPosition( button->Control() ); + + button->SetMopParent( this ); + button->SetParent( this ); + button->SetContainerWindowL( *this ); + button->SetObserver( this ); + button->ActivateL(); } - DIALER_PRINT("KeyPadContainer::CreateButtonsL>"); + DIALER_PRINT("KeyPadContainer::CreateButtonsL>"); } // --------------------------------------------------------------------------- @@ -625,9 +400,10 @@ DIALER_PRINTF("KeyPadContainer::HandleControlEventL.EventType=", (TInt)aEventType); - if ( aEventType == EEventStateChanged || - aEventType == EEventRequestCancel || - aEventType == EEventRequestExit) + if ( aEventType == EEventStateChanged || + aEventType == EEventRequestCancel || + aEventType == EEventRequestExit || + aEventType == CDialerKeyPadButton::EEventDraggingOutsideButton ) { // Find tapped control @@ -635,20 +411,25 @@ CDialerKeyPadButton* tappedButton = NULL; for ( TInt i=0; i < iButtons.Count(); i++ ) { - if ( iButtons[i]->Control() == aControl ) + if ( iButtons[i] == aControl ) { tappedButton = iButtons[i]; break; } } - + + if ( !tappedButton ) + { + __ASSERT_DEBUG( EFalse, DialerPanic( EDialerPanicEventFromUnknownControl ) ); + return; + } + // Send key event to phone. TKeyEvent keyEvent; keyEvent.iScanCode = tappedButton->ScanCode(); - keyEvent.iCode = tappedButton->KeyCode(); - keyEvent.iModifiers = 0; - keyEvent.iRepeats = 0; - + keyEvent.iModifiers = ( EModifierNumLock | EModifierKeypad ); // Mark that this event is dialer simulated + keyEvent.iRepeats = 0; + switch ( aEventType ) { case EEventRequestExit: @@ -656,18 +437,23 @@ { DIALER_PRINT("HandleControlEventL.EEventRequestExit"); iButtonPressedDown = EFalse; - keyEvent.iCode = 0; - ControlEnv()->SimulateKeyEventL( keyEvent, EEventKeyUp ); + if ( !iKeyUpSimulatedDueToDragging ) + { + keyEvent.iCode = 0; + ControlEnv()->SimulateKeyEventL( keyEvent, EEventKeyUp ); + } + iKeyUpSimulatedDueToDragging = EFalse; } break; + case EEventStateChanged: { DIALER_PRINT("HandleControlEventL.EEventStateChanged"); iButtonPressedDown = ETrue; - + keyEvent.iCode = tappedButton->KeyCode(); iParentControl.PrepareForFocusGainL(); - ControlEnv()->SimulateKeyEventL( keyEvent, EEventKeyDown ); + ControlEnv()->SimulateKeyEventL( keyEvent, EEventKeyDown ); if( iButtonPressedDown ) { @@ -676,13 +462,29 @@ } } break; + + case CDialerKeyPadButton::EEventDraggingOutsideButton: + { + DIALER_PRINT("HandleControlEventL.EEventDraggingOutsideButton"); + // User hasn't released touch yet but in order to cancel + // long press action handled and initiated by parent control, + // we must send key up event now. + if ( !iKeyUpSimulatedDueToDragging ) + { + keyEvent.iCode = 0; + ControlEnv()->SimulateKeyEventL( keyEvent, EEventKeyUp ); + iKeyUpSimulatedDueToDragging = ETrue; + } + } + break; + default: break; } } - DIALER_PRINT("KeyPadContainer::HandleControlEventL>"); + DIALER_PRINT("KeyPadContainer::HandleControlEventL>"); } - + // --------------------------------------------------------------------------- // CDialerKeyPadContainer::HandleResourceChange // @@ -696,8 +498,7 @@ { for ( TInt i=0; i < iButtons.Count(); i++ ) { - (( CDialerKeyPadButton* )iButtons[i])->HandleResourceChange( - aType ); + iButtons[i]->HandleResourceChange( aType ); } } } @@ -705,7 +506,7 @@ // --------------------------------------------------------------------------- // CDialerKeyPadContainer::MakeVisible // -// Called when dialer control come visible or unvisible +// Called when dialer control becomes visible or invisible // // --------------------------------------------------------------------------- // @@ -714,15 +515,30 @@ // This is needed when dialer control disappeares during keypress. // Last pressed pointer event must be forwarted to framework // as pointer up event. Thus button is set to unpressed state etc. + // This code calls HandlePointerEventL of the parent class instead of this. + // If we call this classes HandlePointerEventL, this classes + // grab status is not cleared, and later coming EButton1Up events may end + // up erroneously to this class, although intended elsewhere. // - if ( !aVisible && iButtonPressedDown ) + if ( !aVisible && iButtonPressedDown && Parent() ) { iPointerEvent.iType = TPointerEvent::EButton1Up; - TRAP_IGNORE( HandlePointerEventL( iPointerEvent ) ); + TRAP_IGNORE( Parent()->HandlePointerEventL( iPointerEvent ) ); } CCoeControl::MakeVisible( aVisible ); } +// --------------------------------------------------------------------------- +// CDialerKeyPadContainer::SetOperationMode +// +// Set new operation mode for the keypad +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadContainer::SetOperationMode( TDialerOperationMode aOperatingMode ) + { + iOperatingMode = aOperatingMode; + } // --------------------------------------------------------------------------- // CDialerKeyPadContainer::HandleGainingForeground @@ -746,15 +562,43 @@ // This is needed when dialer control disappeares during keypress. // Last pressed pointer event must be forwarted to framework // as pointer up event. Thus button is set to unpressed state etc. + // This code calls HandlePointerEventL of the parent class instead of this. + // If we call this classes HandlePointerEventL, this classes + // grab status is not cleared, and later coming EButton1Up events may end + // up erroneously to this class, although intended elsewhere. // - if ( iButtonPressedDown ) + if ( iButtonPressedDown && Parent() ) { iPointerEvent.iType = TPointerEvent::EButton1Up; - TRAP_IGNORE( HandlePointerEventL( iPointerEvent ) ); + TRAP_IGNORE( Parent()->HandlePointerEventL( iPointerEvent ) ); } } // --------------------------------------------------------------------------- +// CDialerKeyPadContainer::KeyLabelsChanged +// +// Reset button labels and update the layout +// --------------------------------------------------------------------------- +// +void CDialerKeyPadContainer::KeyLabelsChanged() + { + for ( TInt i = 0 ; i < iButtons.Count() ; i++ ) + { + const TPtrC numLabel = iKeyLabelManager->ButtonNumLabel( i ); + const TPtrC alphaLabel = iKeyLabelManager->ButtonFirstAlphaLabel( i ); + const TPtrC secondAlphaLabel = iKeyLabelManager->ButtonSecondAlphaLabel( i ); + + iButtons[i]->SetNumLabel( numLabel ); + iButtons[i]->SetPrimaryAlphaLabel( alphaLabel ); + iButtons[i]->SetSecondaryAlphaLabel( secondAlphaLabel ); + + // reset layout + iButtons[i]->SetSize( iButtons[i]->Size() ); + } + DrawDeferred(); + } + +// --------------------------------------------------------------------------- // CDialerKeyPadContainer::EnableTactileFeedback // // @@ -764,7 +608,7 @@ { for ( TInt i=0; i < iButtons.Count(); i++ ) { - (( CDialerKeyPadButton* )iButtons[i])->EnableAudioFeedback( aEnable ); + iButtons[i]->EnableAudioFeedback( aEnable ); } } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialerkeypadlabelmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/src/cdialerkeypadlabelmanager.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,659 @@ +/* +* Copyright (c) 2009, 2010 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: Helper class to handle virtual keypad text labels +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cdialerkeypadlabelmanager.h" +#include "dialercommon.h" + +// CONSTANTS +const TInt KKeyCount( 12 ); + +_LIT( KDialerButton1NumLabel, "1" ); +_LIT( KDialerButton2NumLabel, "2" ); +_LIT( KDialerButton3NumLabel, "3" ); +_LIT( KDialerButton4NumLabel, "4" ); +_LIT( KDialerButton5NumLabel, "5" ); +_LIT( KDialerButton6NumLabel, "6" ); +_LIT( KDialerButton7NumLabel, "7" ); +_LIT( KDialerButton8NumLabel, "8" ); +_LIT( KDialerButton9NumLabel, "9" ); +_LIT( KDialerButton10NumLabel, "*+" ); +_LIT( KDialerButton11NumLabel, "0" ); +_LIT( KDialerButton12NumLabel, "#" ); + +_LIT( KDialerKeypadResourceFile, "z:\\resource\\dialerkeypad" ); +_LIT( KDialerKeypadResourceFileExt, ".rsc" ); +_LIT( KDialerKeypadVariantExtSeparator, "_" ); + +_LIT( KScriptLatin, "latin" ); +_LIT( KScriptCyrillic, "cyrillic" ); +_LIT( KScriptGreek, "greek" ); +_LIT( KScriptHebrew, "hebrew" ); +_LIT( KScriptArabic, "arabic" ); +_LIT( KScriptFarsi, "farsi" ); +_LIT( KScriptUrdu, "urdu" ); +_LIT( KScriptThai, "thai" ); +_LIT( KScriptDevanagari, "devanagari" ); +_LIT( KScriptChnPinyin, "chn_pinyin" ); +_LIT( KScriptChnZhuyin, "chn_zhuyin" ); +_LIT( KScriptChnStroke, "chn_stroke" ); +_LIT( KScriptChnCangjie, "chn_cangjie" ); + +enum TScript + { + EScriptLatin = 0, + EScriptCyrillic, + EScriptGreek, + EScriptHebrew, + EScriptArabic, + EScriptFarsi, + EScriptUrdu, + EScriptThai, + EScriptDevanagari, + EScriptChinese, // generic value for all Chinese input modes + EScriptChnPinyin, + EScriptChnZhuyin, + EScriptChnStroke, + EScriptChnCangjie + }; + +struct TLanguageScriptMapping + { + TLanguage iLang; + TScript iScript; + }; + +// Following table maps non-Latin languages to corresponding scripts. +// Rest of the languages are asumed to use Latin script. +// The data of the table has been extracted from the header +// \sf\mw\inputmethods\textinput\peninputgenericitut\inc\peninputgenericitutdata.h +const TLanguageScriptMapping KScriptMap[] = + { + {ELangRussian, EScriptCyrillic}, + {ELangBulgarian, EScriptCyrillic}, + {ELangUkrainian, EScriptCyrillic}, + + {ELangGreek, EScriptGreek}, + {ELangCyprusGreek, EScriptGreek}, + + {ELangHebrew, EScriptHebrew}, + + {ELangArabic, EScriptArabic}, + + {ELangFarsi, EScriptFarsi}, + + {ELangUrdu, EScriptUrdu}, + + {ELangThai, EScriptThai}, + + {ELangHindi, EScriptDevanagari}, + {ELangMarathi, EScriptDevanagari}, + + {ELangTaiwanChinese, EScriptChinese}, + {ELangHongKongChinese, EScriptChinese}, + {ELangPrcChinese, EScriptChinese} + }; +const TInt KScriptMapCount = sizeof( KScriptMap ) / sizeof( TLanguageScriptMapping ); + +// Values for Chinese adaptive search modes, as documented in AvkonInternalCRKeys.h +enum TChinesePrcMode + { + EChnPrcPinyin = 0, + EChnPrcStroke = 1 + }; +enum TChineseTwMode + { + EChnTwZhuyin = 0, + EChnTwStroke = 1 + }; +enum TChineseHkMode + { + EChnHkStroke = 0, + EChnHkCangjie = 1 + }; + + +// LOCAL FUNCTION DECLARATIONS +static TScript ScriptForLang( TLanguage aLang ); +static const TDesC& ScriptName( TScript aScriptCode ); +static TBool ScriptCanSubstituteLatin( TScript aScript ); + + +// MEMBER FUNCTION DEFINITIONS + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::CDialerKeyPadLabelManager +// +// --------------------------------------------------------------------------- +// +CDialerKeyPadLabelManager::CDialerKeyPadLabelManager( CCoeEnv& aCoeEnv, + MDialerKeyPadLabelManagerCallback& aObserver ) + : iCoeEnv( aCoeEnv ), iObserver( aObserver ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::~CDialerKeyPadLabelManager +// +// --------------------------------------------------------------------------- +// +CDialerKeyPadLabelManager::~CDialerKeyPadLabelManager() + { + delete iPtiEngine; + + delete iAknFepRepository; + delete iAvkonRepository; + + if ( iEnvChangeNotifier ) + { + iEnvChangeNotifier->Cancel(); + delete iEnvChangeNotifier; + } + + delete iKeypadNumLabelArray; + delete iKeypadFirstLabelArray; + delete iKeypadSecondLabelArray; + + if ( iResourceOffset ) + { + iCoeEnv.DeleteResourceFile( iResourceOffset ); + } + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::NewLC +// +// --------------------------------------------------------------------------- +// +CDialerKeyPadLabelManager* CDialerKeyPadLabelManager::NewLC( CCoeEnv& aCoeEnv, + MDialerKeyPadLabelManagerCallback& aObserver ) + { + CDialerKeyPadLabelManager* self = + new (ELeave) CDialerKeyPadLabelManager( aCoeEnv, aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::NewL +// +// --------------------------------------------------------------------------- +// +CDialerKeyPadLabelManager* CDialerKeyPadLabelManager::NewL( CCoeEnv& aCoeEnv, + MDialerKeyPadLabelManagerCallback& aObserver ) + { + CDialerKeyPadLabelManager* self = + CDialerKeyPadLabelManager::NewLC( aCoeEnv, aObserver ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::ConstructL +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadLabelManager::ConstructL() + { + iPtiEngine = CPtiEngine::NewL(); + + iAknFepRepository = CDialerCenRepWrapper::NewL( *this, KCRUidAknFep ); + iAvkonRepository = CDialerCenRepWrapper::NewL( *this, KCRUidAvkon ); + + TCallBack envChangeCallback( EnvChangeCallback, this ); + iEnvChangeNotifier = CEnvironmentChangeNotifier::NewL( + CActive::EPriorityStandard, envChangeCallback ); + iEnvChangeNotifier->Start(); + + iKeypadNumLabelArray = new ( ELeave ) CDesCArrayFlat( KKeyCount ); + iKeypadFirstLabelArray = new ( ELeave ) CDesCArrayFlat( KKeyCount ); + iKeypadSecondLabelArray = new ( ELeave ) CDesCArrayFlat( KKeyCount ); + + UpdateNumLabelsL(); + UpdateTextLabelsL(); + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::ButtonNumLabel +// +// --------------------------------------------------------------------------- +// +TPtrC CDialerKeyPadLabelManager::ButtonNumLabel( TInt aIndex ) const + { + __ASSERT_DEBUG( aIndex < iKeypadNumLabelArray->Count(), DialerPanic(EDialerPanicLabelNotFound) ); + + TPtrC label( KNullDesC ); + if ( aIndex < iKeypadNumLabelArray->Count() ) + { + label.Set( (*iKeypadNumLabelArray)[ aIndex ] ); + } + return label; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::ButtonFirstAlphaLabel +// +// --------------------------------------------------------------------------- +// +TPtrC CDialerKeyPadLabelManager::ButtonFirstAlphaLabel( TInt aIndex ) const + { + __ASSERT_DEBUG( aIndex < iKeypadFirstLabelArray->Count(), DialerPanic(EDialerPanicLabelNotFound) ); + + TPtrC label( KNullDesC ); + if ( aIndex < iKeypadFirstLabelArray->Count() ) + { + label.Set( (*iKeypadFirstLabelArray)[ aIndex ] ); + } + return label; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::ButtonSecondAlphaLabel +// +// --------------------------------------------------------------------------- +// +TPtrC CDialerKeyPadLabelManager::ButtonSecondAlphaLabel( TInt aIndex ) const + { + __ASSERT_DEBUG( aIndex < iKeypadSecondLabelArray->Count(), DialerPanic(EDialerPanicLabelNotFound) ); + + TPtrC label( KNullDesC ); + if ( aIndex < iKeypadSecondLabelArray->Count() ) + { + label.Set( (*iKeypadSecondLabelArray)[ aIndex ] ); + } + return label; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::UpdateTextLabelsL +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadLabelManager::HandleRepositoryChange( + TUid aRepository, TUint32 aId ) + { + if ( (aRepository == KCRUidAknFep && aId == KAknFepInputTxtLang) || + (aRepository == KCRUidAvkon && aId == KAknAdaptiveSearchChinesePRC) || + (aRepository == KCRUidAvkon && aId == KAknAdaptiveSearchChineseTW) || + (aRepository == KCRUidAvkon && aId == KAknAdaptiveSearchChineseHongkong) ) + { + // Check if alpabet labels need to be changed + TInt scriptToUse( EScriptLatin ); + TRAP_IGNORE( scriptToUse = LabelScriptToUseL() ); + if ( iLabelScriptInUse != scriptToUse ) + { + TRAP_IGNORE( UpdateTextLabelsL() ); + iObserver.KeyLabelsChanged(); + } + } + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::HandleEnvChange +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadLabelManager::HandleEnvChange() + { + if ( iEnvChangeNotifier->Change() & EChangesLocale ) + { + TLocale locale; + if ( locale.DigitType() != iDigitTypeInUse ) + { + TRAP_IGNORE( UpdateNumLabelsL() ); + iObserver.KeyLabelsChanged(); + } + } + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::EnvChangeCallback +// +// --------------------------------------------------------------------------- +// +TInt CDialerKeyPadLabelManager::EnvChangeCallback( TAny* aSelfPtr ) + { + CDialerKeyPadLabelManager* self = + static_cast< CDialerKeyPadLabelManager* >( aSelfPtr ); + self->HandleEnvChange(); + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::UpdateTextLabelsL +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadLabelManager::UpdateTextLabelsL() + { + iKeypadFirstLabelArray->Reset(); + iKeypadSecondLabelArray->Reset(); + + // Load the correct keypad resource file + TFileName resourceName; + GetResourceFileNameL( resourceName ); + iResourceOffset = iCoeEnv.AddResourceFileL( resourceName ); + + // Read keypad labels from the resource + TResourceReader reader; + iCoeEnv.CreateResourceReaderLC( reader, R_DIALER_KEYPAD ); + + TInt16 count = reader.ReadInt16(); + + for ( TInt i = 0 ; i < count ; ++i ) + { + TPtrC firstRow = reader.ReadTPtrC(); + iKeypadFirstLabelArray->AppendL( firstRow ); + TPtrC secondRow = reader.ReadTPtrC(); + iKeypadSecondLabelArray->AppendL( secondRow ); + } + + CleanupStack::PopAndDestroy(); // reader + + // Free resource as it's not usually needed anymore. Ensure that destructor + // won't free it again. + iCoeEnv.DeleteResourceFile( iResourceOffset ); + iResourceOffset = 0; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::UpdateNumLabelsL +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadLabelManager::UpdateNumLabelsL() + { + // Save digit type used. This is to allow us update number labels + // only when digit type is changed and not on all locale changes. + TLocale locale; + iDigitTypeInUse = locale.DigitType(); + + iKeypadNumLabelArray->Reset(); + + // Fill number labels array + iKeypadNumLabelArray->AppendL( KDialerButton1NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton2NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton3NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton4NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton5NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton6NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton7NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton8NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton9NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton10NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton11NumLabel ); + iKeypadNumLabelArray->AppendL( KDialerButton12NumLabel ); + + // Convert num labels to current global number mode + for ( TInt i = 0 ; i < iKeypadNumLabelArray->Count() ; ++i ) + { + // A bit of magic is needed to get a modifiable pointer + // descriptor which points to string within the array. + TPtrC roPtr = (*iKeypadNumLabelArray)[i]; + TPtr ptr( const_cast( roPtr.Ptr() ), roPtr.Length(), roPtr.Length() ); + + AknTextUtils::LanguageSpecificNumberConversion( ptr ); + } + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::GetResourceFileNameL +// +// --------------------------------------------------------------------------- +// +void CDialerKeyPadLabelManager::GetResourceFileNameL( TDes& aFileName ) + { + TFileName resName; + + iLabelScriptInUse = LabelScriptToUseL(); + // Try to get variated resource name if necessary + if ( iLabelScriptInUse != EScriptLatin ) + { + const TDesC& scriptName = ScriptName( static_cast(iLabelScriptInUse) ); + resName.Copy( KDialerKeypadResourceFile ); + resName.Append( KDialerKeypadVariantExtSeparator ); + resName.Append( scriptName ); + resName.Append( KDialerKeypadResourceFileExt ); + + BaflUtils::NearestLanguageFile( iCoeEnv.FsSession(), resName ); + if ( !BaflUtils::FileExists( iCoeEnv.FsSession(), resName ) ) + { + // resource not found, fall back to Latin + iLabelScriptInUse = EScriptLatin; + } + } + + // Get the default resource name if Latin script was selected or + // resource file for the selected script was not found. + if ( iLabelScriptInUse == EScriptLatin ) + { + resName.Copy( KDialerKeypadResourceFile ); + resName.Append( KDialerKeypadResourceFileExt ); + BaflUtils::NearestLanguageFile( iCoeEnv.FsSession(), resName ); + } + + aFileName.Copy( resName ); + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::LabelScriptToUseL +// +// --------------------------------------------------------------------------- +// +TInt CDialerKeyPadLabelManager::LabelScriptToUseL() const + { + TInt lang( ELangEnglish ); + + // Get current input language + TInt err = iAknFepRepository->Get( KAknFepInputTxtLang, lang ); + __ASSERT_DEBUG( !err, DialerPanic(err) ); + + TInt script = ScriptForLang( static_cast(lang) ); + + // Distinct logic is used to select labels when current input language + // is any version of Chinese. PCS uses different algorith for Chinese. + if ( script == EScriptChinese ) + { + script = ChineseScriptToUseL(); + } + // If current input language is written in Latin script, then we check + // if some other script of the device could also be shown on the labels. + // Most variated labels include Latin characters as well. + else if ( script == EScriptLatin ) + { + RArray availableLanguages; + CleanupClosePushL( availableLanguages ); + iPtiEngine->GetAvailableLanguagesL( availableLanguages ); + + // Scirpt of the current UI language is preferred option for + // alternative script. Ensure it's considered first. + TLanguage uiLang = User::Language(); + TInt pos = availableLanguages.Find( uiLang ); + if ( pos != KErrNotFound ) + { + availableLanguages.Remove( pos ); + availableLanguages.InsertL( uiLang, 0 ); + } + + TInt langCount = availableLanguages.Count(); + for ( TInt i = 0 ; i < langCount ; ++i ) + { + TLanguage altLang = static_cast( availableLanguages[i] ); + TScript altScript = ScriptForLang( altLang ); + if ( altScript != EScriptLatin && ScriptCanSubstituteLatin(altScript) ) + { + // Suitable alternative script found. Use its labels + // instead of showing only Latin alphabets. + script = altScript; + i = langCount; // to break out + } + } + + CleanupStack::PopAndDestroy( &availableLanguages ); + } + + return script; + } + +// --------------------------------------------------------------------------- +// CDialerKeyPadLabelManager::ChineseScriptToUseL +// +// --------------------------------------------------------------------------- +// +TInt CDialerKeyPadLabelManager::ChineseScriptToUseL() const + { + TInt script( EScriptLatin ); + + TInt lang( ELangPrcChinese ); + TInt chnSearchMode( 0 ); + + TInt err = iAknFepRepository->Get( KAknFepInputTxtLang, lang ); + __ASSERT_DEBUG( !err, DialerPanic(EDialerPanicChineseScriptError) ); + + switch ( lang ) + { + case ELangPrcChinese: + { + err = iAvkonRepository->Get( KAknAdaptiveSearchChinesePRC, chnSearchMode ); + script = ( chnSearchMode == EChnPrcPinyin ? EScriptChnPinyin : EScriptChnStroke ); + } + break; + case ELangTaiwanChinese: + { + err = iAvkonRepository->Get( KAknAdaptiveSearchChineseTW, chnSearchMode ); + script = ( chnSearchMode == EChnTwZhuyin ? EScriptChnZhuyin : EScriptChnStroke ); + } + break; + case ELangHongKongChinese: + { + err = iAvkonRepository->Get( KAknAdaptiveSearchChineseHongkong, chnSearchMode ); + script = ( chnSearchMode == EChnHkStroke ? EScriptChnStroke : EScriptChnCangjie ); + } + break; + default: + { + err = KErrUnknown; + } + break; + } + __ASSERT_DEBUG( !err, DialerPanic(EDialerPanicChineseScriptError) ); + + return script; + } + + +// LOCAL FUNCTION DEFINITIONS + +// --------------------------------------------------------------------------- +// ScriptForLang +// +// --------------------------------------------------------------------------- +// +static TScript ScriptForLang( TLanguage aLang ) + { + TScript script( EScriptLatin ); + for ( TInt i = 0 ; i < KScriptMapCount ; ++i ) + { + if ( aLang == KScriptMap[i].iLang ) + { + script = KScriptMap[i].iScript; + i = KScriptMapCount; // to break out + } + } + return script; + } + +// --------------------------------------------------------------------------- +// ScriptName +// +// --------------------------------------------------------------------------- +// +static const TDesC& ScriptName( TScript aScriptCode ) + { + // Convert script ID to script name + switch ( aScriptCode ) + { + case EScriptLatin: + return KScriptLatin; + case EScriptCyrillic: + return KScriptCyrillic; + case EScriptGreek: + return KScriptGreek; + case EScriptHebrew: + return KScriptHebrew; + case EScriptArabic: + return KScriptArabic; + case EScriptFarsi: + return KScriptFarsi; + case EScriptUrdu: + return KScriptUrdu; + case EScriptThai: + return KScriptThai; + case EScriptDevanagari: + return KScriptDevanagari; + case EScriptChnPinyin: + return KScriptChnPinyin; + case EScriptChnZhuyin: + return KScriptChnZhuyin; + case EScriptChnStroke: + return KScriptChnStroke; + case EScriptChnCangjie: + return KScriptChnCangjie; + default: + __ASSERT_DEBUG( EFalse, DialerPanic(EDialerPanicUnknownScript) ); + } + return KNullDesC; + } + +// --------------------------------------------------------------------------- +// ScriptCanSubstituteLatin +// Return ETrue if labels of given script can be used instead of Latin labels +// when current input language is written with Latin script. This requires +// that the labels include also Latin characters and that labels don't contain +// any characters which would only make sense in some specific input mode. +// --------------------------------------------------------------------------- +// +static TBool ScriptCanSubstituteLatin( TScript aScript ) + { + // It would be better to figure this out from the resources but that would + // require opening and parsing several resource files. + return !( aScript == EScriptArabic || + aScript == EScriptUrdu || + aScript == EScriptFarsi || + aScript == EScriptChinese || + aScript == EScriptChnPinyin || + aScript == EScriptChnZhuyin || + aScript == EScriptChnStroke || + aScript == EScriptChnCangjie ); + } + +// end of file + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialernumberentry.cpp --- a/phoneuis/dialer/src/cdialernumberentry.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/src/cdialernumberentry.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -31,9 +31,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include @@ -44,10 +44,13 @@ #include "dialertrace.h" #include "dialer.hrh" #include "mnumberentry.h" - +#include +#include const TInt KNumberEntryControlCount = 2; // = number entry, label +_LIT( KPhoneValidChars, "0123456789*#+pwPW" ); + // ========================= MEMBER FUNCTIONS ================================ // --------------------------------------------------------------------------- @@ -76,7 +79,7 @@ // void CDialerNumberEntry::ConstructL() { - DIALER_PRINT("numberentry::ConstructL<"); + DIALER_PRINT("numberentry::ConstructL<"); BaseConstructL(); // Create number entry editor @@ -89,14 +92,14 @@ ConstructEditorFromResourceL( reader ); iFrameContext = CAknsFrameBackgroundControlContext::NewL( - KAknsIIDNone, TRect(0,0,4,4), TRect(1,1,3,3), EFalse ); + KAknsIIDNone, TRect(0,0,4,4), TRect(1,1,3,3), EFalse ); - iFrameContext->SetFrame( KAknsIIDQsnFrCall2Rect ); + iFrameContext->SetFrame( KAknsIIDQsnFrCall2Rect ); iFrameContext->SetParentContext( - AknsDrawUtils::ControlContextOfParent(this) ); + AknsDrawUtils::ControlContextOfParent(this) ); - CleanupStack::PopAndDestroy(); // reader + CleanupStack::PopAndDestroy(); // reader iEditor->SetObserver( this ); iLabel = new( ELeave ) CEikLabel; @@ -104,8 +107,11 @@ iLabel->SetParent( this ); iLabel->SetMopParent( this ); iLabel->SetTextL( KNullDesC ); - iLabel->MakeVisible( EFalse ); + iLabel->MakeVisible( EFalse ); CheckLabelSkinningColor(); + + iAppUi = iEikonEnv->EikAppUi(); + __ASSERT_ALWAYS( iAppUi, DialerPanic( EDialerPanicNoApplicationInstance ) ); ActivateL(); DIALER_PRINT("numberentry::ConstructL>"); @@ -128,7 +134,6 @@ delete iEditor; delete iFrameContext; delete iLabel; - } @@ -146,11 +151,11 @@ // CDialerNumberEntry::SetFocus // --------------------------------------------------------------------------- // -void CDialerNumberEntry::SetFocus( TBool aFocus, - TDrawNow /*aDrawNow*/ ) +void CDialerNumberEntry::SetFocus( TBool aFocus, TDrawNow aDrawNow ) { DIALER_PRINT("numberentry::SetFocus<"); + CCoeControl::SetFocus( aFocus, aDrawNow ); iEditor->SetFocus( aFocus ); DIALER_PRINT("numberentry::SetFocus>"); @@ -209,8 +214,14 @@ void CDialerNumberEntry::SetTextToNumberEntry( const TDesC& aDesC ) { DIALER_PRINT("numberentry::SetTextToNumberEntry<"); - - iEditor->SetText( aDesC ); + + iEditor->SetText( aDesC ); + + if ( iEasyDialer && iOperationMode == EModeEasyDialing ) + { + TRAP_IGNORE( iEasyDialer->SetInputL( aDesC ) ); + } + iEditor->DrawNow(); DIALER_PRINT("numberentry::SetTextToNumberEntry>"); @@ -220,9 +231,18 @@ // CDialerNumberEntry::GetTextFromNumberEntry // --------------------------------------------------------------------------- // -void CDialerNumberEntry::GetTextFromNumberEntry( TDes& aDesC ) +void CDialerNumberEntry::GetTextFromNumberEntry( TDes& aDes ) { - iEditor->GetText( aDesC ); + iEditor->GetText( aDes ); + } + +// --------------------------------------------------------------------------- +// CDialerNumberEntry::Text +// --------------------------------------------------------------------------- +// +TPtrC CDialerNumberEntry::Text() const + { + return iEditor->Text(); } // --------------------------------------------------------------------------- @@ -263,7 +283,7 @@ TBool CDialerNumberEntry::HandleCommandL( TDialerCommandId aCommand) { DIALER_PRINTF("numberentry::HandleCommandL<:", aCommand); - + TBool handled( ETrue ); switch ( aCommand ) { @@ -278,7 +298,7 @@ } break; } - + DIALER_PRINT("numberentry::HandleCommandL>"); return handled; } @@ -301,16 +321,16 @@ { DIALER_PRINT("numberentry::HandleControlEventL<"); - TInt format( KDialerNELayoutLargeFont ); if ( aControl == iEditor && aEventType == EEventStateChanged ) { HandleEditorFormatting(); - InformNumberEntryState(); - iEditor->DrawDeferred(); + + InformNumberEntryState(); + iEditor->DrawDeferred(); } - - DIALER_PRINT("numberentry::HandleControlEventL>"); + + DIALER_PRINT("numberentry::HandleControlEventL>"); } // --------------------------------------------------------------------------- @@ -320,8 +340,22 @@ TKeyResponse CDialerNumberEntry::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) - { - return iEditor->OfferKeyEventL( aKeyEvent, aType ); + { + TKeyResponse handled = EKeyWasNotConsumed; + + // First, offer keyevent to easy dialer. + if (iEasyDialer) + { + handled = iEasyDialer->OfferKeyEventL(aKeyEvent, aType); + } + + // Then to number entry editor. + if (handled == EKeyWasNotConsumed) + { + handled = iEditor->OfferKeyEventL(aKeyEvent, aType); + } + + return handled; } // --------------------------------------------------------------------------- @@ -398,14 +432,15 @@ AknsUtils::RegisterControlPosition( this ); TDialerVariety variety( EDialerVarietyLandscape ); - if ( !Layout_Meta_Data::IsLandscapeOrientation() ) + if ( !Layout_Meta_Data::IsLandscapeOrientation() ) { variety = EDialerVarietyPortrait; } TRect parentRect( Rect() ); - TAknTextComponentLayout neLayout = - AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety ); + TAknTextComponentLayout neLayout = ( iOperationMode == EModeEasyDialing ? + AknLayoutScalable_Apps::dia3_numentry_pane_t1( variety ) : + AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety ) ); AknLayoutUtils::LayoutControl( iEditor, parentRect, @@ -418,13 +453,13 @@ neLayout.H() ); - UpdateNumberEntryFormats(); - RectFrameInnerOuterRects( - Rect(), + parentRect, iOuterRect, iInnerRect ); + UpdateNumberEntryFormats(); + iFrameContext->SetFrameRects( iOuterRect, iInnerRect ); MAknsSkinInstance* skin = AknsUtils::SkinInstance(); @@ -438,15 +473,13 @@ // Portrait variety is temporarily used also in landscape. // Landscape layout data is now unavailable. TAknTextComponentLayout labelLayout = - AknLayoutScalable_Apps::dialer2_ne_pane_t2( - EDialerVarietyPortrait ); + AknLayoutScalable_Apps::dialer2_ne_pane_t2( EDialerVarietyPortrait ); // Temporary solution - labelLayout.Setl(neLayout.l()); + labelLayout.Setl( neLayout.l() ); AknLayoutUtils::LayoutLabel( iLabel, parentRect, labelLayout ); HandleEditorFormatting(); iEditor->DrawDeferred(); - } // --------------------------------------------------------------------------- @@ -461,14 +494,14 @@ HBufC* truncation = aReader.ReadHBufCL(); CleanupStack::PushL( truncation ); TInt formatCount = aReader.ReadInt16(); - iEditor->ConstructL( maxChars, maxLines, formatCount, *truncation ); - CleanupStack::PopAndDestroy( truncation ); + iEditor->ConstructL( maxChars, maxLines, formatCount, *truncation ); + CleanupStack::PopAndDestroy( truncation ); iFormatCount = formatCount; for ( TInt ii = 0; ii < iFormatCount; ii++ ) { CAknPhoneNumberEditor::TFormat format( aReader ); - CalculateLayout( format, ii ); + CalculateLayout( format, ii ); iEditor->AddFormat( format ); } @@ -487,7 +520,7 @@ for ( TInt ii = 0; ii < iFormatCount; ii++ ) { CAknPhoneNumberEditor::TFormat format( iEditor->Format( ii ) ); - CalculateLayout( format, ii ); + CalculateLayout( format, ii ); iEditor->Format( ii ) = format; } @@ -502,111 +535,62 @@ void CDialerNumberEntry::CalculateLayout( CAknPhoneNumberEditor::TFormat& aFormat, TInt aNEVariety ) { - TAknLayoutText textsLargeFontLine1Text; - TAknLayoutText textsLargeFontLine2Text; - TAknLayoutText textsLargeFontLine3Text; - - TAknLayoutText textsSmallFontLine1Text; - TAknLayoutText textsSmallFontLine2Text; - TAknLayoutText textsSmallFontLine3Text; - - const CAknLayoutFont* layoutFont; - - switch ( aNEVariety ) - { - case KDialerNELayoutLargeFont: - { - TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 2 : 0; - - TAknLayoutScalableParameterLimits limits = - AknLayoutScalable_Apps::dialer2_ne_pane_t1_ParamLimits( - variety ); - //Line 1 - textsLargeFontLine1Text.LayoutText( Rect(), - AknLayoutScalable_Apps::dialer2_ne_pane_t1( - variety, 0, 0 ) ); - //Line 2 - textsLargeFontLine2Text.LayoutText( Rect(), - AknLayoutScalable_Apps::dialer2_ne_pane_t1( - variety, - 0, - 1 ) ); - //Last row - textsLargeFontLine3Text.LayoutText( Rect(), - AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety, - 0, - limits.LastRow() ) ); + TAknLayoutText textsLine1Text; + TAknLayoutText textsLine2Text; + + if ( iOperationMode == EModeEasyDialing ) + { + TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; + textsLine1Text.LayoutText( Rect(), AknLayoutScalable_Apps::dia3_numentry_pane_t1(variety) ); + textsLine2Text = textsLine1Text; + } + else + { + TInt variety = 0; + if ( aNEVariety == KDialerNELayoutLargeFont ) + { + variety = Layout_Meta_Data::IsLandscapeOrientation() ? 2 : 0; + } + else + { + variety = Layout_Meta_Data::IsLandscapeOrientation() ? 3 : 1; + } - //Need to add one row because zero is the first line - aFormat.iNumLines = limits.LastRow()+1; - - //take font from line 1 - aFormat.iFont = textsLargeFontLine1Text.Font(); - layoutFont = CAknLayoutFont::AsCAknLayoutFontOrNull( aFormat.iFont); - aFormat.iBottomBaselineOffset = - layoutFont->BaselineToTextPaneBottom(); - //outer rect from last line - aFormat.iOuterRect = textsLargeFontLine3Text.TextRect(); - // have to add extra gap - aFormat.iOuterRect.iTl.iY -= aFormat.iBottomBaselineOffset; - - //calculate baselineSeparation from the difference of the second - //line and the first line bottom right Y coordinates - TInt baselineSeparation = textsLargeFontLine2Text.TextRect().iBr.iY - - textsLargeFontLine1Text.TextRect().iBr.iY; - - aFormat.iOuterRect.iTl.iY -= ( (aFormat.iNumLines - 1) - * baselineSeparation ); - aFormat.iBaselineSeparation = baselineSeparation; - } - break; - case KDialerNELayoutSmallFont: - { - TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 3 : 1; - - TAknLayoutScalableParameterLimits limits = - AknLayoutScalable_Apps::dialer2_ne_pane_t1_ParamLimits( - variety ); - //Line 1 - textsSmallFontLine1Text.LayoutText( Rect(), - AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety,0,0 ) ); - //Line 2 - textsSmallFontLine2Text.LayoutText( Rect(), - AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety,0,1 ) ); - //Last row - textsSmallFontLine3Text.LayoutText( Rect(), - AknLayoutScalable_Apps::dialer2_ne_pane_t1( - variety, - 0, - limits.LastRow() ) ); - - //Need to add one row because zero is the first line - aFormat.iNumLines = limits.LastRow()+1; - - //take font from line 1 - aFormat.iFont = textsSmallFontLine1Text.Font(); - layoutFont = CAknLayoutFont::AsCAknLayoutFontOrNull( - aFormat.iFont); - aFormat.iBottomBaselineOffset = - layoutFont->BaselineToTextPaneBottom(); - //outer rect from line 3 - aFormat.iOuterRect = textsSmallFontLine3Text.TextRect(); - // have to add extra gap - aFormat.iOuterRect.iTl.iY -= aFormat.iBottomBaselineOffset; - - //calculate baselineSeparation from the difference of the second - //line and the first line bottom right Y coordinates - TInt baselineSeparation = textsSmallFontLine2Text.TextRect().iBr.iY - - textsSmallFontLine1Text.TextRect().iBr.iY; - - aFormat.iOuterRect.iTl.iY -= ( (aFormat.iNumLines - 1) - * baselineSeparation ); - aFormat.iBaselineSeparation = baselineSeparation; - } - break; - default: - break; - } + //Line 1 + textsLine1Text.LayoutText( Rect(), + AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety, 0, 0 ) ); + //Line 2 + textsLine2Text.LayoutText( Rect(), + AknLayoutScalable_Apps::dialer2_ne_pane_t1( variety, 0, 1 ) ); + } + + //take font from line 1 + aFormat.iFont = textsLine1Text.Font(); + const CAknLayoutFont* layoutFont = CAknLayoutFont::AsCAknLayoutFontOrNull( aFormat.iFont ); + aFormat.iBottomBaselineOffset = layoutFont->BaselineToTextPaneBottom(); + + // Calculate baselineSeparation from the difference of the second + // line and the first line bottom right Y coordinates. + TInt baselineSeparation = + textsLine2Text.TextRect().iBr.iY - textsLine1Text.TextRect().iBr.iY; + aFormat.iBaselineSeparation = baselineSeparation; + + // Outer rect of the text editor is the inner rect of the whole text box + aFormat.iOuterRect = iInnerRect; + + aFormat.iNumLines = 1; + + // If multiline layout is to be used, the exact number of lines is calculated + // based on available area and the row height (i.e. baselineSeparation) + if ( baselineSeparation > 0 && baselineSeparation < iInnerRect.Height() ) + { + aFormat.iNumLines = ( iInnerRect.Height() / baselineSeparation ); + + // Center editor vertically to the available area. + TInt editorHeight = aFormat.iNumLines * baselineSeparation; + TInt deltaHeight = ( iInnerRect.Height() - editorHeight ) / 2; + aFormat.iOuterRect.Shrink( 0, deltaHeight ); + } } // --------------------------------------------------------------------------- @@ -622,6 +606,39 @@ CheckLabelSkinningColor(); } } + +// --------------------------------------------------------------------------- +// CDialerNumberEntry::HandlePointerEventL +// --------------------------------------------------------------------------- +// +void CDialerNumberEntry::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + // Normal pointer event handling and delegation to editor component + // happens only if we are already in focus. Otherwise we just take the + // focus. This is to prevent accidental cursor movements as putting the + // cursor back to the end of the text is difficult for right-aligned + // text. + if ( iEditor->IsFocused() ) + { + // If user hits the margin area between this control and the actual editor + // control, then the event position is moved to be inside the editor region. + // This makes it easier to move cursor with finger touch, especially in + // both ends of the number field. + TPoint eventPos( aPointerEvent.iPosition ); + TRect editorRect( iEditor->Rect() ); + editorRect.Shrink( 1, 1 ); // take rect which is fully inside the editor rect + eventPos.iX = Min( eventPos.iX, editorRect.iBr.iX ); + eventPos.iX = Max( eventPos.iX, editorRect.iTl.iX ); + eventPos.iY = Min( eventPos.iY, editorRect.iBr.iY ); + eventPos.iY = Max( eventPos.iY, editorRect.iTl.iY ); + + TPointerEvent modEvent( aPointerEvent ); + modEvent.iPosition = eventPos; + + CCoeControl::HandlePointerEventL( modEvent ); + } + } + // --------------------------------------------------------------------------- // CDialerNumberEntry::HandleEditorFormatting // --------------------------------------------------------------------------- @@ -638,8 +655,8 @@ if ( iEditor->CurrentFormatIndex() != format ) { iEditor->DrawDeferred(); - iEditor->SetFormat( format ); - iFrameContext->SetRect( Rect() ); + iEditor->SetFormat( format ); + iFrameContext->SetRect( Rect() ); } } @@ -651,7 +668,7 @@ void CDialerNumberEntry::StartVirtualKeyBoard( ) { // To change focus to VKB, if not called VKB will not come visible - CEikonEnv::Static()->SyncNotifyFocusObserversOfChangeInFocus(); + iEikonEnv->SyncNotifyFocusObserversOfChangeInFocus(); iEditor->OpenVKB(); } @@ -679,41 +696,57 @@ TRect& aOuterRect, TRect& aInnerRect ) { - if ( Layout_Meta_Data::IsMirrored() ) + if ( iOperationMode == EModeEasyDialing ) { - TAknLayoutRect frameTopRight; - frameTopRight.LayoutRect( - aFrameRect, - AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g3().LayoutLine() ); - - TAknLayoutRect frameBottomLeft; - frameBottomLeft.LayoutRect( - aFrameRect, - AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g4().LayoutLine() ); - - aOuterRect = TRect( frameTopRight.Rect().iTl, - frameBottomLeft.Rect().iBr ); - - aInnerRect = TRect( frameTopRight.Rect().iBr, - frameBottomLeft.Rect().iTl ); + aOuterRect = Rect(); + TAknLayoutRect innerRectLayout; + innerRectLayout.LayoutRect( aOuterRect, AknLayoutScalable_Apps::bg_dia3_numentry_pane_g1() ); + aInnerRect = innerRectLayout.Rect(); + + // Add a bit of margin to left and right ends of the entry field if layout + // doens't define enough. This is to enhance the touch usability. + static const TInt KMinMargin( 10 ); + aInnerRect.iTl.iX = Max( aInnerRect.iTl.iX, aOuterRect.iTl.iX + KMinMargin ); + aInnerRect.iBr.iX = Min( aInnerRect.iBr.iX, aOuterRect.iBr.iX - KMinMargin ); } else { - TAknLayoutRect frameTopLeft; - frameTopLeft.LayoutRect( - aFrameRect, - AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g2().LayoutLine() ); - - TAknLayoutRect frameBottomRight; - frameBottomRight.LayoutRect( - aFrameRect, - AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g5().LayoutLine() ); - - aOuterRect = TRect( frameTopLeft.Rect().iTl, - frameBottomRight.Rect().iBr ); - aInnerRect = TRect( frameTopLeft.Rect().iBr, - frameBottomRight.Rect().iTl ); - } + if ( Layout_Meta_Data::IsMirrored() ) + { + TAknLayoutRect frameTopRight; + frameTopRight.LayoutRect( + aFrameRect, + AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g3().LayoutLine() ); + + TAknLayoutRect frameBottomLeft; + frameBottomLeft.LayoutRect( + aFrameRect, + AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g4().LayoutLine() ); + + aOuterRect = TRect( frameTopRight.Rect().iTl, + frameBottomLeft.Rect().iBr ); + + aInnerRect = TRect( frameTopRight.Rect().iBr, + frameBottomLeft.Rect().iTl ); + } + else + { + TAknLayoutRect frameTopLeft; + frameTopLeft.LayoutRect( + aFrameRect, + AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g2().LayoutLine() ); + + TAknLayoutRect frameBottomRight; + frameBottomRight.LayoutRect( + aFrameRect, + AknLayoutScalable_Apps::bg_popup_call2_rect_pane_g5().LayoutLine() ); + + aOuterRect = TRect( frameTopLeft.Rect().iTl, + frameBottomRight.Rect().iBr ); + aInnerRect = TRect( frameTopLeft.Rect().iBr, + frameBottomRight.Rect().iTl ); + } + } } // ----------------------------------------------------------------------------- @@ -741,11 +774,28 @@ iNumberContents = EFalse; } - if( iObserver ) + if ( iPreviousNumberEntryContent.Compare( iEditor->Text() ) != 0 ) { - iObserver->NumberEntryStateChanged( iNumberContents ); + iPreviousNumberEntryContent.Zero(); + iEditor->GetText( iPreviousNumberEntryContent ); + + // The following stores the information of validity of the number for normal calls. + // This information is needed so that we don't show call items for invalid numbers. + TBool validPhoneNumber = Validate( iEditor->Text() ); + TInt commandId = validPhoneNumber ? EPhoneDialerValidNumber : EPhoneDialerInvalidNumber; + + TRAP_IGNORE( iAppUi->HandleCommandL( commandId ) ); + + if ( iEasyDialer && iOperationMode == EModeEasyDialing ) + { + TRAP_IGNORE( iEasyDialer->SetInputL( iEditor->Text() ) ); + } + + if ( iObserver ) + { + iObserver->NumberEntryStateChanged( iNumberContents ); + } } - } // ----------------------------------------------------------------------------- @@ -770,5 +820,54 @@ TRAP_IGNORE( iLabel->OverrideColorL( EColorLabelText, skinColor ) ); } } + +// ----------------------------------------------------------------------------- +// CDialerNumberEntry::MakeVisible( TBool aVisible ) +// ----------------------------------------------------------------------------- +// +void CDialerNumberEntry::MakeVisible( TBool aVisible ) + { + CCoeControl::MakeVisible( aVisible ); + iEditor->MakeVisible( aVisible ); + } + +// ----------------------------------------------------------------------------- +// CDialerNumberEntry::SetEasyDialingPlugin +// ----------------------------------------------------------------------------- +// +void CDialerNumberEntry::SetEasyDialingPlugin(CDialingExtensionInterface* aEasyDialer) + { + DIALER_PRINT("numberentry::SetEasyDialingPlugin"); + iEasyDialer = aEasyDialer; + } + +// ----------------------------------------------------------------------------- +// CDialerNumberEntry::SetOperationMode +// ----------------------------------------------------------------------------- +// +void CDialerNumberEntry::SetOperationMode( TDialerOperationMode aMode ) + { + iOperationMode = aMode; + } + +// ----------------------------------------------------------------------------- +// CDialerNumberEntry::Validate +// +// Copied from cphonekeys. +// ----------------------------------------------------------------------------- +// +TBool CDialerNumberEntry::Validate( const TDesC& aString ) + { + DIALER_PRINT("numberentry::Validate"); + TLex input( aString ); + TPtrC valid( KPhoneValidChars ); + + while ( valid.Locate( input.Peek() ) != KErrNotFound ) + { + input.Inc(); + } + return !input.Remainder().Length(); + } + // End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialerstub.cpp --- a/phoneuis/dialer/src/cdialerstub.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/src/cdialerstub.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -30,16 +30,22 @@ // --------------------------------------------------------------------------- // EXPORT_C CDialer* CDialer::NewL( const CCoeControl& aContainer, - const TRect& aRect ) + const TRect& aRect, + MPhoneDialerController* aController ) { CDialer* self = new( ELeave )CDialer ( ); CleanupStack::PushL( self ); - self->ConstructL( aContainer , aRect ); + self->ConstructL( aContainer , aRect, aController ); CleanupStack::Pop(); // self return self; } +// --------------------------------------------------------------------------- +// CDialer::~CDialer +// // Destructor +// --------------------------------------------------------------------------- +// EXPORT_C CDialer::~CDialer() { // Empty @@ -53,20 +59,24 @@ // void CDialer::ConstructL( const CCoeControl& aContainer, - const TRect& aRect ) - { + const TRect& aRect, + MPhoneDialerController* /*aController*/ ) + { // set window SetContainerWindowL( aContainer ); SetParent( const_cast(&aContainer) ); - iParentControl = &aContainer; SetRect( aRect ); } -// Constructor -CDialer::CDialer( ) : - iEikEnv( *CEikonEnv::Static() ) +// --------------------------------------------------------------------------- +// CDialer::CDialer +// +// C++ default constructor +// --------------------------------------------------------------------------- +// +CDialer::CDialer() { - // Empty + // Empty } // ----------------------------------------------------------------------------- @@ -90,7 +100,51 @@ // Empty } +// ----------------------------------------------------------------------------- +// CDialer::SetControllerL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CDialer::SetControllerL( MPhoneDialerController* /*aController*/ ) + { + // Empty + } +// --------------------------------------------------------------------------- +// CDialer::Controller +// --------------------------------------------------------------------------- +// +EXPORT_C MPhoneDialerController* CDialer::Controller() + { + return NULL; + } + +// ----------------------------------------------------------------------------- +// CDialer::GetEasyDialingInterface +// ----------------------------------------------------------------------------- +// +EXPORT_C CDialingExtensionInterface* CDialer::GetEasyDialingInterface() const + { + return NULL; + } + +// --------------------------------------------------------------------------- +// CDialer::UpdateToolbar +// --------------------------------------------------------------------------- +// +EXPORT_C void CDialer::UpdateToolbar() + { + // empty + } + +// --------------------------------------------------------------------------- +// CDialer::RelayoutAndDraw +// --------------------------------------------------------------------------- +// +EXPORT_C void CDialer::RelayoutAndDraw() + { + // Empty + } + // Methods from MNumberEntry // --------------------------------------------------------------------------- @@ -104,8 +158,7 @@ { // Empty } - - + // --------------------------------------------------------------------------- // CDialer::GetNumberEntry // @@ -115,7 +168,7 @@ { return NULL; } - + // --------------------------------------------------------------------------- // CDialer::IsNumberEntryUsed // @@ -125,7 +178,7 @@ { return EFalse; } - + // --------------------------------------------------------------------------- // CDialer::SetNumberEntryVisible // @@ -136,7 +189,6 @@ // Empty } - // --------------------------------------------------------------------------- // CDialer::SetTextToNumberEntry // @@ -146,7 +198,7 @@ { // Empty } - + // --------------------------------------------------------------------------- // CDialer::GetTextFromNumberEntry // @@ -156,7 +208,7 @@ { aDesC = KNullDesC(); } - + // --------------------------------------------------------------------------- // CDialer::RemoveNumberEntry // @@ -166,7 +218,7 @@ { iIsUsed = EFalse; } - + // --------------------------------------------------------------------------- // CDialer::ChangeEditorMode // @@ -176,17 +228,17 @@ { return KErrNotSupported; } - + // --------------------------------------------------------------------------- // CDialer::OpenVKBL -// +// // --------------------------------------------------------------------------- // void CDialer::OpenVkbL() { // Empty } - + // --------------------------------------------------------------------------- // CDialer::GetEditorMode // @@ -196,7 +248,7 @@ { return KErrNotSupported; } - + // --------------------------------------------------------------------------- // CDialer::ResetEditorToDefaultValues // @@ -206,7 +258,7 @@ { // Empty } - + // --------------------------------------------------------------------------- // CDialer::SetNumberEntryPromptText // @@ -215,7 +267,7 @@ void CDialer::SetNumberEntryPromptText( const TDesC& /*aPromptText*/ ) { // Empty - } + } // --------------------------------------------------------------------------- // CDialer::EnableTactileFeedback @@ -226,6 +278,35 @@ { // Empty } + +// --------------------------------------------------------- +// CDialer::HandleQwertyModeChange +// --------------------------------------------------------- +// +EXPORT_C void CDialer::HandleQwertyModeChange( TInt /*aMode*/ ) + { + // Empty + } + +// --------------------------------------------------------- +// CDialer::HandleKeyboardLayoutChange +// --------------------------------------------------------- +// +EXPORT_C void CDialer::HandleKeyboardLayoutChange() + { + // Empty + } + +// --------------------------------------------------------------------------- +// CDialer::HandleControlEventL +// --------------------------------------------------------------------------- +// +void CDialer::HandleControlEventL( CCoeControl* /*aControl*/, TCoeEvent /*aEventType*/ ) + { + // Empty + } + + // Functions from CCoeControl // --------------------------------------------------------------------------- @@ -260,7 +341,6 @@ return 0; } - // --------------------------------------------------------------------------- // CDialer::ComponentControl(TInt aIndex) const // @@ -317,14 +397,14 @@ // Calling base class implementation CCoeControl::HandlePointerEventL(aPointerEvent); } - + // --------------------------------------------------------------------------- // CDialer::MakeVisible // --------------------------------------------------------------------------- // void CDialer::MakeVisible( TBool /*aVisible*/ ) - { - } + { + } // Private methods @@ -348,7 +428,7 @@ { // Empty } - + // --------------------------------------------------------------------------- // CDialer::ComponentControlForDialerMode // @@ -368,17 +448,17 @@ // // --------------------------------------------------------------------------- // -CAknEdwinState* CDialer::EdwinState() +CAknEdwinState* CDialer::EdwinState() const { return NULL; - } + } // --------------------------------------------------------------------------- -// CDialer::UpdateVkbEditorFlagsL +// CDialer::UpdateEdwinState // // --------------------------------------------------------------------------- // -void CDialer::UpdateVkbEditorFlagsL() +void CDialer::UpdateEdwinState( TEditorType /* aType */ ) { // Empty } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialertoolbarcontainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/src/cdialertoolbarcontainer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,462 @@ +/* +* Copyright (c) 2009, 2010 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: CDialerToolbarContainer replaces the standard S60 toolbar +* in the Dialer layout in the Easy dialing mode. It's +* responsible of the toolbar layout and logic, but not of the +* contents which are provided by an instance of +* MPhoneDialerController. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dialercommon.h" +#include "cdialertoolbarcontainer.h" + + +// CONSTANTS +const TInt KDialerToolbarButtonKeyRepeatDelay = 300; +const TInt KDialerToolbarKeyRepeatInterval = 75; + + + +// CLASS DEFINITION + +// --------------------------------------------------------------------------- +// NewL +// +// --------------------------------------------------------------------------- +// +CDialerToolbarContainer* CDialerToolbarContainer::NewL( CCoeControl& aParent, + MPhoneDialerController* aContentProvider ) + { + CDialerToolbarContainer* self = + new (ELeave) CDialerToolbarContainer( aParent, aContentProvider ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CDialerToolbarContainer +// +// --------------------------------------------------------------------------- +// +CDialerToolbarContainer::CDialerToolbarContainer( CCoeControl& aParent, + MPhoneDialerController* aContentProvider ) : + CDialerContainerBase( aParent ), + iContentProvider( aContentProvider ) + { + } + +// --------------------------------------------------------------------------- +// ~CDialerToolbarContainer +// +// --------------------------------------------------------------------------- +// +CDialerToolbarContainer::~CDialerToolbarContainer() + { + iCoeEnv->RemoveForegroundObserver( *this ); + DeleteButtons(); + } + +// --------------------------------------------------------------------------- +// ConstructL +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::ConstructL() + { + BaseConstructL(); + + CreateButtonsL(); + + iCoeEnv->AddForegroundObserverL( *this ); + } + +// --------------------------------------------------------------------------- +// SetContentProviderL +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::SetContentProviderL( MPhoneDialerController* aProvider ) + { + if ( iContentProvider != aProvider ) + { + iContentProvider = aProvider; + + // Recreate buttons to reset available button states + DeleteButtons(); + CreateButtonsL(); + } + } + +// --------------------------------------------------------------------------- +// UpdateButtonStates +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::UpdateButtonStates() + { + // safety check + if ( iButtons.Count() < MPhoneDialerController::ENumberOfButtons || + !iContentProvider ) + { + return; + } + + for ( TInt i = 0 ; i < MPhoneDialerController::ENumberOfButtons ; ++i ) + { + MPhoneDialerController::TButtonIndex idx = + static_cast< MPhoneDialerController::TButtonIndex >( i ); + TInt state = iContentProvider->ButtonState( idx ); + TBool dimmed = iContentProvider->ButtonDimmed( idx ); + if ( state >= 0 ) + { + iButtons[i]->SetCurrentState( state, EFalse ); + } + iButtons[i]->SetDimmed( dimmed ); + } + } + +// --------------------------------------------------------------------------- +// SetVariety +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::SetVariety() + { + iVariety = ( Layout_Meta_Data::IsLandscapeOrientation() ? + EDialerVarietyLandscape : EDialerVarietyPortrait ); + } + +// --------------------------------------------------------------------------- +// SetLayout +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::SetLayout() + { + if ( iButtons.Count() < MPhoneDialerController::ENumberOfButtons ) + { + return; + } + + // Position for the first button + TPoint buttonPos = Rect().iTl; + + if ( iVariety == EDialerVarietyPortrait ) + { + // In portrait, buttons are laid out from top to bottom + for ( TInt i = 0 ; i < iButtons.Count() ; ++i ) + { + buttonPos = LayoutButton( i, buttonPos ); + } + } + else + { + // In landscape, buttons are laid out from right to left. + // This is achieved by looping button array backwards and laying + // those out from left to right. + for ( TInt i = iButtons.Count()-1 ; i >= 0 ; --i ) + { + buttonPos = LayoutButton( i, buttonPos ); + } + } + } + +// --------------------------------------------------------------------------- +// CountComponentControls +// +// --------------------------------------------------------------------------- +// +TInt CDialerToolbarContainer::CountComponentControls() const + { + return iButtons.Count(); + } + +// --------------------------------------------------------------------------- +// ComponentControl +// +// --------------------------------------------------------------------------- +// +CCoeControl* CDialerToolbarContainer::ComponentControl( TInt aIndex ) const + { + CCoeControl* control = NULL; + if ( aIndex >= 0 && aIndex < iButtons.Count() ) + { + control = iButtons[ aIndex ]; + } + return control; + } + +// --------------------------------------------------------------------------- +// HandleControlEventL +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ) + { + if ( aEventType == MCoeControlObserver::EEventStateChanged ) + { + // Handle button press. + + // Multistate buttons change state automatically when pressed. + // Revert this change as we do not want to use states + // for "toggle button" type of functionality but to give one button + // different functions depending on the situation. + // Must initiate button redraw so that the state change done here + // is drawn too; the automatically changed state is drawn within + // AknButton just before EEventStateChanged is reported + // (in emulator button icon flashing can be seen). + UpdateButtonStates(); + aControl->DrawNow(); + + // Handle the command attached to the button + CAknButton* button = static_cast( aControl ); + TInt commandId = ButtonCommand( *button ); + + if ( commandId == EPhoneDialerCmdClear ) + { + // simulate backspace + TKeyEvent keyEvent; + keyEvent.iModifiers = 0; + keyEvent.iRepeats = 0; + keyEvent.iCode = EKeyBackspace; + keyEvent.iScanCode = EStdKeyBackspace; + iCoeEnv->SimulateKeyEventL( keyEvent, EEventKey ); + } + else + { + // Forward pressed toolbar button to the framework + // so that we can handle it in active state + CAknAppUi* appUi = static_cast( iCoeEnv->AppUi() ); + appUi->ProcessCommandL( commandId ); + } + } + } + +// --------------------------------------------------------------------------- +// HandlePointerEventL +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + iLatestPointerEvent = aPointerEvent; + CCoeControl::HandlePointerEventL( aPointerEvent ); + } + +// --------------------------------------------------------------------------- +// HandleGainingForeground +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::HandleGainingForeground() + { + // no implementation needed + } + +// --------------------------------------------------------------------------- +// HandleLosingForeground +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::HandleLosingForeground() + { + // This is needed when dialer control disappeares during keypress. + // Last pressed pointer event must be forwarted to framework + // as pointer up event. Thus button is set to unpressed state etc. + // This code calls HandlePointerEventL of the parent class instead of this. + // If we call this classes HandlePointerEventL, this classes + // grab status is not cleared, and later coming EButton1Up events may end + // up erroneously to this class, although intended elsewhere. + // + if ( iLatestPointerEvent.iType != TPointerEvent::EButton1Up && Parent() ) + { + iLatestPointerEvent.iType = TPointerEvent::EButton1Up; + TRAP_IGNORE( Parent()->HandlePointerEventL( iLatestPointerEvent ) ); + } + } + +// --------------------------------------------------------------------------- +// CreateButtonsL +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::CreateButtonsL() + { + // Create the avkon button objects + for ( TInt i = 0 ; i < MPhoneDialerController::ENumberOfButtons ; ++i ) + { + CAknButton* button = CAknButton::NewLC(); + button->SetContainerWindowL( *this ); // this sets also parent and mopParent + button->SetObserver( this ); + button->SetIconScaleMode( EAspectRatioPreserved ); + AknsUtils::RegisterControlPosition( button ); + button->ActivateL(); + iButtons.AppendL( button ); + CleanupStack::Pop( button ); + iButtonCommands.AppendL( RArray() ); + } + + // Backspace button has auto-repeat feature + iButtons[MPhoneDialerController::EClearButton]->SetButtonFlags( KAknButtonKeyRepeat ); + iButtons[MPhoneDialerController::EClearButton]->SetKeyRepeatInterval( + KDialerToolbarButtonKeyRepeatDelay, KDialerToolbarKeyRepeatInterval ); + + // Call button doesn't use default button background but a green one + // (same as used by in-call view for answer button) + iButtons[MPhoneDialerController::ECallButton]->SetFrameAndCenterIds( + KAknsIIDQsnFrButtonNormalAnswer, KAknsIIDQsnFrButtonNormalAnswerCenter, + KAknsIIDQsnFrButtonPressedAnswer, KAknsIIDQsnFrButtonPressedAnswerCenter, + KAknsIIDQsnFrButtonInactiveAnswer, KAknsIIDQsnFrButtonInactiveAnswerCenter, + KAknsIIDQsnFrButtonPressedAnswer, KAknsIIDQsnFrButtonPressedAnswerCenter, + KAknsIIDQsnFrButtonInactiveAnswer, KAknsIIDQsnFrButtonInactiveAnswerCenter + ); + + // Add button states + if ( iContentProvider ) + { + for ( TInt i = 0 ; i < MPhoneDialerController::ENumberOfButtons ; ++i ) + { + MPhoneDialerController::TButtonIndex btnIdx = + static_cast< MPhoneDialerController::TButtonIndex >( i ); + RPointerArray< MPhoneDialerController::CButtonData > states; + CleanupClosePushL( states ); + iContentProvider->GetButtonData( btnIdx, states ); + for ( TInt j = 0 ; j < states.Count() ; ++j ) + { + TRAP_IGNORE( AddButtonStateL( i, *states[j] ) ); + delete states[j]; + states[j] = NULL; + } + CleanupStack::PopAndDestroy( &states ); + } + } + } + +// --------------------------------------------------------------------------- +// DeleteButtons +// Reset internal arrays holding the button data +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::DeleteButtons() + { + for ( TInt i = 0 ; i < iButtons.Count() ; ++i ) + { + AknsUtils::DeregisterControlPosition( iButtons[i] ); + } + iButtons.ResetAndDestroy(); + + for ( TInt i = 0 ; i < iButtonCommands.Count() ; ++i ) + { + iButtonCommands[i].Reset(); + } + iButtonCommands.Reset(); + } + +// --------------------------------------------------------------------------- +// AddButtonStateL +// +// --------------------------------------------------------------------------- +// +void CDialerToolbarContainer::AddButtonStateL( TInt aButtonIndex, + MPhoneDialerController::CButtonData& aButtonData ) + { + iButtons[ aButtonIndex ]->AddStateL( + aButtonData.iIcon, //CGulIcon* aIcon, + NULL, //CGulIcon* aDimmedIcon, + NULL, //CGulIcon* aPressedIcon, + NULL, //CGulIcon* aHoverIcon, + KNullDesC, //const TDesC& aText, + *aButtonData.iTooltip, //const TDesC& aHelpText, + 0 ); //const TInt aStateFlags + aButtonData.iIcon = NULL; // ownership transferred + iButtonCommands[ aButtonIndex ].AppendL( aButtonData.iCommandId ); + } + +// --------------------------------------------------------------------------- +// ButtonCommand +// +// --------------------------------------------------------------------------- +// +TInt CDialerToolbarContainer::ButtonCommand( const CAknButton& aButton ) const + { + TInt commandId = KErrNotFound; + + // Find out index of the button in iButtons array + TInt btnIndex = iButtons.Find( &aButton ); + __ASSERT_DEBUG( btnIndex >= 0, DialerPanic( EDialerPanicToolbarButtonNotFound ) ); + + // Find the corresponding command from command array + TInt btnStateIdx = aButton.StateIndex(); + if ( btnIndex < iButtonCommands.Count() && + btnStateIdx < iButtonCommands[btnIndex].Count() ) + { + commandId = iButtonCommands[btnIndex][btnStateIdx]; + } + + __ASSERT_DEBUG( commandId != KErrNotFound, DialerPanic( EDialerPanicToolbarButtonNotFound ) ); + return commandId; + } + +// --------------------------------------------------------------------------- +// LayoutButton +// Set layout for one button. +// --------------------------------------------------------------------------- +// +TPoint CDialerToolbarContainer::LayoutButton( TInt aButtonIdx, TPoint aPos ) + { + TRect parentRect = Rect(); + + TAknWindowComponentLayout buttonLayout = + ( aButtonIdx == MPhoneDialerController::ECallButton ? + AknLayoutScalable_Apps::cell_dia3_key1_fun_pane( iVariety ) : + AknLayoutScalable_Apps::cell_dia3_key0_fun_pane( iVariety ) ); + + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( parentRect, buttonLayout ); + TRect outerRect = layoutRect.Rect(); + outerRect.SetRect( aPos, outerRect.Size() ); + + TRect innerRect = outerRect; + innerRect.Shrink( 1, 1 ); + iButtons[ aButtonIdx ]->SetRect( innerRect ); + AknsUtils::RegisterControlPosition( iButtons[ aButtonIdx ] ); + + // Calculate position for the next button + TPoint nextPos = aPos; + if ( iVariety == EDialerVarietyPortrait ) + { + nextPos.iY += outerRect.Height(); + } + else + { + nextPos.iX += outerRect.Width(); + } + + return nextPos; + } + +// end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialervideocontainer.cpp --- a/phoneuis/dialer/src/cdialervideocontainer.cpp Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/dialer/src/cdialervideocontainer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -27,9 +27,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/dialer/src/cdialingextensionobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/dialer/src/cdialingextensionobserver.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,182 @@ +/* +* Copyright (c) 2007 - 2010 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: Observer for dialingextension plug-in. +* +*/ + +// INCLUDE FILES +#include +#include +#include + +// USER INCLUDE FILES +#include "cdialingextensionobserver.h" +#include "cdialernumberentry.h" +#include "cdialer.h" + + +// --------------------------------------------------------------------------- +// CDialingExtensionObserver::CDialingExtensionObserver +// +// +// --------------------------------------------------------------------------- +// +CDialingExtensionObserver* CDialingExtensionObserver::NewL( + CDialingExtensionInterface* aDialingExtension, + CDialerNumberEntry* aNumberEntry, + CDialer* aDialer ) + { + CDialingExtensionObserver* self = new (ELeave) CDialingExtensionObserver( + aDialingExtension, aNumberEntry, aDialer ); + return self; + } + +// --------------------------------------------------------------------------- +// CDialingExtensionObserver::~CDialingExtensionObserver +// +// +// --------------------------------------------------------------------------- +// +CDialingExtensionObserver::~CDialingExtensionObserver() + { + // no owned data => no implementation needed + } + +// --------------------------------------------------------------------------- +// CDialingExtensionObserver::HandleDialingExtensionEvent +// +// +// --------------------------------------------------------------------------- +// +void CDialingExtensionObserver::HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ) + { + switch ( aEvent ) + { + case MDialingExtensionObserver::EFocusChanged: + { + // The basic idea of EFocusChanged event handling: + // - If dialing extension gets in focus, focus is taken from number entry editor. + // - If dialing extension gives up focus, focus is given to number entry editor. + + if ( iDialingExtension->IsFocused() && iNumberEntry->IsFocused() ) + { + iNumberEntry->SetFocus(EFalse); + UpdateCba(); + iDialer->UpdateToolbar(); + } + else if ( !iDialingExtension->IsFocused() && !iNumberEntry->IsFocused() && iDialer->IsFocused() ) + { + // Number entry editor is set focused only if the parent control is in focus. + // If number entry editor was focused but parent was not, this may show as a + // a blinking cursor in an inappropriate place. + iNumberEntry->SetFocus(ETrue); + UpdateCba(); + iDialer->UpdateToolbar(); + } + + iNumberEntry->DrawDeferred(); + } + break; + + case MDialingExtensionObserver::ECCALauncherExit: + case MDialingExtensionObserver::ECommunicationCancelled: + case MDialingExtensionObserver::ECommunicationStarted: + { + // No actions. We should stay in dialer, and not go to idle. + } + break; + + case MDialingExtensionObserver::EEasyDialingEnabled: + { + // order dialer to refresh its layout + iDialer->UpdateNumberEntryConfiguration(); + iDialer->SetSize( iDialer->Size() ); + if (iDialingExtension && iNumberEntry) + { + // get matches for the current input + TRAP_IGNORE( SearchL() ); + } + iDialer->DrawDeferred(); + } + break; + + case MDialingExtensionObserver::EEasyDialingDisabled: + { + // order parent to refresh its layout + iDialer->UpdateNumberEntryConfiguration(); + iDialer->SetSize( iDialer->Size() ); + iDialer->DrawDeferred(); + } + break; + + default: + break; + } + } + + +// --------------------------------------------------------------------------- +// CDialingExtensionObserver::CDialingExtensionObserver +// +// +// --------------------------------------------------------------------------- +// +CDialingExtensionObserver::CDialingExtensionObserver( + CDialingExtensionInterface* aDialingExtension, + CDialerNumberEntry* aNumberEntry, + CDialer* aDialer ) : +iDialingExtension( aDialingExtension ), +iNumberEntry( aNumberEntry ), +iDialer( aDialer ), +iEikonEnvironment( NULL ) + { + } + + +// --------------------------------------------------------------------------- +// CDialingExtensionObserver::CDialingExtensionObserver +// +// +// --------------------------------------------------------------------------- +// +void CDialingExtensionObserver::UpdateCba() + { + if ( !iEikonEnvironment ) + { + iEikonEnvironment = CEikonEnv::Static(); + } + + if( iEikonEnvironment && iEikonEnvironment->EikAppUi() ) + { + TRAP_IGNORE( iEikonEnvironment->EikAppUi()->HandleCommandL( EPhoneCmdUpdateCba )); + } + } + + +// --------------------------------------------------------------------------- +// CDialingExtensionObserver::SearchL +// +// +// --------------------------------------------------------------------------- +// +void CDialingExtensionObserver::SearchL() + { + TPtrC searchString = iNumberEntry->Text(); + if ( searchString.Length() ) + { + iDialingExtension->SetInputL( searchString ); + } + } + +// end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/cenrep/200212A0.txt Binary file phoneuis/easydialing/cenrep/200212A0.txt has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/conf/easydialing.confml Binary file phoneuis/easydialing/conf/easydialing.confml has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/conf/easydialing_200212A0.crml Binary file phoneuis/easydialing/conf/easydialing_200212A0.crml has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/data/200212A0.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/data/200212A0.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2010 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: Easy dialing ECom registry info. +* +*/ + +// INCLUDES + +#include +#include "ExtrStandbyScrConst.h" +#include "easydialingconstants.hrh" + +RESOURCE REGISTRY_INFO theInfo + { + resource_format_version = RESOURCE_FORMAT_VERSION_2; + + dll_uid = EASYDIALING_PLUGIN_DLL_UID; + + interfaces = + { + INTERFACE_INFO + { + interface_uid = EASYDIALING_PLUGIN_IF_UID; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = EASYDIALING_PLUGIN_ECOM_IMPL_UID; + version_no = 1; + display_name = "Easy dialing"; + default_data = ""; + opaque_data = ""; + rom_only = 0; + } + }; + } + }; + } + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/data/easydialing_stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/data/easydialing_stub.pkg Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,23 @@ +; easydialing_stub.pkg +; +;Language - standard language definitions +&EN + +; standard SIS file header +#{"Easy dialing plug-in"},(0x200212A0),1,0,0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +""-"z:\sys\bin\easydialingplugin.dll" +""-"z:\resource\plugins\easydialingplugin.r*" +""-"z:\resource\easydialingpluginresources.r*" +""-"z:\resource\apps\easydialing.mif" + +""-"z:\sys\bin\edcontactor.dll" +""-"z:\resource\edcontactor.r*" + +""-"z:\system\data\10202BE9\200212A0.txt" \ No newline at end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/data/easydialing_stub.sis Binary file phoneuis/easydialing/data/easydialing_stub.sis has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/data/easydialingpluginresources.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/data/easydialingpluginresources.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,213 @@ +/* +* Copyright (c) 2010 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: Easy dialing resources. +* +*/ + +// RESOURCE IDENTIFIER + +NAME EDPL + + +// INCLUDES + +#include +#include + +#include +#include +#include +#include "easydialing.loc" + +#include +#include "easydialingcommands.hrh" + + +// CONSTANTS + +// MACROS + +// RESOURCE DEFINITIONS + +// --------------------------------------------------------- +// +// Define the resource file signature +// This resource should be empty. +// +// --------------------------------------------------------- +// + +RESOURCE RSS_SIGNATURE { } + +// --------------------------------------------------------- +// +// r_easydialing_cba +// Contains softkey definitions for easy dialing. +// +// --------------------------------------------------------- +// +RESOURCE CBA r_easydialing_cba + { + buttons = + { + CBA_BUTTON + { + id = EPhoneCmdOptions; + txt = text_softkey_option; + }, + CBA_BUTTON + { + id = EPhoneCmdBack; + txt = text_softkey_exit; + }, + CBA_BUTTON + { + id = EAknSoftkeyOpen; + txt = text_softkey_open; + } + }; + } + + +// ----------------------------------------------------------------------------- +// +// r_easydialing_menubar +// Menubar for easy dialing when action menu is closed. +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_BAR r_easydialing_menubar + { + titles = + { + MENU_TITLE { menu_pane = r_easydialing_menu; } + }; + } + + +// ----------------------------------------------------------------------------- +// +// r_easydialing_menu +// Menu pane +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_easydialing_menu + { + items = + { + MENU_ITEM + { + command = EEasyDialingOpenContact; + txt = qtn_options_open; + }, + MENU_ITEM + { + command = EEasyDialingVoiceCall; + cascade = r_easydialing_options_call_menu; + txt = text_number_call; + }, + MENU_ITEM + { + command = EEasyDialingSendMessage; + txt = qtn_nren_send_message; + }, + MENU_ITEM + { + txt = qtn_easydial_option_submenu_title; + cascade = r_easydialing_options_on_off_cascade_menu; + }, + MENU_ITEM + { + command = EPhoneDialerCmdHelp; + txt = qtn_options_help; + }, + MENU_ITEM + { + command = EPhoneCmdBack; + txt = qtn_options_exit; + } + }; + } + + +// --------------------------------------------------------- +// +// r_easydialing_options_call_menu +// Number Acquisition view options call menu pane. +// +// --------------------------------------------------------- +// +RESOURCE MENU_PANE r_easydialing_options_call_menu + { + items= + { + MENU_ITEM + { + command = EEasyDialingVoiceCall; + txt = qtn_call_sub_voice; + }, + MENU_ITEM + { + command = EEasyDialingVideoCall; + txt = qtn_call_sub_video; + } + }; + } + +//---------------------------------------------------------------------------- +// r_easydialing_options_on_off_menu_item +// +// Menu item for setting Easy dialing on/off. +// --------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_easydialing_options_on_off_menu_item + { + items = + { + MENU_ITEM + { + txt = qtn_easydial_option_submenu_title; + cascade = r_easydialing_options_on_off_cascade_menu; + } + }; + } + +//---------------------------------------------------------------------------- +// r_easydialing_options_on_off_cascade_menu +// +// Submenu for setting Easy dialing on/off. +// --------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_easydialing_options_on_off_cascade_menu + { + items = + { + MENU_ITEM + { + command = EEasyDialingOn; + txt = qtn_easy_dialing_on; + flags = EEikMenuItemRadioStart; + }, + MENU_ITEM + { + command = EEasyDialingOff; + txt = qtn_easy_dialing_off; + flags = EEikMenuItemRadioEnd; + } + }; + } + + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/bwins/edcontactoru.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/bwins/edcontactoru.def Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,6 @@ +EXPORTS + ?ExecuteServiceL@CEDContactorService@@QAEXABVTCSParameter@1@@Z @ 1 NONAME ; void CEDContactorService::ExecuteServiceL(class CEDContactorService::TCSParameter const &) + ?IsBusy@CEDContactorService@@QBEHXZ @ 2 NONAME ; int CEDContactorService::IsBusy(void) const + ?NewL@CEDContactorService@@SAPAV1@PAVMEDContactorObserver@@@Z @ 3 NONAME ; class CEDContactorService * CEDContactorService::NewL(class MEDContactorObserver *) + ?CancelService@CEDContactorService@@QAEXXZ @ 4 NONAME ; void CEDContactorService::CancelService(void) + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/data/edcontactor.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/data/edcontactor.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,60 @@ +/* +* Copyright (c) 2010 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: Resource file for CCA Contactor Service +* +*/ + + +// RESOURCE IDENTIFIER +NAME EDCO // 4 letter ID + +// INCLUDES +#include +#include +#include +#include + + +#include +#include + +// RESOURCE DEFINITIONS + +// --------------------------------------------------------------------------- +// RSS_SIGNATURE +// --------------------------------------------------------------------------- +// +RESOURCE RSS_SIGNATURE {} + +// -------------------------------------------------------------------------- +// AIW_INTEREST +// Contact selection interest. +// -------------------------------------------------------------------------- +// +RESOURCE AIW_INTEREST r_edcontactorservice_contact_selection_interest + { + items= + { + AIW_CRITERIA_ITEM + { + id = KAiwCmdSelect; // serviceCmd used here also as ID + serviceCmd = KAiwCmdSelect; + contentType = EGenericParamContactLinkArrayStr; + serviceClass = KAiwClassBase; + maxProviders = 1; + } + }; + } + +//End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/eabi/edcontactoru.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/eabi/edcontactoru.def Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,6 @@ +EXPORTS + _ZN19CEDContactorService15ExecuteServiceLERKNS_12TCSParameterE @ 1 NONAME + _ZN19CEDContactorService4NewLEP20MEDContactorObserver @ 2 NONAME + _ZNK19CEDContactorService6IsBusyEv @ 3 NONAME + _ZN19CEDContactorService13CancelServiceEv @ 4 NONAME + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,24 @@ +/* +* Copyright (c) 2010 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: Easy dialing contactor module bld.inf. +* +*/ + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_MMPFILES +edcontactor.mmp diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/group/edcontactor.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/group/edcontactor.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,76 @@ +/* +* Copyright (c) 2010 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: Easy dialing contactor module project file. +* +*/ + +#include +#include + + +TARGET edcontactor.dll +TARGETTYPE dll +UID 0x1000008d 0x200212A3 +VENDORID VID_DEFAULT +CAPABILITY CAP_CLIENT_DLL NetworkServices NetworkControl + +USERINCLUDE ../inc +USERINCLUDE ../../inc + +SOURCEPATH ../src +SOURCE edcontactorservice.cpp +SOURCE edcontactorserviceoperator.cpp +SOURCE edcontactorpopuphandler.cpp + +SOURCE edcontactor.cpp +SOURCE edcontactoroperation.cpp +SOURCE edcontactorcalloperation.cpp +SOURCE edcontactorunieditoroperation.cpp +SOURCE edcontactoremailoperation.cpp +SOURCE edcontactorimoperation.cpp +SOURCE edcontactorvoipoperation.cpp +SOURCE edphonecall.cpp +SOURCE edcontactorvideocalloperation.cpp +SOURCE edmsgeditors.cpp + +// resources +START RESOURCE ../data/edcontactor.rss +HEADER +TARGETPATH RESOURCE_FILES_DIR +LANGUAGE_IDS +END + + +APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE /epoc32/include/ecom + +LIBRARY cone.lib +LIBRARY ws32.lib +LIBRARY euser.lib +LIBRARY efsrv.lib +LIBRARY bafl.lib +LIBRARY aiwdialdata.lib //AIW +LIBRARY commonengine.lib +LIBRARY servicehandler.lib //AIW +LIBRARY sendui.lib +LIBRARY ecom.lib +LIBRARY serviceprovidersettings.lib +LIBRARY apgrfx.lib +LIBRARY avkon.lib +LIBRARY eikcore.lib +DEBUGLIBRARY flogger.lib + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactor.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2010 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: Class for launching the different communication methods +* +*/ + + +#ifndef EDCONTACTORSERVICE_H +#define EDCONTACTORSERVICE_H + +// INCLUDES +#include +#include +// CLASS DECLARATION + +/** + * Class for launching communication methods + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactor) : CBase + { +public: + /** + * Starts a communication method. + * + * @param aCommMethod The communication method. + * @param aParam Parameter for the communication, for example phone number or e-mail address. + * @param aName Name of the contact which the parameter is from, for example for the sms/mms editor's to-field (optional) + * @param aForcedService Should the service be forced or not, relevant in voice call set-up. + * @param aServiceID The service ID for the VoIP call comm method, has no effect and can be left out for other comm methods + */ + static void ExecuteServiceL(VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommMethod, const TDesC& aParam, + const TDesC& aName = KNullDesC, TBool aForcedService = EFalse, TUint32 aServiceId = 0); + + }; + +#endif // EDCONTACTORSERVICE_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorcalloperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorcalloperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,92 @@ +/* +* Copyright (c) 2010 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: Class implementing the call operation +* +*/ + + +#ifndef EDCONTACTORCALLOPERATION_H +#define EDCONTACTORCALLOPERATION_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION +class CEDContactorOperation; + +/** + * Class implementing the call operation + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorCallOperation) : public CEDContactorOperation + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CEDContactorCallOperation(); + + /** + * Two-phased constructor. + * + * @param aParam The phone number to call. + * @param aForcedCallType Should (voice) call be initiated as forced cs call or not. + */ + static CEDContactorCallOperation* NewL(const TDesC& aParam, TBool aForcedCallType); + + /** + * Two-phased constructor. + * + * @param aParam The phone number to call. + * @param aForcedCallType Should (voice) call be initiated as forced cs call or not. + */ + static CEDContactorCallOperation* NewLC(const TDesC& aParam, TBool aForcedCallType); + + /** + * Executes the operation (makes the call) + */ + virtual void ExecuteLD(); + +private: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam The phone number to call. + * @param aForcedCallType Should (voice) call be initiated as forced cs call or not. + */ + CEDContactorCallOperation(const TDesC& aParam, TBool aForcedCallType); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL(); + +private: + + /** Perform voice call as forced cs call or not.*/ + TBool iForcedCallType; + }; + +#endif // EDCONTACTORCALLOPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactoremailoperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactoremailoperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,88 @@ +/* +* Copyright (c) 2010 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: Class implementing the email operation +* +*/ + + +#ifndef EDCONTACTOREMAILOPERATION_H +#define EDCONTACTOREMAILOPERATION_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION +class CEDContactorOperation; + +/** + * Class implementing the email operation + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorEmailOperation) : public CEDContactorOperation + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CEDContactorEmailOperation(); + + /** + * Two-phased constructor. + * + * @param aParam The address to send email to. + * @param aName The name of the contact, to be shown in the "to" field + */ + static CEDContactorEmailOperation* NewL(const TDesC& aParam, const TDesC& aName); + + /** + * Two-phased constructor. + * + * @param aParam The address to send email to. + * @param aName The name of the contact, to be shown in the "to" field + */ + static CEDContactorEmailOperation* NewLC(const TDesC& aParam, const TDesC& aName); + + /** + * Executes the operation (starts the email editor) + */ + virtual void ExecuteLD(); + +private: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam The address to send email to. + * @param aName The name of the contact, to be shown in the "to" field + */ + CEDContactorEmailOperation(const TDesC& aParam, const TDesC& aName); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL(); + + }; + +#endif // EDCONTACTOREMAILOPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorheaders.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorheaders.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,75 @@ +/* +* Copyright (c) 2010 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: ccacontactor's headers +* +*/ + + +#ifndef __EDCONTACTORHEADERS_H__ +#define __EDCONTACTORHEADERS_H__ + + +// Constants +#include +_LIT( KColon, ":" ); + +// system +#include +#include +#include +#include +#include +#include +#include + +//Phbk +#include + +// AIW +#include +#include +#include +#include +#include +#include +#include + + +//SPSettings +#include +#include + +//Sendui +#include +#include +#include +#include +#include + +//IM plugin +#include + +//own +#include "edcontactor.h" +#include "edcontactoroperation.h" +#include "edcontactorcalloperation.h" +#include "edcontactorvideocalloperation.h" +#include "edcontactorunieditoroperation.h" +#include "edcontactoremailoperation.h" +#include "edcontactorvoipoperation.h" +#include "edcontactorimoperation.h" +#include "edmsgeditors.h" +#include "edphonecall.h" + +#endif // __EDCONTACTORHEADERS_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorimoperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorimoperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,138 @@ +/* +* Copyright (c) 2010 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: Class implementing the instant messaging operation +* +*/ + + +#ifndef EDCONTACTORIMOPERATION_H +#define EDCONTACTORIMOPERATION_H + +// INCLUDES +#include +#include + + +// CLASS DECLARATION +class CCmsContactorImPluginBase; +class CSPSettings; +class CEDContactorOperation; + +/** + * Class implementing the instant messaging operation + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorIMOperation) : public CEDContactorOperation + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CEDContactorIMOperation(); + + /** + * Two-phased constructor. + * + * @param aParam The IM "address" to send the message to + */ + static CEDContactorIMOperation* NewL(const TDesC& aParam); + + /** + * Two-phased constructor. + * + * @param aParam The IM "address" to send the message to + */ + static CEDContactorIMOperation* NewLC(const TDesC& aParam); + + /** + * Executes the operation (opens the message editor) + */ + virtual void ExecuteLD(); + +private: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam The IM "address" to send the message to + */ + CEDContactorIMOperation(const TDesC& aParam); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL(); + +private: + /** + * Resolve IM Launcher ECom UID + * + * @since S60 v5.0 + * @param aServiceId service id + * @return ECom UID + */ + TUid ResolveEcomUidL( const TDesC& aServiceId ); + + /** + * Resolve IM Launcher ECom UID + * + * @since S60 v5.0 + * @param aServiceId service id + * @return Ecom UId in interegr + */ + TInt DoResolveEcomUidL( const TDesC& aServiceId ); + + /** + * Load the ECom plugin + * + * @since S60 v5.0 + * @param aUidImp implementation UID + * @param aXspId service provider id + */ + void LoadEcomL( TUid aUidImp, const TDesC& aXspId ); + + /** + * Extracts service part from XspId + * + * @since S60 v5.0 + * @param aXspId service provider id + * @return service part (uri scheme part) + */ + TPtrC ExtractService( const TDesC& aXspId ); +private: + + /** + * Im Plugin. + * OWN + */ + CCmsContactorImPluginBase* iPlugin; + + /** + * Service Provider Settings + * OWN + */ + CSPSettings* iSPSettings; + + }; + +#endif // EDCONTACTORIMOPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactoroperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactoroperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,65 @@ +/* +* Copyright (c) 2010 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: Base class for communication method launching operations +* +*/ + + +#ifndef EDCONTACTOROPERATION_H +#define EDCONTACTOROPERATION_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION + +/** + * Base class for communication method launching operations + */ +NONSHARABLE_CLASS(CEDContactorOperation) : public CBase + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + virtual ~CEDContactorOperation(); + + /** + * Executes the operation + */ + virtual void ExecuteLD()=0; + +protected: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam Communication parameter, for example phone number or e-mail address + * @param aName Name of the contact to which the communication is started (optional) + */ + CEDContactorOperation(const TDesC& aParam, const TDesC& aName = KNullDesC); + +protected: + + const TDesC& iParam; + + const TDesC& iName; + + }; + +#endif // EDCONTACTOROPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorpopuphandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorpopuphandler.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,137 @@ +/* +* Copyright (c) 2010 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: Class for handling popup query. +* +*/ + + +#ifndef EDCONTACTORPOPUPHANDLER_H +#define EDCONTACTORPOPUPHANDLER_H + +#include + +//FORWARD DECLERATIONS +class CAiwServiceHandler; +class CCoeEnv; + +/** + * CEDContactorPopupHandler + * Handling launch of popup query. + * + * @code + * + * @endcode + * + * @lib ccacontactorservice + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorPopupHandler) : + public CBase, + public MAiwNotifyCallback + { + +public: + + /** + * Two-phased constructor. + */ + static CEDContactorPopupHandler* NewL(); + + /** + * Destructor. + */ + virtual ~CEDContactorPopupHandler(); + + /** + * Launch popup. + * + * Leaves KErrNotFound if field data not found, + * KErrCancel if popup canceled + * KErrAbort if red key pressed + * KErrGeneral if error occurred + * + * @since S60 5.0 + * @param aCommAddressSelectType: Select Type. + * @param aUseDefaults: Is default functionality enabled. + */ + TDesC& LaunchPopupL( + const TDesC8& aContactLinkArray, + TAiwCommAddressSelectType aCommAddressSelectType, + TBool aUseDefaults); + + void ClosePopupL(); + +private: + + // from base class MAiwNotifyCallback + TInt HandleNotifyL(TInt aCmdId, TInt aEventId, + CAiwGenericParamList& aEventParamList, + const CAiwGenericParamList& aInParamList); + +private: + /** + * Constructor. + */ + CEDContactorPopupHandler(); + void ConstructL(); + +private: //new methods + void PrepareResourcesL(); + void ReadFieldDataL(CAiwGenericParamList& aEventParamList); + void AsyncStop(); + +private: + // data + + /** + * Pointer to AIW service handler + * Own. + */ + CAiwServiceHandler* iServiceHandler; + + /** + * Pointer to scheduler wait. + * Own. + */ + CActiveSchedulerWait* iSchedulerWait; + + /** + * Environment. + * Not Own. + */ + CCoeEnv& iCoeEnv; + + /** + * Offset of loaded resource file. + * Own. + */ + TInt iResourceOffset; + + /** + * Result string from the AIW service. + * Own. + */ + HBufC* iQueryResults; + + /** + * For error handling. + * Own. + */ + TInt iError; + + }; + +#endif // EDCONTACTORPOPUPHANDLER_H + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorservice.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorservice.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,189 @@ +/* +* Copyright (c) 2010 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 is a class for starting services +* +*/ + +#ifndef __EDCONTACTORSERVICE_H__ +#define __EDCONTACTORSERVICE_H__ + +// INCLUDES +#include +#include +#include + +//FORWARD DECLARATIONS + +class CEDContactorServiceOperator; +class MEDContactorObserver; + + +/** + * CEDContactorService + * + * Class for starting services of CCA contactor service. + * @code + * HBufC* fullName = GetFullNameLC(); + * CVPbkContactLinkArray* linkArray = CVPbkContactLinkArray::NewLC(); + * linkArray->AppendL(iContactLink); + * HBufC8* streamedArray = linkArray->PackLC(); + * + * //Set control flags. + * TUint flags; + * flags |= CEDContactorService::TCSParameter::EEnableDefaults; + * + * CEDContactorService::TCSParameter params(VPbkFieldTypeSelectorFactory::EVoiceCallSelector, *streamedArray, flags, *fullName); + * CEDContactorService::ExecuteServiceL(params); + * + * CleanupStack::PopAndDestroy(3); //linkArray, streamedArray, fullName + * + * @endcode + * + * @lib CEDContactorService + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorService) : public CBase + { +public: + + /** + * Parameter class for the service. + * + * @since S60 v5.0 + */ + class TCSParameter + { + public: + + /** Flags for controlling CCA Contactor Service */ + enum TControlFlags + { + /** + * Enable defaults. If this is set, AIW popup query will automatically search possible + * default settings and if found one, it doesn't show selection query at all. + */ + EEnableDefaults = 0x0001, + + /** + * Execute service as forced. If this is set, then voice call will be + * executed as forced cs voice call. Doesn't affect other services currently. + */ + EForcedService = 0x0002 + }; + + /* + * Constructor + */ + inline TCSParameter( + VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommTypeSelector, + TDesC8& aContactLinkArray, TUint aControlFlag, TDesC& aFullName) : + iCommTypeSelector(aCommTypeSelector), + iContactLinkArray(aContactLinkArray), + iControlFlag(aControlFlag), + iFullName(aFullName) + { + }; + + /* + * Enumeration for inticating which communication method is wanted to use. + */ + VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector iCommTypeSelector; + + /* + * Streamed contact link array of contact who will be communicated at. + */ + TDesC8& iContactLinkArray; + + /** + * Flag for controlling behaviour of service. Currently only set of default + * and forced service supported. + */ + TUint iControlFlag; + + /* + * Some communication methods requires contacts name order to use services. + * (for example mms/sms editor) + */ + TDesC& iFullName; + }; + + /** + * + */ + IMPORT_C static CEDContactorService* NewL( MEDContactorObserver* aObserver ); + + /** + * Destructor. + */ + virtual ~CEDContactorService(); + + /** + * Start communication service. + * + * If the contactlink contains a multiple contact fields for selected communication + * method, the executed service will launch Phbk AIW selection popup. User have to select + * wanted field to be used for communication. + * The communication method is defined by TVPbkCommTypeSelector. + * After selection, communication is automatically started by the service. + * + * @see TVPbkCommTypeSelector from VPbkFieldTypeSelectorFactory.h. + * Leaves KErrArgument if given parameter doesn't have valid values. + * + * @since S60 5.0 + * @param aParameter: The Launch Parameter. + */ + IMPORT_C void ExecuteServiceL(const TCSParameter& aParameter); + + /** + * Cancels an ongoing service execution. + */ + IMPORT_C void CancelService(); + + /** + * Is contactor service busy. + */ + IMPORT_C TBool IsBusy() const; + +private: + /** + * Constructor. + */ + CEDContactorService( MEDContactorObserver* aObserver ); + + /** + * + */ + void ConstructL(); + +private: + // data + + /** + * + */ + CEDContactorServiceOperator* iOperator; + + /** + * ETrue, if command is being handled at the moment + */ + TBool iCommandIsBeingHandled; + + TInt iResourceFileOffset; + + MEDContactorObserver* iObserver; + }; + +#endif //__EDCONTACTORSERVICE_H__ + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorserviceheaders.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorserviceheaders.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,59 @@ +/* +* Copyright (c) 2010 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: ccacontactorservice's headers +* +*/ + + +#ifndef __EDCONTACTORSERVICEHEADERS_H__ +#define __EDCONTACTORSERVICEHEADERS_H__ + +// Constants +#include +#define KEDContactorServiceLoggerFile CCA_L("ccacontactorservice.txt") +_LIT( KEDContactorServiceResourceFileName, "\\resource\\ccacontactorservicersc.rsc" ); +_LIT( KColon, ":" ); + + +// system +#include +#include +#include +#include + +//Phbk +#include + +// AIW +#include +#include +#include +#include + +//SPSettings +#include +#include + +//own +#include "edcontactorservice.h" +#include "edcontactorserviceoperator.h" +#include "medcontactorobserver.h" +#include "edcontactorpopuphandler.h" +#include + +#include "edcontactor.h" + +#include "easydialinglogger.h" + +#endif // __EDCONTACTORSERVICEHEADERS_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorserviceoperator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorserviceoperator.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,175 @@ +/* +* Copyright (c) 2010 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: Class for handling service logic. +* +*/ + + +#ifndef EDCONTACTORSERVICEHANDLER_H +#define EDCONTACTORSERVICEHANDLER_H + +#include +#include + +//FORWARD DECLERATIONS +class CEDContactorPopupHandler; + +/** + * CEDContactorServiceOperator + * Handling logic of service. + * + * @code + * + * @endcode + * + * @lib ccacontactorservice + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorServiceOperator) : public CBase + { + +public: + + /** + * Two-phased constructor. + */ + static CEDContactorServiceOperator* NewLC( MEDContactorObserver* aObserver ); + + static CEDContactorServiceOperator* NewL( MEDContactorObserver* aObserver ); + + /** + * Destructor. + */ + virtual ~CEDContactorServiceOperator(); + +public: + //new methods + + /** + * Start service. + * All leaves are trapped. + * + * @since S60 5.0 + */ + void Execute(const CEDContactorService::TCSParameter& aParameter); + + /** + * Cancel an ongoing operation. + */ + void Cancel(); + +private: + /** + * Constructor. + */ + CEDContactorServiceOperator( MEDContactorObserver* aObserver ); + + void ConstructL(); + +private: //new methods + /** + * Helper class for handling special cases. + * Currently VOIP ServiceID implemented. + * + * @param aFieldData: Selected field. + * @since S60 5.0 + */ + void ResolveSpecialCasesL(const TDesC& aFieldData); + + /** + * Helper class for searching ServiceID + * + * @param aFieldData: Selected field. + * @return ServiceId + * @since S60 5.0 + */ + TUint32 ResolveServiceIdL(const TDesC& aFieldData); + + /** + * Helper class for parsing xSP identification. + * + * @param aFieldData: Selected field. + * @param aXSPId: Found xSP ID. + * @return boolean if xSP is found. + * @since S60 5.0 + */ + TBool ExtractServiceL(const TDesC& aFieldData, TPtrC& aXSPId); + + /** + * Helper class for searching ServiceId from spsettings + * + * @param aFieldData: Selected field. + * @return ServiceId + * @since S60 5.0 + */ + TUint32 SearchServiceIdL(const TDesC& aFieldData); + + /** + * Helper class for checking if MSISDN addressing is supported. + * + * @return ServiceId + * @since S60 5.0 + */ + TUint32 ResolveMSISDNAddressingSupportedL(); + + /** + * Helper class for starting communication method. + * + * @param aFieldData: Selected field. + * @since S60 5.0 + */ + void LaunchCommunicationMethodL(const TDesC& aFieldData); + + /** + * Helper class for mapping AIW enum & selector factory enums together. + * + * @param aCommTypeSelector: Selector factory enum. + * @return AIW communication enum. + * @since S60 5.0 + */ + TAiwCommAddressSelectType CommunicationEnumMapper( + VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommTypeSelector); + + +private: + // data + + /** + * Pointer to popup handler class + * Own. + */ + CEDContactorPopupHandler* iPopupHandler; + + /** + * Reference to the launch parameter. + * Not own. + */ + const CEDContactorService::TCSParameter* iParameter; + + /** + * ServiceId for VOIP service. + * Own. + */ + TUint32 iServiceId; + + /** + * Observer for contactor events. + * Not owned. + */ + MEDContactorObserver* iObserver; + }; + +#endif // EDCONTACTORSERVICEHANDLER_H + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorunieditoroperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorunieditoroperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,88 @@ +/* +* Copyright (c) 2010 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: Class implementing the unieditor operation (SMS/MMS) +* +*/ + + +#ifndef EDCONTACTORUNIEDITOROPERATION_H +#define EDCONTACTORUNIEDITOROPERATION_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION +class CEDContactorOperation; + +/** + * Class implementing the unieditor operation (SMS/MMS) + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib ccappcommlauncherplugin.dll + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorUniEditorOperation) : public CEDContactorOperation + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CEDContactorUniEditorOperation(); + + /** + * Two-phased constructor. + * + * @param aParam The phone number to send the message to + * @param aName The name of the contact, to be shown in the "to" field + */ + static CEDContactorUniEditorOperation* NewL(const TDesC& aParam, const TDesC& aName); + + /** + * Two-phased constructor. + * + * @param aParam The phone number to send the message to + * @param aName The name of the contact, to be shown in the "to" field + */ + static CEDContactorUniEditorOperation* NewLC(const TDesC& aParam, const TDesC& aName); + + /** + * Executes the operation (starts editor for sending the message) + */ + virtual void ExecuteLD(); + +private: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam The phone number to send the message to + * @param aName The name of the contact, to be shown in the "to" field + */ + CEDContactorUniEditorOperation(const TDesC& aParam, const TDesC& aName); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL(); + + }; + +#endif // EDCONTACTORUNIEDITOROPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorvideocalloperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorvideocalloperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2010 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: Class implementing the video call operation +* +*/ + + +#ifndef EDCONTACTORVIDEOCALLOPERATION_H +#define EDCONTACTORVIDEOCALLOPERATION_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION +class CEDContactorOperation; + +/** + * Class implementing the video call operation + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorVideocallOperation) : public CEDContactorOperation + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CEDContactorVideocallOperation(); + + /** + * Two-phased constructor. + * + * @param aParam The phone number to video call + */ + static CEDContactorVideocallOperation* NewL(const TDesC& aParam); + + /** + * Two-phased constructor. + * + * @param aParam The phone number to video call + */ + static CEDContactorVideocallOperation* NewLC(const TDesC& aParam); + + /** + * Executes the operation (makes the video call) + */ + virtual void ExecuteLD(); + +private: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam The phone number to video call + */ + CEDContactorVideocallOperation(const TDesC& aParam); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL(); + + }; + +#endif // EDCONTACTORVIDEOCALLOPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edcontactorvoipoperation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edcontactorvoipoperation.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,93 @@ +/* +* Copyright (c) 2010 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: Class implementing the voip operation +* +*/ + + +#ifndef EDCONTACTORVOIPOPERATION_H +#define EDCONTACTORVOIPOPERATION_H + +// INCLUDES +#include +#include + +// CLASS DECLARATION +class CEDContactorOperation; + +/** + * Class implementing the voip operation + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDContactorVOIPOperation) : public CEDContactorOperation + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CEDContactorVOIPOperation(); + + /** + * Two-phased constructor. + * + * @param aParam The address to make the voip call to + * @param aServiceID The voip service ID + */ + static CEDContactorVOIPOperation* NewL(const TDesC& aParam, TUint32 aServiceID); + + /** + * Two-phased constructor. + * + * @param aParam The address to make the voip call to + * @param aServiceID The voip service ID + */ + static CEDContactorVOIPOperation* NewLC(const TDesC& aParam, TUint32 aServiceID); + + /** + * Executes the operation (launches the voip call) + */ + virtual void ExecuteLD(); + +private: + + /** + * Constructor for performing 1st stage construction + * + * @param aParam The address to make the voip call to + * @param aServiceID The voip service ID + */ + CEDContactorVOIPOperation(const TDesC& aParam, TUint32 aServiceID); + + /** + * EPOC default constructor for performing 2nd stage construction + */ + void ConstructL(); + + /** + * The voip service id + */ + TUint32 iServiceId; + + }; + +#endif // EDCONTACTORVOIPOPERATION_H +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edmsgeditors.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edmsgeditors.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2010 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: Launching Editors. +* +*/ + + +#ifndef __EDMSGEDITORS_H__ +#define __EDMSGEDITORS_H__ + +#include + +/** + * Helper class for launching message editors + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CEDMsgEditors) : public CBase + { +public: + + /** + * Launch a msg editor. + * + * @param TUid Service uid (MTM) + * @param TDesC& Address where to send the msg + * @param TDesC& Alias name for msg editor + * + * @return void + */ + static void ExecuteL( const TUid aServiceUid, const TDesC& aAddress, + const TDesC& aName); + + }; + +#endif // __EDMSGEDITORS_H__ +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/edphonecall.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/edphonecall.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,75 @@ +/* +* Copyright (c) 2010 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: Launching Calls. +* +*/ + + +#ifndef __EDPHONECALL_H__ +#define __EDPHONECALL_H__ + +#include + +// CLASS DECLARATION +class CAiwDialDataExt; + + +/** + * Helper class for launching calls (voice, voip & video) + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib + * @since S60 v5.0 + */ +class CEDPhoneCall : public CBase + { +public: + + /** + * Type of call + */ + enum TEDPhoneCallType { ECCACallTypeVoice, ECCACallTypeVoIP, ECCACallTypeVideo }; + + /** + * Establish a call by using a phone number (or voip address) + * + * @param TDesC8& Phone number + * @param aCallType Is this a cellular Voice, VoIP, or Video call + * @param aForceCallType Whether to execute call type as forced one. + * Currently only voice call type can be variated with this. + * + * @return void + */ + static void ExecuteL( const TDesC& aPhoneNumber, TEDPhoneCallType aCallType, + TBool aForcedCallType, + TUint32 aServiceId = 0); + +private: + + /** + * Establish a call by using a phone number + * + * @param TDesC8& Phone number + * @param TBool Is this a VoIP call + * + * @return void + */ + static void DoAIWCallL( CAiwDialDataExt& aDialData); + }; + +#endif // __EDPHONECALL_H__ +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/inc/medcontactorobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/inc/medcontactorobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,61 @@ +/* +* Copyright (c) 2010 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: Class implementing the abstract contactor observer class. +* +*/ + +#ifndef MEDCONTACTOROBSERVER_H_ +#define MEDCONTACTOROBSERVER_H_ + +/** + * MEDContactorObserver + * + * Observer class for contactor module. + * + * + * + */ + +class MEDContactorObserver + { + +public: + + /* + * Enum for communication events. + */ + typedef enum TEvent_enum + { + /* + * ECommunicationStarted + * Used when communication was normally started. + */ + ECommunicationStarted = 1, + + /* + * ECommunicationCancelled + * Used when + * 1. User cancelled communication when choosing phone number, email, etc. + * 2. When there was no appropriate field in the contact. + */ + ECommunicationCancelled + + } TEvent; + + virtual void InformContactorEvent( TEvent aEvent ) = 0; + }; + + + +#endif /* MEDCONTACTOROBSERVER_H_ */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactor.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,63 @@ +/* +* Copyright (c) 2010 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 the ccacontactor +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// EDContactor::ExecuteServiceL() +// ----------------------------------------------------------------------------- +// +void CEDContactor::ExecuteServiceL(VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommMethod, const TDesC& aParam, const TDesC& aName, + TBool aForcedService, TUint32 aServiceId) + { + CEDContactorOperation* operation = 0; + + switch (aCommMethod) + { + case VPbkFieldTypeSelectorFactory::EVoiceCallSelector: + operation = CEDContactorCallOperation::NewL(aParam, aForcedService); + break; + + case VPbkFieldTypeSelectorFactory::EVideoCallSelector: + operation = CEDContactorVideocallOperation::NewL(aParam); + break; + case VPbkFieldTypeSelectorFactory::EUniEditorSelector: + operation = CEDContactorUniEditorOperation::NewL(aParam, aName); + break; + case VPbkFieldTypeSelectorFactory::EEmailEditorSelector: + operation = CEDContactorEmailOperation::NewL(aParam, aName); + break; + case VPbkFieldTypeSelectorFactory::EVOIPCallSelector: + operation = CEDContactorVOIPOperation::NewL(aParam, aServiceId); + break; + case VPbkFieldTypeSelectorFactory::EInstantMessagingSelector: + operation = CEDContactorIMOperation::NewL(aParam); + break; + + } + if (operation) + { + operation->ExecuteLD(); + operation = NULL; + } + } +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorcalloperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorcalloperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,89 @@ +/* +* Copyright (c) 2010 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 the call operation +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorCallOperation::CEDContactorCallOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorCallOperation::CEDContactorCallOperation(const TDesC& aParam, + TBool aForcedCallType) : CEDContactorOperation(aParam), + iForcedCallType( aForcedCallType ) + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorCallOperation::~CEDContactorCallOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorCallOperation::~CEDContactorCallOperation() + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorCallOperation::NewLC() +// ----------------------------------------------------------------------------- +// +CEDContactorCallOperation* CEDContactorCallOperation::NewLC(const TDesC& aParam, + TBool aForcedCallType ) + { + CEDContactorCallOperation* self = + new (ELeave)CEDContactorCallOperation(aParam, aForcedCallType); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorCallOperation::NewL() +// ----------------------------------------------------------------------------- +// +CEDContactorCallOperation* CEDContactorCallOperation::NewL(const TDesC& aParam, + TBool aForcedCallType) + { + CEDContactorCallOperation* self = + CEDContactorCallOperation::NewLC(aParam,aForcedCallType); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorCallOperation::ConstructL() +// ----------------------------------------------------------------------------- +// +void CEDContactorCallOperation::ConstructL() + { + + } + +// ----------------------------------------------------------------------------- +// CEDContactorCallOperation::ExecuteLD() +// ----------------------------------------------------------------------------- +// +void CEDContactorCallOperation::ExecuteLD() + { + CleanupStack::PushL(this); + CEDPhoneCall::ExecuteL(iParam, CEDPhoneCall::ECCACallTypeVoice, iForcedCallType ); + CleanupStack::PopAndDestroy(this); + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactoremailoperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactoremailoperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2010 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 the email operation +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorEmailOperation::CEDContactorEmailOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorEmailOperation::CEDContactorEmailOperation(const TDesC& aParam, const TDesC& aName) : + CEDContactorOperation(aParam, aName) + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorEmailOperation::~CEDContactorEmailOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorEmailOperation::~CEDContactorEmailOperation() + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CEDContactorEmailOperation::NewLC() +// ----------------------------------------------------------------------------- +// +CEDContactorEmailOperation* CEDContactorEmailOperation::NewLC(const TDesC& aParam, const TDesC& aName) + { + CEDContactorEmailOperation* self = new (ELeave)CEDContactorEmailOperation(aParam, aName); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorEmailOperation::NewL() +// ----------------------------------------------------------------------------- +// +CEDContactorEmailOperation* CEDContactorEmailOperation::NewL(const TDesC& aParam, const TDesC& aName) + { + CEDContactorEmailOperation* self=CEDContactorEmailOperation::NewLC(aParam, aName); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorEmailOperation::ConstructL() +// ----------------------------------------------------------------------------- +// +void CEDContactorEmailOperation::ConstructL() + { + + } + +// ----------------------------------------------------------------------------- +// CEDContactorEmailOperation::ExecuteLD() +// ----------------------------------------------------------------------------- +// +void CEDContactorEmailOperation::ExecuteLD() + { + CleanupStack::PushL(this); + CEDMsgEditors::ExecuteL(KSenduiMtmSmtpUid, iParam, + iName); + CleanupStack::PopAndDestroy(this); + } +// Enf of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorimoperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorimoperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,186 @@ +/* +* Copyright (c) 2010 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 the im operation +* +*/ + + +// INCLUDE FILES + +#include "edcontactorheaders.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorIMOperation::CEDContactorIMOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorIMOperation::CEDContactorIMOperation(const TDesC& aParam) : CEDContactorOperation(aParam) + { + iPlugin = NULL; + } + +// ----------------------------------------------------------------------------- +// CEDContactorIMOperation::~CEDContactorIMOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorIMOperation::~CEDContactorIMOperation() + { + delete iPlugin; + iPlugin = NULL; + REComSession::FinalClose(); + delete iSPSettings; + } + +// ----------------------------------------------------------------------------- +// CEDContactorIMOperation::NewLC() +// ----------------------------------------------------------------------------- +// +CEDContactorIMOperation* CEDContactorIMOperation::NewLC(const TDesC& aParam) + { + CEDContactorIMOperation* self = new (ELeave)CEDContactorIMOperation(aParam); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorIMOperation::NewL() +// ----------------------------------------------------------------------------- +// +CEDContactorIMOperation* CEDContactorIMOperation::NewL(const TDesC& aParam) + { + CEDContactorIMOperation* self=CEDContactorIMOperation::NewLC(aParam); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorIMOperation::ConstructL() +// ----------------------------------------------------------------------------- +// +void CEDContactorIMOperation::ConstructL() + { + iSPSettings = CSPSettings::NewL(); + } + +// ----------------------------------------------------------------------------- +// CEDContactorIMOperation::ExecuteLD() +// ----------------------------------------------------------------------------- +// +void CEDContactorIMOperation::ExecuteLD() + { + CleanupStack::PushL(this); + TPtrC aXspId = iParam; + + TUid dllUid = ResolveEcomUidL( ExtractService(aXspId) ); + LoadEcomL( dllUid, aXspId ); + CleanupStack::PopAndDestroy(this); + } + +// -------------------------------------------------------------------------- +// CEDContactorIMOperation::ResolveEcomUidL +// -------------------------------------------------------------------------- +// +TUid CEDContactorIMOperation::ResolveEcomUidL( const TDesC& aServiceId ) + { + // Resolve ECom UID from SP settings + TInt launchId = KErrNotFound; + + launchId = DoResolveEcomUidL( aServiceId ); + TUid launchUid = {launchId }; + return launchUid; + } + +// -------------------------------------------------------------------------- +// CEDContactorIMOperation::DoResolveEcomUidL +// -------------------------------------------------------------------------- +// +TInt CEDContactorIMOperation::DoResolveEcomUidL( const TDesC& aServiceId ) + { + // Resolve ECom UID from SP settings + TInt err = KErrNone; + TInt launchId = KErrNotFound; + CDesCArrayFlat* nameArray = NULL; + + RIdArray ids; + CleanupClosePushL( ids ); + + nameArray = new (ELeave) CDesCArrayFlat(2); + CleanupStack::PushL( nameArray ); + + err = iSPSettings->FindServiceIdsL( ids ); + User::LeaveIfError( err ); + err = iSPSettings->FindServiceNamesL( ids, *nameArray ); + User::LeaveIfError( err ); + + TInt count = nameArray->MdcaCount(); + for ( TInt i(0); i < count; i++) + { + // search the mathching service name + TPtrC p = nameArray->MdcaPoint( i ); + if (!p.CompareF( aServiceId )) + { + // We have found the service, now get the plugin id + CSPProperty* IMLaunchIdProperty = CSPProperty::NewLC(); + err = iSPSettings->FindPropertyL( ids[i], ESubPropertyIMLaunchUid, *IMLaunchIdProperty ); + User::LeaveIfError( err ); + err = IMLaunchIdProperty->GetValue( launchId ); + User::LeaveIfError( err ); + CleanupStack::PopAndDestroy( IMLaunchIdProperty ); + break; + } + } + CleanupStack::PopAndDestroy( nameArray ); + CleanupStack::PopAndDestroy( ); // >>> ids + + return launchId; + } + +// -------------------------------------------------------------------------- +// CEDContactorIMOperation::LoadEcomL +// -------------------------------------------------------------------------- +// +void CEDContactorIMOperation::LoadEcomL( TUid aUidImp, const TDesC& aXspId ) + { + TUid destructorId; + + TAny* volatile implementation = + REComSession::CreateImplementationL( aUidImp, + destructorId ); + + iPlugin = reinterpret_cast< CCmsContactorImPluginBase* >( implementation ); + iPlugin->SetDestructorId( destructorId ); + iPlugin->ExecuteL( aXspId ); + } + +// -------------------------------------------------------------------------- +// CEDContactorIMOperation::ExtractService +// -------------------------------------------------------------------------- +// +TPtrC CEDContactorIMOperation::ExtractService( const TDesC& aXspId ) + { + TInt pos = aXspId.Find(KColon); + if ( pos >= 0) + { + // ok input + return aXspId.Left(pos); + } + else + { + // return something in illegal input case + return TPtrC(KNullDesC); + } + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactoroperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactoroperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2010 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 the base class of contactor operations +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorOperation::CEDContactorOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorOperation::CEDContactorOperation(const TDesC& aParam, const TDesC& aName) : iParam(aParam), iName(aName) + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorOperation::~CEDContactorOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorOperation::~CEDContactorOperation() + { + // No implementation required + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorpopuphandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorpopuphandler.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,296 @@ +/* +* Copyright (c) 2010 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: Class for handling popup query. +* +*/ + + +#include +#include +#include +#include +#include + +#include "edcontactorserviceheaders.h" + +#include + +// ================= MEMBER FUNCTIONS ======================= +// + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::NewL +// -------------------------------------------------------------------------- +// +CEDContactorPopupHandler* CEDContactorPopupHandler::NewL() + { + CEDContactorPopupHandler* self = new (ELeave) CEDContactorPopupHandler(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::~CEDContactorPopupHandler +// -------------------------------------------------------------------------- +// +CEDContactorPopupHandler::~CEDContactorPopupHandler() + { + LOGSTRING("CEDContactorPopupHandler::~CEDContactorPopupHandler"); + delete iServiceHandler; + delete iSchedulerWait; + iCoeEnv.DeleteResourceFile (iResourceOffset); + delete iQueryResults; + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::LaunchPopupL +// -------------------------------------------------------------------------- +// +TDesC& CEDContactorPopupHandler::LaunchPopupL( + const TDesC8& aContactLinkArray, + TAiwCommAddressSelectType aCommAddressSelectType, + TBool aUseDefaults ) + { + LOGSTRING("CEDContactorPopupHandler::LaunchPopupL"); + + __ASSERT_ALWAYS (NULL != &aContactLinkArray, User::Leave (KErrArgument)); + __ASSERT_ALWAYS (0 < aContactLinkArray.Size(), User::Leave (KErrArgument)); + + TUint fetchFlags = 0; + + // Stop scheduler just in case this is called while operation is still ongoing. + AsyncStop(); + + // Set service data + TAiwSingleItemSelectionDataV3 data; + + if (!aUseDefaults) + { + fetchFlags |= ::EDoNotUseDefaultField; + } + + data.SetFlags(fetchFlags); + data.SetCommAddressSelectType(aCommAddressSelectType); + CAiwGenericParamList& inParamList = iServiceHandler->InParamListL(); + inParamList.AppendL(TAiwGenericParam(EGenericParamContactSelectionData, + TAiwVariant(TAiwSingleItemSelectionDataV3Pckg(data)))); + + // Set contactlink + inParamList.AppendL(TAiwGenericParam(EGenericParamContactLinkArray, + TAiwVariant(aContactLinkArray))); + + iServiceHandler->ExecuteServiceCmdL(KAiwCmdSelect, inParamList, + iServiceHandler->OutParamListL(), 0, this); + + // Waiting for popup selection. + // Make this whole operation look synchronous + CAknAppUi* appUi = static_cast( iCoeEnv.AppUi() ); + appUi->HandleCommandL( EPhoneCmdBlockingDialogLaunched ); + iSchedulerWait->Start(); + appUi->HandleCommandL( EPhoneCmdBlockingDialogClosed ); + + User::LeaveIfError(iError); + + LOGSTRING("CEDContactorPopupHandler::LaunchPopupL: Done."); + + return *iQueryResults; + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::ClosePopupL +// -------------------------------------------------------------------------- +// +void CEDContactorPopupHandler::ClosePopupL() + { + if ( iSchedulerWait->IsStarted() ) + { + iServiceHandler->ExecuteServiceCmdL( KAiwCmdSelect, + iServiceHandler->InParamListL(), + iServiceHandler->OutParamListL(), + KAiwOptCancel, + this ); + } + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::HandleNotifyL +// -------------------------------------------------------------------------- +// +TInt CEDContactorPopupHandler::HandleNotifyL(TInt aCmdId, TInt aEventId, + CAiwGenericParamList& aEventParamList, + const CAiwGenericParamList& /*aInParamList*/) + { + LOGSTRING("CEDContactorPopupHandler::HandleNotifyL"); + TInt returnValue = KErrNone; + + if (aCmdId == KAiwCmdSelect) + { + switch(aEventId) + { + case KAiwEventCompleted: + { + LOGSTRING("CEDContactorPopupHandler::HandleNotifyL: KAiwEventCompleted"); + // Selection done. + // Read and store results + TRAP(iError, ReadFieldDataL(aEventParamList)); + } + break; + + case KAiwEventCanceled: + LOGSTRING("CEDContactorPopupHandler::HandleNotifyL: KAiwEventCanceled"); + // Selection canceled. + iError = KErrCancel; + break; + + case KAiwEventError: + case KAiwEventStopped: + LOGSTRING("CEDContactorPopupHandler::HandleNotifyL: KAiwEventError or KAiwEventStopped"); + // Error occurred. + iError = KErrGeneral; + break; + + case KAiwEventQueryExit: + iError = KErrAbort; + returnValue = EFalse; // Telephony must not be allowed to be closed down + break; + + default: + LOGSTRING("CEDContactorPopupHandler::HandleNotifyL: Unknown"); + iError = KErrGeneral; + break; + } + // Stop scheduler if service execution has finished. + if ( aEventId != KAiwEventQueryExit ) + { + AsyncStop(); + } + } + + LOGSTRING("CEDContactorPopupHandler::HandleNotifyL: Done."); + return returnValue; + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::CEDContactorPopupHandler +// -------------------------------------------------------------------------- +// +CEDContactorPopupHandler::CEDContactorPopupHandler() : + iCoeEnv(*CCoeEnv::Static()), + iError(KErrNone) + { + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::ConstructL +// -------------------------------------------------------------------------- +// +void CEDContactorPopupHandler::ConstructL() + { + LOGSTRING("CEDContactorPopupHandler::ConstructL"); + + PrepareResourcesL(); + + iServiceHandler = CAiwServiceHandler::NewL(); + iServiceHandler->AttachL(R_EDCONTACTORSERVICE_CONTACT_SELECTION_INTEREST); + + iSchedulerWait = new (ELeave) CActiveSchedulerWait(); + + LOGSTRING("CEDContactorPopupHandler::ConstructL: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::PrepareResourcesL +// -------------------------------------------------------------------------- +// +void CEDContactorPopupHandler::PrepareResourcesL() + { + LOGSTRING("CEDContactorPopupHandler::PrepareResourcesL"); + + // preparing resources for use + TFileName fileName; + fileName.Append (KEDContactorServiceResourceFileName); + + BaflUtils::NearestLanguageFile (iCoeEnv.FsSession (), fileName); + if (ConeUtils::FileExists (fileName)) + { + iResourceOffset = iCoeEnv.AddResourceFileL (fileName); + } + else // not found from user drive, leave badly. + { + LOGSTRING("CEDContactorPopupHandler::PrepareResourcesL: Resource file not exists."); + User::Leave (KErrGeneral); + } + + LOGSTRING("CEDContactorPopupHandler::PrepareResourcesL: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::ReadFieldDataL +// -------------------------------------------------------------------------- +// +void CEDContactorPopupHandler::ReadFieldDataL( + CAiwGenericParamList& aEventParamList) + { + LOGSTRING("CEDContactorPopupHandler::ReadFieldDataL"); + + if (iQueryResults) + { + delete iQueryResults; + iQueryResults = NULL; + } + + TInt index = 1; // Get field data from index 1 + const TAiwGenericParam* param = + aEventParamList.FindFirst(index, EGenericParamContactFieldData); + if (KErrNotFound != index) + { + TInt length = param->Value().AsDes().Length(); + iQueryResults = HBufC::NewL(length); + iQueryResults->Des().Append(param->Value().AsDes()); + + // Data must be found! + if (0 >= iQueryResults->Length()) + { + LOGSTRING("CEDContactorPopupHandler::ReadFieldDataL: Failed to get field data!"); + User::Leave(KErrGeneral); + } + } + else + { + LOGSTRING("CEDContactorPopupHandler::ReadFieldDataL: Not found!"); + User::Leave(KErrNotFound); + } + + LOGSTRING("CEDContactorPopupHandler::ReadFieldDataL: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorPopupHandler::AsyncStop +// -------------------------------------------------------------------------- +// +void CEDContactorPopupHandler::AsyncStop() + { + LOGSTRING("CEDContactorPopupHandler::AsyncStop"); + + if(iSchedulerWait->IsStarted()) + { + iSchedulerWait->AsyncStop(); + } + + LOGSTRING("CEDContactorPopupHandler::AsyncStop: Done."); + } + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorservice.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorservice.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,126 @@ +/* +* Copyright (c) 2010 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 is a class for starting services +* +*/ + +#include + +#include "edcontactorserviceheaders.h" + +_LIT(KContactorResourceFile, "\\resource\\edcontactor.rsc"); + + +// ================= MEMBER FUNCTIONS ======================= + +// -------------------------------------------------------------------------- +// CEDContactorService::ExecuteServiceL +// -------------------------------------------------------------------------- +// +EXPORT_C CEDContactorService* CEDContactorService::NewL( MEDContactorObserver* aObserver ) + { + CEDContactorService* self = new (ELeave) CEDContactorService(aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// -------------------------------------------------------------------------- +// Destructor +// -------------------------------------------------------------------------- +// +CEDContactorService::~CEDContactorService() + { + delete iOperator; + + CCoeEnv* coe = CCoeEnv::Static(); + if( coe ) + { + coe->DeleteResourceFile( iResourceFileOffset ); + } + } + +// -------------------------------------------------------------------------- +// Constructor +// -------------------------------------------------------------------------- +// +CEDContactorService::CEDContactorService( MEDContactorObserver* aObserver ) : +iObserver(aObserver) + { + } + +// -------------------------------------------------------------------------- +// CEDContactorService::ConstructL +// -------------------------------------------------------------------------- +// +void CEDContactorService::ConstructL() + { + CCoeEnv* coe = CCoeEnv::Static(); + if( coe ) + { + TFileName dllFileName; + Dll::FileName( dllFileName ); + + TParse parse; + User::LeaveIfError(parse.Set(KContactorResourceFile, &dllFileName, NULL)); + TFileName resourceFileName(parse.FullName()); + + iResourceFileOffset = coe->AddResourceFileL( resourceFileName ); + } + + iOperator = CEDContactorServiceOperator::NewL( iObserver ); + } + +// -------------------------------------------------------------------------- +// CEDContactorService::ExecuteServiceL +// -------------------------------------------------------------------------- +// +EXPORT_C void CEDContactorService::ExecuteServiceL( + const TCSParameter& aParameter) + { + LOGSTRING("CEDContactorService::ExecuteServiceL(): enter"); + + iCommandIsBeingHandled = ETrue; + + // All leaves are trapped in op class. + iOperator->Execute(aParameter); + + iCommandIsBeingHandled = EFalse; + + LOGSTRING("CEDContactorService::ExecuteServiceL(): exit"); + } + +// -------------------------------------------------------------------------- +// CEDContactorService::CancelService +// -------------------------------------------------------------------------- +// +EXPORT_C void CEDContactorService::CancelService() + { + if ( iOperator ) + { + iOperator->Cancel(); + } + } + +// -------------------------------------------------------------------------- +// CEDContactorService::IsBusy +// -------------------------------------------------------------------------- +// +EXPORT_C TBool CEDContactorService::IsBusy() const + { + return iCommandIsBeingHandled; + } + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorserviceoperator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorserviceoperator.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,493 @@ +/* +* Copyright (c) 2010 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: Class for handling service logic. +* +*/ + +#include +#include + +#include "edcontactorserviceheaders.h" + +// ================= MEMBER FUNCTIONS ======================= +// + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::NewLC +// -------------------------------------------------------------------------- +// +CEDContactorServiceOperator* CEDContactorServiceOperator::NewLC( MEDContactorObserver* aObserver ) + { + CEDContactorServiceOperator* self = new (ELeave) CEDContactorServiceOperator(aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::NewL +// -------------------------------------------------------------------------- +// +CEDContactorServiceOperator* CEDContactorServiceOperator::NewL( MEDContactorObserver* aObserver ) + { + CEDContactorServiceOperator* self = CEDContactorServiceOperator::NewLC(aObserver); + CleanupStack::Pop(self); + return self; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::~CEDContactorServiceOperator +// -------------------------------------------------------------------------- +// +CEDContactorServiceOperator::~CEDContactorServiceOperator() + { + LOGSTRING("CEDContactorServiceOperator::~CEDContactorServiceOperator"); + + delete iPopupHandler; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::Execute +// -------------------------------------------------------------------------- +// +void CEDContactorServiceOperator::Execute( + const CEDContactorService::TCSParameter& aParameter) + { + LOGSTRING("CEDContactorServiceOperator::Execute"); + + iParameter = &aParameter; + + /** + * LOGIC: + * 1. Launch AIW popup + * 2. Special cases: Find out serviceid for voip + * 3. Launch communication service + * + * All actions are trapped here. + */ + TDesC* result = NULL; + TBool useDefaults = EFalse; + + // Check default control flag + if (CEDContactorService::TCSParameter::EEnableDefaults & + iParameter->iControlFlag) + { + useDefaults = ETrue; + } + + // Launch popup + TRAPD(err, result = &iPopupHandler->LaunchPopupL( + iParameter->iContactLinkArray, + CommunicationEnumMapper(iParameter->iCommTypeSelector), + useDefaults)); + + if (KErrNone != err) + { + LOGSTRING1("CEDContactorServiceOperator::ExecuteL: LaunchPopupL: Leaves %d.", err); + + if (iObserver) + { + iObserver->InformContactorEvent(MEDContactorObserver::ECommunicationCancelled); + } + return; + } + + // Resolve special cases + TRAP(err, ResolveSpecialCasesL(*result)); + + if (KErrNone != err) + { + LOGSTRING1("CEDContactorServiceOperator::ExecuteL: ResolveSpecialCasesL: Leaves %d.", err); + + if (iObserver) + { + iObserver->InformContactorEvent(MEDContactorObserver::ECommunicationCancelled); + } + return; + } + + // Launch communication service + TRAP(err, LaunchCommunicationMethodL(*result)); + + if (KErrNone != err) + { + LOGSTRING1("CEDContactorServiceOperator::ExecuteL: LaunchCommunicationMethodL: Leaves %d.", err); + + if (iObserver) + { + iObserver->InformContactorEvent(MEDContactorObserver::ECommunicationCancelled); + } + return; + } + LOGSTRING("CEDContactorServiceOperator::Execute: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::Cancel +// -------------------------------------------------------------------------- +// +void CEDContactorServiceOperator::Cancel() + { + if ( iPopupHandler ) + { + TRAP_IGNORE( iPopupHandler->ClosePopupL() ); + } + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::CEDContactorServiceOperator +// -------------------------------------------------------------------------- +// +CEDContactorServiceOperator::CEDContactorServiceOperator( MEDContactorObserver* aObserver ): + iServiceId((TUint32)KErrNotFound), + iObserver(aObserver) + { + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::ConstructL +// -------------------------------------------------------------------------- +// +void CEDContactorServiceOperator::ConstructL() + { + LOGSTRING("CEDContactorServiceOperator::ConstructL"); + + iPopupHandler = CEDContactorPopupHandler::NewL(); + + LOGSTRING("CEDContactorServiceOperator::ConstructL: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::ResolveSpecialCasesL +// -------------------------------------------------------------------------- +// +void CEDContactorServiceOperator::ResolveSpecialCasesL(const TDesC& aFieldData) + { + LOGSTRING("CEDContactorServiceOperator::ResolveSpecialCasesL"); + + /* + * Currently only VOIP ServiceId is needed to find out. + */ + switch(iParameter->iCommTypeSelector) + { + case VPbkFieldTypeSelectorFactory::EVOIPCallSelector: + iServiceId = ResolveServiceIdL(aFieldData); + break; + } + + LOGSTRING("CEDContactorServiceOperator::ResolveSpecialCasesL: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::ResolveServiceIdL +// -------------------------------------------------------------------------- +// +TUint32 CEDContactorServiceOperator::ResolveServiceIdL(const TDesC& aFieldData) + { + LOGSTRING("CEDContactorServiceOperator::ResolveServiceIdL"); + + __ASSERT_ALWAYS (NULL != &aFieldData, User::Leave (KErrArgument)); + __ASSERT_ALWAYS (0 < aFieldData.Size(), User::Leave (KErrArgument)); + + TUint32 ret = (TUint32)KErrNotFound; + + //LOGIC: + /* + * 1. Find out is there xSP prefix ( voip address for some specific service provider ) + * 2. If there is, search service id + * 3. If not, find out how many services support msisdn + * 4. If only one, find use that service id + * 5. If more than one, do not use service id. User will be prompt which service to use. + */ + + TPtrC result; + + // 1. Find out is there xSP prefix + if (ExtractServiceL(aFieldData, result)) + { + LOGSTRING("CEDContactorServiceOperator::ResolveServiceIdL: ExtractServiceL found."); + + // 2. If there is, search service id + ret = SearchServiceIdL(result); + } + else + { + LOGSTRING("CEDContactorServiceOperator::ResolveServiceIdL: ExtractServiceL not found."); + + // 3. If not, find out how many services support msisdn ( normal phone number ) + ret = ResolveMSISDNAddressingSupportedL(); + if ((TUint32)KErrNotFound != ret) + { + // 4. If only one, find use that service id + // Currently no implementation. + LOGSTRING("CEDContactorServiceOperator::ResolveServiceIdL: ResolveMSISDNAddressingSupportedL only one service."); + + } + else + { + // 5. If more than one or none found, do not use service id. + // User will be asked to choose among services when call is initiated. + // Currently no implementation. + LOGSTRING("CEDContactorServiceOperator::ResolveServiceIdL: ResolveMSISDNAddressingSupportedL more than one service."); + } + } + + LOGSTRING("CEDContactorServiceOperator::ResolveServiceIdL: Done."); + + return ret; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::ExtractServiceL +// -------------------------------------------------------------------------- +// +TBool CEDContactorServiceOperator::ExtractServiceL( + const TDesC& aFieldData, TPtrC& aXSPId) + { + LOGSTRING("CEDContactorServiceOperator::ExtractServiceL"); + + TBool found = EFalse; + + TInt pos = aFieldData.Find(KColon); + if (pos >= 0) + { + // ok input + aXSPId.Set(aFieldData.Left(pos)); + found = ETrue; + } + + LOGSTRING("CEDContactorServiceOperator::ExtractServiceL: Done."); + + return found; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::SearchServiceIdL +// -------------------------------------------------------------------------- +// +TUint32 CEDContactorServiceOperator::SearchServiceIdL(const TDesC& aFieldData) + { + LOGSTRING("CEDContactorServiceOperator::SearchServiceIdL"); + + TUint32 ret = (TUint32)KErrNotFound; + TInt err = KErrNone; + CDesCArrayFlat* nameArray = NULL; + + RIdArray ids; + CleanupClosePushL(ids); + + nameArray = new (ELeave) CDesCArrayFlat(2); + CleanupStack::PushL(nameArray); + + CSPSettings* settings = CSPSettings::NewLC(); + + err = settings->FindServiceIdsL(ids); + User::LeaveIfError(err); + err = settings->FindServiceNamesL(ids, *nameArray); + User::LeaveIfError(err); + + TInt count = nameArray->MdcaCount(); + for (TInt i(0); i < count; i++) + { + // search the mathching service name + TPtrC p = nameArray->MdcaPoint(i); + if (!p.CompareF(aFieldData)) + { + // Service found + ret = ids[i]; + + LOGSTRING("CEDContactorServiceOperator::SearchServiceIdL: Service found."); + break; + } + } + CleanupStack::PopAndDestroy( settings ); + CleanupStack::PopAndDestroy( nameArray ); + CleanupStack::PopAndDestroy( &ids ); + + LOGSTRING("CEDContactorServiceOperator::SearchServiceIdL: Done."); + + return ret; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::ResolveMSISDNAddressingSupportedL +// -------------------------------------------------------------------------- +// +TUint32 CEDContactorServiceOperator::ResolveMSISDNAddressingSupportedL() + { + LOGSTRING("CEDContactorServiceOperator::ResolveMSISDNAddressingSupportedL"); + + /* + * LOGIC: + * -Find out services that support calling normal mobile/telephone numbers + * -If only 1 service, return the serviceid + * -If services are more than 1, then do not use serviceid. + */ + + TInt err = KErrNone; + TInt foundNo = 0; + TUint32 ret = (TUint32)KErrNotFound; + + RIdArray ids; + CleanupClosePushL(ids); + + CSPSettings* settings = CSPSettings::NewLC(); + + err = settings->FindServiceIdsL(ids); + User::LeaveIfError(err); + + CSPProperty* property = CSPProperty::NewLC(); + + TInt count = ids.Count(); + for (TInt i(0); i < count; i++) + { + // Find out property + err = settings->FindPropertyL(ids[i], + EPropertyServiceAttributeMask, *property); + + // If service have property + if (KErrNone == err) + { + // read the value of mask property + TInt mask = 0; + err = property->GetValue(mask); + if (KErrNone == err) + { + if ((mask & ESupportsMSISDNAddressing) && + (mask & ESupportsInternetCall)) + { + // Found one. + ret = ids[i]; + foundNo++; + + }// if mask + }// if err + }// if err + + }// for + + // If more than 1 service, do not use serviceid + + if (1 < foundNo) + { + ret = (TUint32)KErrNotFound; + } + + CleanupStack::PopAndDestroy( property ); + CleanupStack::PopAndDestroy( settings ); + CleanupStack::PopAndDestroy( &ids ); + + LOGSTRING("CEDContactorServiceOperator::ResolveMSISDNAddressingSupportedL: Done."); + return ret; + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::LaunchCommunicationMethodL +// -------------------------------------------------------------------------- +// +void CEDContactorServiceOperator::LaunchCommunicationMethodL( + const TDesC& aFieldData) + { + LOGSTRING("CEDContactorServiceOperator::LaunchCommunicationMethodL"); + + __ASSERT_ALWAYS (NULL != &iParameter->iFullName, User::Leave (KErrArgument)); + __ASSERT_ALWAYS (0 < iParameter->iFullName.Size(), User::Leave (KErrArgument)); + + + TBool forcedService( EFalse ); + + // Check forced service flag + if (CEDContactorService::TCSParameter::EForcedService & + iParameter->iControlFlag) + { + forcedService = ETrue; + } + + // If serviceid found, use it. + if ((TUint32)KErrNotFound != iServiceId) + { + LOGSTRING("CEDContactorServiceOperator::ExecuteL: ExecuteServiceL with serviceid"); + CEDContactor::ExecuteServiceL( + iParameter->iCommTypeSelector, + aFieldData, + iParameter->iFullName, + forcedService, + iServiceId); + } + else + { + LOGSTRING("CEDContactorServiceOperator::ExecuteL: ExecuteServiceL without serviceid"); + CEDContactor::ExecuteServiceL( + iParameter->iCommTypeSelector, + aFieldData, + iParameter->iFullName, + forcedService); + } + + LOGSTRING("CEDContactorServiceOperator::LaunchCommunicationMethodL: Done."); + } + +// -------------------------------------------------------------------------- +// CEDContactorServiceOperator::CommunicationEnumMapper +// -------------------------------------------------------------------------- +// +TAiwCommAddressSelectType CEDContactorServiceOperator::CommunicationEnumMapper( + VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommTypeSelector) + { + LOGSTRING("CEDContactorServiceOperator::CommunicationEnumMapper"); + + TAiwCommAddressSelectType type; + + switch(aCommTypeSelector) + { + case VPbkFieldTypeSelectorFactory::EEmptySelector: + type = EAiwCommEmpty; + break; + + case VPbkFieldTypeSelectorFactory::EVoiceCallSelector: + type = EAiwCommVoiceCall; + break; + + case VPbkFieldTypeSelectorFactory::EUniEditorSelector: + type = EAiwCommUniEditor; + break; + + case VPbkFieldTypeSelectorFactory::EEmailEditorSelector: + type = EAiwCommEmailEditor; + break; + + case VPbkFieldTypeSelectorFactory::EInstantMessagingSelector: + type = EAiwCommInstantMessaging; + break; + + case VPbkFieldTypeSelectorFactory::EVOIPCallSelector: + type = EAiwCommVOIPCall; + break; + + case VPbkFieldTypeSelectorFactory::EVideoCallSelector: + type = EAiwCommVideoCall; + break; + + default: + LOGSTRING("CEDContactorServiceOperator::CommunicationEnumMapper: default -> Empty mapped."); + type = EAiwCommEmpty; + break; + } + + LOGSTRING("CEDContactorServiceOperator::CommunicationEnumMapper: Done."); + + return type; + } + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorunieditoroperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorunieditoroperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2010 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 unieditor (SMS/MMS) operation +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorUniEditorOperation::CEDContactorUniEditorOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorUniEditorOperation::CEDContactorUniEditorOperation(const TDesC& aParam, const TDesC& aName) : + CEDContactorOperation(aParam, aName) + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CEDContactorUniEditorOperation::~CEDContactorUniEditorOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorUniEditorOperation::~CEDContactorUniEditorOperation() + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorUniEditorOperation::NewLC() +// ----------------------------------------------------------------------------- +// +CEDContactorUniEditorOperation* CEDContactorUniEditorOperation::NewLC(const TDesC& aParam, const TDesC& aName) + { + CEDContactorUniEditorOperation* self = new (ELeave)CEDContactorUniEditorOperation(aParam, aName); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorUniEditorOperation::NewL() +// ----------------------------------------------------------------------------- +// +CEDContactorUniEditorOperation* CEDContactorUniEditorOperation::NewL(const TDesC& aParam, const TDesC& aName) + { + CEDContactorUniEditorOperation* self = + CEDContactorUniEditorOperation::NewLC( aParam, aName ); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorUniEditorOperation::ConstructL() +// ----------------------------------------------------------------------------- +// +void CEDContactorUniEditorOperation::ConstructL() + { + + } + +// ----------------------------------------------------------------------------- +// CEDContactorUniEditorOperation::ExecuteLD() +// ----------------------------------------------------------------------------- +// +void CEDContactorUniEditorOperation::ExecuteLD() + { + CleanupStack::PushL(this); + CEDMsgEditors::ExecuteL( KSenduiMtmUniMessageUid, iParam, iName ); + CleanupStack::PopAndDestroy(this); + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorvideocalloperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorvideocalloperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,84 @@ +/* +* Copyright (c) 2010 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 the video call operation +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorVideocallOperation::CEDContactorVideocallOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorVideocallOperation::CEDContactorVideocallOperation(const TDesC& aParam) : CEDContactorOperation(aParam) + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CEDContactorVideocallOperation::~CEDContactorVideocallOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorVideocallOperation::~CEDContactorVideocallOperation() + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorVideocallOperation::NewLC() +// ----------------------------------------------------------------------------- +// +CEDContactorVideocallOperation* CEDContactorVideocallOperation::NewLC(const TDesC& aParam) + { + CEDContactorVideocallOperation* self = new (ELeave)CEDContactorVideocallOperation(aParam); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorVideocallOperation::NewL() +// ----------------------------------------------------------------------------- +// +CEDContactorVideocallOperation* CEDContactorVideocallOperation::NewL(const TDesC& aParam) + { + CEDContactorVideocallOperation* self= + CEDContactorVideocallOperation::NewLC(aParam); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorVideocallOperation::ConstructL() +// ----------------------------------------------------------------------------- +// +void CEDContactorVideocallOperation::ConstructL() + { + + } + +// ----------------------------------------------------------------------------- +// CEDContactorVideocallOperation::ExecuteLD() +// ----------------------------------------------------------------------------- +// +void CEDContactorVideocallOperation::ExecuteLD() + { + CleanupStack::PushL(this); + CEDPhoneCall::ExecuteL(iParam, CEDPhoneCall::ECCACallTypeVideo, ETrue ); + CleanupStack::PopAndDestroy(this); + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edcontactorvoipoperation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edcontactorvoipoperation.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,84 @@ +/* +* Copyright (c) 2010 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 the voip operation +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEDContactorVOIPOperation::CEDContactorVOIPOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorVOIPOperation::CEDContactorVOIPOperation(const TDesC& aParam, TUint32 aServiceId) : CEDContactorOperation(aParam), iServiceId(aServiceId) + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CEDContactorVOIPOperation::~CEDContactorVOIPOperation() +// ----------------------------------------------------------------------------- +// +CEDContactorVOIPOperation::~CEDContactorVOIPOperation() + { + } + +// ----------------------------------------------------------------------------- +// CEDContactorVOIPOperation::NewLC() +// ----------------------------------------------------------------------------- +// +CEDContactorVOIPOperation* CEDContactorVOIPOperation::NewLC(const TDesC& aParam, TUint32 aServiceId) + { + CEDContactorVOIPOperation* self = new (ELeave)CEDContactorVOIPOperation(aParam, aServiceId); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorVOIPOperation::NewL() +// ----------------------------------------------------------------------------- +// +CEDContactorVOIPOperation* CEDContactorVOIPOperation::NewL(const TDesC& aParam, TUint32 aServiceId) + { + CEDContactorVOIPOperation* self=CEDContactorVOIPOperation::NewLC(aParam, aServiceId); + CleanupStack::Pop(); // self; + return self; + } + +// ----------------------------------------------------------------------------- +// CEDContactorVOIPOperation::ConstructL() +// ----------------------------------------------------------------------------- +// +void CEDContactorVOIPOperation::ConstructL() + { + + } + +// ----------------------------------------------------------------------------- +// CEDContactorVOIPOperation::ExecuteLD() +// ----------------------------------------------------------------------------- +// +void CEDContactorVOIPOperation::ExecuteLD() + { + CleanupStack::PushL(this); + CEDPhoneCall::ExecuteL(iParam, CEDPhoneCall::ECCACallTypeVoIP, EFalse, + iServiceId); + CleanupStack::PopAndDestroy(this); + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edmsgeditors.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edmsgeditors.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2010 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: Launching Editors. +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" +#include + +#ifndef KSenduiMtmOnlineAlbumUidValue +#define KSenduiMtmOnlineAlbumUidValue 0x200009D5 +#endif + +/// Unnamed namespace for local definitions +namespace + { + +#ifdef _DEBUG + enum TPanicCode + { + EPanicPreCond_ExecuteL = 1 + }; + + void Panic(TPanicCode aReason) + { + _LIT(KPanicText, "CCmsMsgEditors"); + User::Panic (KPanicText, aReason); + } +#endif // _DEBUG + + + } /// namespace + + +// ============================ MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------- +// CEDMsgEditors::ExecuteL +// --------------------------------------------------------- +void CEDMsgEditors::ExecuteL( const TUid aServiceUid, + const TDesC& aAddress, const TDesC& aName ) + { + __ASSERT_DEBUG (NULL != &aAddress && 0 < aAddress.Size() && + NULL != &aName && 0 < aName.Size() && + NULL != &aServiceUid, Panic (EPanicPreCond_ExecuteL)); + + //ParsePhoneNumber may only short length of phonenumber, + //so it's safe to use same lenght as given number and do the copy. + HBufC* numBuf = aAddress.AllocLC(); + TPtr numDesc( numBuf->Des() ); + + //Unieditor could also use email adresses. If parser returns EFalse, do not care. + if ( KSenduiMtmUniMessageUid == aServiceUid) + { + CommonPhoneParser::ParsePhoneNumber( numDesc, + CommonPhoneParser::EPhoneClientNumber ); + } + + CSendUi* sendui = CSendUi::NewLC (); + CMessageData* msgdata = CMessageData::NewLC (); + msgdata->AppendToAddressL( *numBuf, aName); + + if (KSenduiMtmSmtpUid == aServiceUid) + { + const TUid KMfEUidValue = { 0x1020695B }; //Where is this defined? + TBool mailAvailabe = EFalse; + TBool mfeAvailable = EFalse; + TUid selectedServiceID = KNullUid; + RPointerArray availableServices; + sendui->AvailableServicesL(availableServices, KGenericMtmPlugin); + for (TInt i=0; i < availableServices.Count(); i++) + { + if (!(availableServices[i]->ServiceFeatures() & CSendingServiceInfo::EServiceInValid)) + { + if (availableServices[i]->ServiceId() == KSenduiMtmSmtpUid) + { + mailAvailabe = ETrue; + } + else if (availableServices[i]->ServiceId() == KMfEUidValue) + { + selectedServiceID = availableServices[i]->ServiceId(); + mfeAvailable = ETrue; + } + } + } + availableServices.ResetAndDestroy(); + + if (mailAvailabe && mfeAvailable) + { + CArrayFixFlat* servicesToDim = new (ELeave) CArrayFixFlat(1); + CleanupStack::PushL(servicesToDim); + + servicesToDim->AppendL(KSenduiTechnologySmsUid); + servicesToDim->AppendL(KSenduiTechnologyMmsUid); + //servicesToDim->AppendL(KSenduiTechnologyMailUid); Email is not to be dimmed + servicesToDim->AppendL(KSenduiTechnologyUniEditorUid); + servicesToDim->AppendL(KSenduiTechnologyIrUid); + servicesToDim->AppendL(KSenduiTechnologyBtUid); + servicesToDim->AppendL(KSenduiTechnologyIMUid); + servicesToDim->AppendL(KMmsDirectUpload); + servicesToDim->AppendL(KMmsIndirectUpload); + servicesToDim->AppendL(KMmsUploadService1Id); + servicesToDim->AppendL(KMmsUploadService2Id); + servicesToDim->AppendL(KMmsUploadService3Id); + servicesToDim->AppendL(KMmsUploadService4Id); + const TUid KShareOnline = { KSenduiMtmOnlineAlbumUidValue }; // From SendUiInternalConsts.h + servicesToDim->AppendL(KShareOnline); + + sendui->ShowQueryAndSendL(msgdata, KCapabilitiesForAllServices, servicesToDim); + servicesToDim->Reset(); + CleanupStack::PopAndDestroy(servicesToDim); + } + else if (mfeAvailable) + { + sendui->CreateAndSendMessageL(selectedServiceID, msgdata, KNullUid, EFalse); + } + else + { + sendui->CreateAndSendMessageL(aServiceUid, msgdata, KNullUid, EFalse); + } + } + else + { + sendui->CreateAndSendMessageL(aServiceUid, msgdata, KNullUid, EFalse); + } + + CleanupStack::PopAndDestroy( 3, numBuf ); //msgdata, sendui + + return; + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/edcontactor/src/edphonecall.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/edcontactor/src/edphonecall.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2010 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: Launching Call. +* +*/ + + +// INCLUDE FILES +#include "edcontactorheaders.h" + +_LIT8( KAiwContentTypeAll, "*" ); + +/// Unnamed namespace for local definitions +namespace + { + +#ifdef _DEBUG + enum TPanicCode + { + EPanicPreCond_ExecuteL = 1, + EPanicPreCond_ExecuteL2 + }; + + void Panic(TPanicCode aReason) + { + _LIT(KPanicText, "CCmsPhoneCall"); + User::Panic (KPanicText, aReason); + } +#endif // _DEBUG + + + } /// namespace + +// ============================ MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------- +// CEDPhoneCall::ExecuteL +// --------------------------------------------------------- +void CEDPhoneCall::ExecuteL( const TDesC& aPhoneNumber, TEDPhoneCallType aCallType, + TBool aForcedCallType, TUint32 aServiceId ) + { + __ASSERT_DEBUG( NULL != &aPhoneNumber && 0 < aPhoneNumber.Size(), Panic(EPanicPreCond_ExecuteL) ); + +#ifdef _DEBUG + HBufC8* buf = HBufC8::NewLC( aPhoneNumber.Length() ); + buf->Des().Copy( aPhoneNumber ); + TPtrC8 numberDesc( buf->Des() ); + CleanupStack::PopAndDestroy( buf ); +#endif + + //aPhoneNumber will be an xsp id of format "ServiceName:UserId" + //here we need to truncate the servicename and pass only the UserId + + //Find if aPhoneNumber of type "ServiceName:UserId" + //if true, then remove the service part + TPtrC phoneNum( aPhoneNumber ); + TInt phoneNumberStart = phoneNum.Locate(':'); + + if ( KErrNotFound != phoneNumberStart ) + { + phoneNumberStart++; //To get rid of ':' + phoneNum.Set( phoneNum.Mid( phoneNumberStart ) ); + } + + HBufC* numBuf = phoneNum.AllocLC(); + TPtr numDesc( numBuf->Des() ); + CommonPhoneParser::ParsePhoneNumber( numDesc, + CommonPhoneParser::EPhoneClientNumber ); + + CAiwDialDataExt* dialDataExt = CAiwDialDataExt::NewLC(); + dialDataExt->SetPhoneNumberL( *numBuf ); + switch (aCallType) + { + case ECCACallTypeVoice: + if ( aForcedCallType ) + { + // Use this with Action menu's Voice call icon + dialDataExt->SetCallType( CAiwDialData::EAIWForcedCS ); + } + else + { + // To be on the safe side, use this with Send key and big Call icon + dialDataExt->SetCallType( CAiwDialData::EAIWVoice ); + } + break; + case ECCACallTypeVoIP: + dialDataExt->SetServiceId( aServiceId ); + dialDataExt->SetCallType( CAiwDialData::EAIWVoiP ); + break; + case ECCACallTypeVideo: + dialDataExt->SetCallType( CAiwDialData::EAIWForcedVideo ); + break; + default: + dialDataExt->SetCallType( CAiwDialData::EAIWForcedCS ); + break; + } + + dialDataExt->SetWindowGroup( CCoeEnv::Static()->RootWin().Identifier() ); + + DoAIWCallL( *dialDataExt ); + + CleanupStack::PopAndDestroy( dialDataExt ); + CleanupStack::PopAndDestroy( numBuf ); + } + +// --------------------------------------------------------- +// CEDPhoneCall::DoAIWCallL +// --------------------------------------------------------- +void CEDPhoneCall::DoAIWCallL( CAiwDialDataExt& aDialData ) + { + RCriteriaArray interest; + CleanupClosePushL( interest ); + CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC( KAiwCmdCall, + KAiwCmdCall, KAiwContentTypeAll ); + criteria->SetServiceClass( TUid::Uid(KAiwClassBase) ); + User::LeaveIfError( interest.Append( criteria ) ); + + CAiwServiceHandler* serviceHandler = CAiwServiceHandler::NewLC(); + serviceHandler->AttachL( interest ); + + CAiwGenericParamList& paramList = serviceHandler->InParamListL(); + aDialData.FillInParamListL( paramList ); + + serviceHandler->ExecuteServiceCmdL( KAiwCmdCall, paramList, + serviceHandler->OutParamListL(), 0, NULL ); + serviceHandler->DetachL( interest ); + + CleanupStack::PopAndDestroy( serviceHandler ); + CleanupStack::PopAndDestroy( criteria ); + CleanupStack::PopAndDestroy( &interest ); + } + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2010 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: Build info file +* +*/ + +#include + +#include "../edcontactor/group/bld.inf" + + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../rom/easydialingplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(easydialingplugin.iby) +../rom/easydialingpluginresources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(easydialingpluginresources.iby) + + +../conf/easydialing.confml APP_LAYER_CONFML(easydialing.confml) +../conf/easydialing_200212A0.crml APP_LAYER_CRML(easydialing_200212A0.crml) +../cenrep/200212A0.txt /epoc32/data/z/private/10202be9/200212A0.txt +../cenrep/200212A0.txt /epoc32/release/winscw/udeb/z/private/10202be9/200212A0.txt + +../inc/dialingextensioninterface.h |../../../inc/dialingextensioninterface.h +../inc/easydialingcommands.hrh |../../../inc/easydialingcommands.hrh +../inc/easydialingcrkeys.h APP_LAYER_PLATFORM_EXPORT_PATH(easydialingcrkeys.h) + +../loc/easydialing.loc APP_LAYER_LOC_EXPORT_PATH(easydialing.loc) + +../data/easydialing_stub.sis /epoc32/data/z/system/install/easydialing_stub.sis + + +PRJ_EXTENSIONS +START EXTENSION s60/mifconv + OPTION TARGETFILE easydialing.mif + OPTION HEADERFILE easydialing.mbg + OPTION SOURCEFILE iconlist.txt +END + +PRJ_MMPFILES +easydialingplugin.mmp + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/group/easydialingplugin.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/group/easydialingplugin.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,135 @@ +/* +* Copyright (c) 2010 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: Project config file +* +*/ + +#include +#include "data_caging_paths.hrh" +#include "../inc/easydialingconstants.hrh" + +TARGET easydialingplugin.dll +CAPABILITY CAP_ECOM_PLUGIN + +TARGETTYPE PLUGIN +UID 0x10009D8D 0x200212A0 // EASYDIALING_PLUGIN_DLL_UID (Uncommented because of OST) +VENDORID VID_DEFAULT + +SOURCEPATH ../src +SOURCE dllmain.cpp +SOURCE easydialingplugin.cpp +SOURCE easydialinglistbox.cpp +SOURCE easydialinglistboxdata.cpp +SOURCE easydialinglistboxitemdrawer.cpp +SOURCE easydialinglistboxview.cpp +SOURCE easydialingcenreplistener.cpp +SOURCE easydialingcontactdata.cpp +SOURCE easydialingcontactdatamanager.cpp +SOURCE easydialingutils.cpp + +USERINCLUDE ../inc +USERINCLUDE ../edcontactor/inc +USERINCLUDE ../traces + +APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE /epoc32/include/internal +SYSTEMINCLUDE /epoc32/include/ecom + +SOURCEPATH ../data + +START RESOURCE 200212A0.rss + LANG SC + TARGET easydialingplugin.rsc +END + +START RESOURCE easydialingpluginresources.rss + HEADER + TARGETPATH /resource + TARGET easydialingpluginresources.rsc + LANGUAGE_IDS +END + + +// Symbian framework libraries + +LIBRARY euser.lib +LIBRARY ECom.lib +LIBRARY cone.lib +LIBRARY avkon.lib +LIBRARY eikcore.lib +LIBRARY eikctl.lib +LIBRARY eikcoctl.lib +LIBRARY bafl.lib +LIBRARY gdi.lib +LIBRARY egul.lib +LIBRARY efsrv.lib +LIBRARY ws32.lib +LIBRARY fbscli.lib +LIBRARY bitgdi.lib +LIBRARY etext.lib + +// Avkon, Avkon skin and Avkon layout libraries. +LIBRARY aknicon.lib +LIBRARY aknlistloadertfx.lib +LIBRARY aknskins.lib +LIBRARY aknskinsrv.lib +LIBRARY aknswallpaperutils.lib +LIBRARY aknlayout2scalable.lib +LIBRARY cdlengine.lib +LIBRARY aknlayout2.lib + +// Transition effects +LIBRARY gfxtrans.lib + +// AIW library +LIBRARY servicehandler.lib + +// Predictive search libraries +LIBRARY PcsUtils.lib +LIBRARY PsServerClientAPI.lib + +// Virtual phonebook library +LIBRARY VPbkEng.lib + +// Phonebook engine +LIBRARY pbkeng.lib + +// ECE Communication launcher library +LIBRARY ccaclient.lib + +// Central repository +LIBRARY centralrepository.lib +LIBRARY commonengine.lib +LIBRARY cenrepnotifhandler.lib + +// CPbk2ImageManager +LIBRARY pbk2presentation.lib + +// bitmap handling +LIBRARY bitmaptransforms.lib + +// Easy dialing own contactor module. +LIBRARY edcontactor.lib + +// Service provider settings api +LIBRARY serviceprovidersettings.lib + +// CMS library used for getting information about contacts. +//LIBRARY cmsclient.lib + +// Libraries used for R&D purposes only +DEBUGLIBRARY flogger.lib + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/group/iconlist.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/group/iconlist.txt Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,3 @@ +-c8,8 qgn_indi_org_arrow_right.svg +-c8,8 qgn_indi_org_arrow_left.svg +-c8,8 qgn_indi_org_arrow_down.svg \ No newline at end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/dialingextensioninterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/dialingextensioninterface.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,227 @@ +/* +* Copyright (c) 2010 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: Ecom interface header +* +*/ + +#ifndef __CDIALEREXTENSIONINTERFACE_H +#define __CDIALEREXTENSIONINTERFACE_H + +#include +#include +#include + + +/** UID of dialing extension ECom interface. */ +const TUid KEasyDialingPluginInterfaceUID = { 0x200212A1 }; + +/** UID of easy dialing plugin. */ +const TUid KEasyDialingPluginImplementationUID = { 0x200212A0 }; + +/** + * Observer class for easy dialing. + */ +class MDialingExtensionObserver + { +public: + + /** + * Identifiers for easy dialing events. + */ + typedef enum TEvent_enum + { + + /** Contact search has completed. */ + ESearchComplete = 1, + + /** Easy dialing has gained or given up the focus. */ + EFocusChanged, + + /** Easy dialing has started communication launcher (a.k.a. contact view) */ + ECCALauncherStarted, + + /** Communication launcher a.k.a. contact view has been close. */ + ECCALauncherExit, + + /** Easy dialing feature has been switched on. */ + EEasyDialingEnabled, + + /** Easy dialing feature has been switched off. */ + EEasyDialingDisabled, + + /** User has started communication (SMS, IM, E-mail ...). Not used for phone calls. */ + ECommunicationStarted, + + /** User has cancelled communication once started. */ + ECommunicationCancelled + + } TEvent; + + + /** + * Handles event from easy dialing plugin. + * + * @param aEvent Event id. + * + */ + virtual void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ) = 0; + }; + + + + +/** + * Easy dialing plugin class. + */ + +class CDialingExtensionInterface : public CCoeControl + { +public: + + /** + * Creates an instance of plugin. + */ + static CDialingExtensionInterface* NewL(); + + + /** + * Destructor. + */ + virtual ~CDialingExtensionInterface(); + + + /** + * Does the rest of the initialization of the plugin. + * Must be called after NewL before using any other + * functions of the plugin. + * + * @param aParent Parent container of the plugin. + */ + virtual void InitializeL( CCoeControl& aParent ) = 0; + + + /** + * Resets the previous search results. + */ + virtual void Reset() = 0; + + + /** + * Adds an observer to the plugin. + * + * @param aObserver Observer to be added. + */ + virtual void AddObserverL( MDialingExtensionObserver* aObserver ) = 0; + + + /** + * Removes an observer from the plugin. + * + * @param aObserver Observer to be removed. + */ + virtual void RemoveObserver( MDialingExtensionObserver* aObserver ) = 0; + + + /** + * Sets input string (search string) to plugin. + * + * @param aDesC Input string descriptor. + */ + virtual void SetInputL( const TDesC& aDesC ) = 0; + + + /** + * Gets the resource id of plugin's control button area resource. + * + * @return Resource id. + */ + virtual TInt CbaResourceId( ) = 0; + + + /** + * Gets the resource id of plugin's menu bar resource. + * + * @return Resource id. + */ + virtual TInt MenuResourceId() = 0; + + + /** + * Gets the resource id of plugin's menu bar resource. + * + * @param aMenuPane Menu pane + * @param aMenuResourceId Menu bar resource id. + * @return Resource id. + */ + virtual TBool InitializeMenuPaneL( CEikMenuPane& aMenuPane, TInt aMenuResourceId ) = 0; + + + /** + * Handle a command. Supported command IDs are defined in header + * easydialingcommands.hrh. + * + * @param aCommand Command id. + * @return ETrue if command was handled, EFalse otherwise. + */ + virtual TBool HandleCommandL( TInt aCommand ) = 0; + + + /** + * Tells if extension is currently enabled from settings. + * @return ETrue if extension is enabled, EFalse otherwise. + */ + virtual TBool IsEnabled() const = 0; + +private: // data + + /** ECom instance identifier key. */ + TUid iDestructorIDKey; + }; + + + +// INLINE FUNCTIONS + +// ----------------------------------------------------------------------------- +// CDialingExtensionInterface::NewL +// +// ----------------------------------------------------------------------------- +// +inline CDialingExtensionInterface* CDialingExtensionInterface::NewL() + { + // TEComResolverParams resolverParams; // data passed to the plugin + // resolverParams.SetDataType(); // no data yet + + TAny* ptr = REComSession::CreateImplementationL( KEasyDialingPluginImplementationUID, + _FOFF( CDialingExtensionInterface, iDestructorIDKey ) + // resolverParams + ); + + return STATIC_CAST( CDialingExtensionInterface*, ptr ); + } + + +// ----------------------------------------------------------------------------- +// CDialingExtensionInterface::~CDialingExtensionInterface() +// +// ----------------------------------------------------------------------------- +// +inline CDialingExtensionInterface::~CDialingExtensionInterface() + { + REComSession::DestroyedImplementation( iDestructorIDKey ); + } + +#endif //__CDIALEREXTENSIONINTERFACE_H + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingcenreplistener.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingcenreplistener.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2010 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: Grid for easy dialing action menu. +* +*/ + + +#ifndef __EASYDIALINGCENREPLISTENER_H__ +#define __EASYDIALINGCENREPLISTENER_H__ + +// INCLUDES +#include +#include // link against commonengine.lib + +// FORWARD DECLARATIONS +class CRepository; +class CenRepNotifyHandler; +class MEasyDialingCenrepListenerObserver; + +// CLASS DECLARATION + +/** +* Central Repository event monitor +*/ +class CEasyDialingCenrepListener + : public CBase, public MCenRepNotifyHandlerCallback +{ + public: // Constructors and destructor + + /** + * Static constructor. Construct a CEasyDialingCenrepListener + * using two phase construction, and return a pointer to the created object. + * @param aObserver Pointer to observer. + * @return Created object. + */ + static CEasyDialingCenrepListener* NewL(MEasyDialingCenrepListenerObserver* aObserver); + + /** + * Destructor. Destroy the object and release all memory objects + */ + virtual ~CEasyDialingCenrepListener(); + + public: + + /** + * Gets the easydialing on/off cenrep key value + * @return The key value + */ + TInt Value() const; + + /** + * Sets the easydialing on/off cenrep key value + * @param aValue Value to be set. + */ + void SetEasyDialingSettingsValue( const TInt aValue ); + + /** + * Handles cenrep notifications. + * @param Id of the changed key. + */ + void HandleNotifyGeneric( TUint32 aId ); + + private: + + /** + * Perform the first phase of two phase construction + * @param aObserver Pointer to observer + */ + CEasyDialingCenrepListener(MEasyDialingCenrepListenerObserver* aObserver); + + /** + * Second phase constructor + */ + void ConstructL(); + + private: + + /** The central repository handle. Owned. */ + CRepository* iClient; + + /** Observer to this class. Not owned. */ + MEasyDialingCenrepListenerObserver* iObserver; + + /** The cenrep value for easydialing setting. */ + TInt iEasyDialingSettingValue; + + /** The cenrep value for contact thumbnail setting (shown / not shown). */ + TInt iContactThumbnailsSettingsValue; + + /** Cenrep notify handler. Owned. */ + CCenRepNotifyHandler* iNotifyHandler; +}; + +#endif // __EASYDIALINGCENREPLISTENER_H__ + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingcommands.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingcommands.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2010 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: Easy dialing command ids. +* +*/ + +#ifndef __EASYDIALINGCOMMANDS_HRH__ +#define __EASYDIALINGCOMMANDS_HRH__ + +/* + * Easy dialing commands live in the same id space with several other + * enumerations. It's range is chosen so that it does not conflict these + * others. + * + * The other enumerations are: + * - phoneviewcommanddefinitions from 1 to currently ~200 + * - phoneappcommands id space from 6000 upwards + */ + + +enum + { + EEasyDialingVoiceCall = 400, + EEasyDialingVideoCall, + EEasyDialingSendMessage, + EEasyDialingOpenContact, + EEasyDialingCallHandlingActivated, + EEasyDialingEnterKeyAction, + EEasyDialingOn, + EEasyDialingOff, + EEasyDialingClosePopup + }; + +#endif //__EASYDIALINGCOMMANDS_HRH__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingconstants.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingconstants.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2010 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: Easy dialing constant definitions. +* +*/ + +#ifndef __EASYDIALINGCONSTANTS_HRH__ +#define __EASYDIALINGCONSTANTS_HRH__ + +/** + * Dll uid for plugin. + */ +#define EASYDIALING_PLUGIN_DLL_UID 0x200212A0 + +/** + * Ecom interface uid plugin + */ +#define EASYDIALING_PLUGIN_IF_UID 0x200212A1 + +/** + * Ecom implementation uid plugin. Same as DLL UID. + */ +#define EASYDIALING_PLUGIN_ECOM_IMPL_UID 0x200212A0 + +#endif //__EASYDIALINGCONSTANTS_HRH__ + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingcontactdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingcontactdata.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,159 @@ +/* +* Copyright (c) 2010 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: Easy dialing contact data manager. +* +*/ + + +#ifndef __EASYDIALINGCONTACTDATA_H__ +#define __EASYDIALINGCONTACTDATA_H__ + +class CFbsBitmap; +class MVPbkContactLink; + +/** + * Container for easy dialing contact data for one contact. + */ +class CEasyDialingContactData : public CBase + { +public: + + /** + * Constructor. + */ + CEasyDialingContactData(MVPbkContactLink* aContactLink); + + /** + * Destructor. + */ + ~CEasyDialingContactData(); + + + /** + * Gets a pointer to contact link. + * @return Pointer to contact link object. + */ + MVPbkContactLink* ContactLink(); + + + /** + * Get's contact's thumbnail bitmap. + * @return Pointer to bitmap object. + */ + CFbsBitmap* Thumbnail(); + + + /** + * Setting function for contact thumbnail. + * @param aThumnail Thumbnail to set. + */ + void SetThumbnail(CFbsBitmap* aThumbnail); + + + /** + * Get favourite status of the contact. + * @return ETrue, if contact is a favourite, EFalse otherwise. + */ + TBool Fav(); + + + /** + * Sets favourite status of the contact. + * @param aFav Boolean value containing the status. + */ + void SetFav(TBool aFav); + + + /** + * Returns the loading status of the contact. + * @return ETrue, if contact data loading has completed, EFalse otherwise. + */ + TBool IsLoaded(); + + + /** + * Sets loading status to complete. + */ + void LoadingComplete(); + + + /** + * Deletes the thumbnail image of the contact. + */ + void DeleteThumbnail(); + + + /** + * Return ETrue if voice call is available. + */ + TBool VoiceCallAvailable(); + + + /** + * Sets voice call availability status. + * @param aVailable Availability of voice call. + */ + void SetVoiceCallAvailable( TBool aVailable ); + + + /** + * Return ETrue if video call is available. + */ + TBool VideoCallAvailable(); + + + /** + * Sets video call availability status. + * @param aVailable Availability of video call. + */ + void SetVideoCallAvailable( TBool aVailable ); + + + /** + * Return ETrue if uni-editor (SMS, MMS, e-mail) is available. + */ + TBool UniEditorAvailable(); + + + /** + * Sets uni-editor availability status. + * @param aVailable Availability of uni-editor. + */ + void SetUniEditorAvailable( TBool aVailable ); + +private: + + /** Contact link. Owned. */ + MVPbkContactLink* iContactLink; + + /** Thumbnail bitmap. Owned. */ + CFbsBitmap* iThumbnail; + + /** ETrue if this is a favourite contact. */ + TBool iFav; + + /** ETrue is asynchronous loading of contact data is complete. */ + TBool iLoaded; + + /** ETrue if voice call is a possible action with this contact. */ + TBool iVoiceCallAvailable; + + /** ETrue if video call is a possible action with this contact. */ + TBool iVideoCallAvailable; + + /** ETrue if SMS or MMS is a possible action with this contact. */ + TBool iUniEditorAvailable; + }; + +#endif //__EASYDIALINGCONTACTDATA_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingcontactdatamanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingcontactdatamanager.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,393 @@ +/* +* Copyright (c) 2010 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: Easy dialing contact data manager. +* +*/ + + +#ifndef __EASYDIALINGCONTACTDATAMANAGER_H__ +#define __EASYDIALINGCONTACTDATAMANAGER_H__ + +#include +#include +#include +#include +#include +#include +#include // For name order setting +#include +#include "easydialingcontactdata.h" + +// FORWARD DECLARATIONS +class CVPbkContactManager; +class MContactDataManagerObserver; +class MVPbkFieldType; +class CPbk2ImageManager; +class CVPbkTopContactManager; +class CRepository; + +/** + * CEasyDialingContactDataManager + * Handles the loading and storing of thumbnail bitmaps + */ +class CEasyDialingContactDataManager : + public CBase, + public MPbk2ImageGetObserver, + public MVPbkSingleContactOperationObserver, + public MVPbkContactStoreObserver, + public MVPbkOperationErrorObserver, + public MVPbkOperationResultObserver, + public MPbkGlobalSettingObserver, + public MVPbkContactViewObserver + + { +public: + + /** + * Contact name display order + */ + enum TNameOrder + { + EFirstnameLastname, + ELastnameFirstname + }; + +public: + + /** + * Constructor. + */ + CEasyDialingContactDataManager(CVPbkContactManager* aContactManager); + + + /** + * Destructor. + */ + ~CEasyDialingContactDataManager(); + + + /** + * Second phase constructor of the class. + */ + void ConstructL(); + + /** + * Sets the observer. Observer is notified when thumbnail loading is complete + * @param aObserver + */ + void SetObserver(MContactDataManagerObserver* aObserver); + + /** + * Sets the size of the thumbnails. If the loaded thumbnail is larger than + * the set size, thumnail is scaled to the size. If the set size is different + * from the old one, deletes all loaded thumbnails, which causes them to be + * reloaded when they are needed the next time. + * @param aSize The size of the thumbnails + */ + void SetThumbnailSize(const TSize& aSize); + + /** + * Gets an id string for the thumbnail, if thumbnail exists for the contact. + * Used when the listbox items are created. + * @param aContact Contact link + * @param aMatchThumbnail If true, tries to match the link to the existing thumbnails + * @param aFav Is this contact a favourite + * @return id string. caller needs to delete this. + */ + HBufC* GetThumbnailIdL( MVPbkContactLink* aContact, TBool aMatchThumbnail, TBool aFav ); + + /** + * Gets the thumbnail for a contact item. If thumbnail is not loaded, starts + * loading it. + * @param aContact Contact link + * @param aThumbnail Outparam. Contact thumbnail. NULL if contact doesn't have thumbnail + * @param aFav Outparam. Favourite status + * @return true if contact data has been loaded + */ + TBool GetThumbnailAndFav(const TDesC& aId, CFbsBitmap*& aThumbnail, TBool& aFav); + + /** + * Deletes all loaded thumbnails and cancel asynchronous operations. + */ + void Reset(); + + /** + * Returs ETrue if voice call is available for current contact. + */ + TBool VoiceCallAvailable( TInt aIndex ); + + + /** + * Returs ETrue if video call is available for current contact. + */ + TBool VideoCallAvailable( TInt aIndex ); + + + /** + * Returs ETrue if uni-editor is available for current contact. + */ + TBool UniEditorAvailable( TInt aIndex ); + + + /** + * Returns HBufC8 descriptor containing MVPbkContactLink + * link packaged. + */ + HBufC8* ContactLinkLC( TInt aIndex ); + + + /** + * Sets the iContactThumbnailSetting member variable to either true or false + * which is read and if it is false then thumbnails are not shown + * @param aContactThumbnailSetting which is cenrep value for ContactThumbnailSetting + */ + void SetContactThumbnailSetting( TInt aContactThumbnailSetting ); + + /** + * Gets the iContactThumbnailSetting member variable to either true or false + * which is read and if it is false then thumbnails are not shown + * returns iContactThumbnailSetting which is cenrep value for ContactThumbnailSetting + */ + TBool GetContactThumbnailSetting( ); + + + /** + * Flushes the asynchronous contact data of all contacts. + */ + void Reload(); + + /** + * Checks if contact link is a favourite. This is meant to be used for contacts that + * don't yet have contact data item. Since this needs to go through all the favourites, + * unnecessary calls should be avoided. + */ + TBool IsFavL( MVPbkContactLink* aLink ); + + /** + * @return the number of favourites in contact db + */ + TInt NumberOfFavsL(); + + /** + * Creates contact link to a favourite contact. + * @param aIndex Index of the favourite in favourites view + * @return the newly created link (added to cleanupstack) + */ + MVPbkContactLink* FavLinkLC( TInt aIndex ); + + /** + * Creates contact string for favourite contact. This string can be used directly + * in the contact listbox. F.ex. "Firstname Surname\tCompanyname". + * @param aIndex Index of the favourite in favourites view + * @param aNameOrder Name ordering to be used + * @return the newly created string (added to cleanupstack) + */ + HBufC* FavContactStringLC( TInt aIndex, TNameOrder aNameOrder ); + + /** + * @return Contact name display order + */ + TNameOrder NameOrder(); + + /** + * Pause the loading of contact data. This is used to make sure listbox is responsive + * and smooth during panning and flicking. + * @param aPause Pause on/off + */ + void Pause( TBool aPause ); + +public: + + /** + * From MPbk2ImageGetObserver. + */ + void Pbk2ImageGetComplete(MPbk2ImageOperation& aOperation, CFbsBitmap* aBitmap); + + + /** + * From MPbk2ImageGetObserver. + */ + void Pbk2ImageGetFailed(MPbk2ImageOperation& aOperation, TInt aError); + +public: + + /** + * From MPbkGlobalSettingObserver. + */ + void SettingChangedL( MPbkGlobalSetting::TPbkGlobalSetting aKey ); + +private: + + /** + * From MVPbkSingleContactOperationObserver. + */ + void VPbkSingleContactOperationComplete( + MVPbkContactOperationBase& aOperation, + MVPbkStoreContact* aContact ); + + + /** + * From MVPbkSingleContactOperationObserver. + */ + void VPbkSingleContactOperationFailed( + MVPbkContactOperationBase& aOperation, + TInt aError ); + +private: + + + /** + * From MVPbkContactStoreObserver. + */ + void StoreReady( MVPbkContactStore& aContactStore ); + + + /** + * From MVPbkContactStoreObserver. + */ + void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason ); + + + /** + * From MVPbkContactStoreObserver. + */ + void HandleStoreEventL( MVPbkContactStore& aContactStore, + TVPbkContactStoreEvent aStoreEvent ); + +private: + /** + * From MVPbkOperationErrorObserver. + */ + void VPbkOperationFailed( + MVPbkContactOperationBase* aOperation, + TInt aError ); + +private: + /** + * From MVPbkOperationResultObserver. + */ + void VPbkOperationResultCompleted( + MVPbkContactOperationBase* aOperation, + MVPbkContactViewBase* aOperationResult ); + + +private: + /** + * From MVPbkContactViewObserver. + * For observing changes to favourites view. + */ + virtual void ContactViewReady( + MVPbkContactViewBase& aView ); + + virtual void ContactViewUnavailable( + MVPbkContactViewBase& aView ); + + virtual void ContactAddedToView( + MVPbkContactViewBase& aView, + TInt aIndex, + const MVPbkContactLink& aContactLink ); + + virtual void ContactRemovedFromView( + MVPbkContactViewBase& aView, + TInt aIndex, + const MVPbkContactLink& aContactLink ); + + virtual void ContactViewError( + MVPbkContactViewBase& aView, + TInt aError, + TBool aErrorNotified ); + +private: + + void InitReady(); + + TInt FindContactIndex( MVPbkContactLink* aContact ); + + void LoadNextContactDataL(); + + void DoHandleImageGetCompleteL(CFbsBitmap* aBitmap, TInt aIndex); + + void HandleError(TInt aError); + + void DoHandleContactOperationCompleteL( MVPbkStoreContact* aContact, TInt aIndex); + + void GetAvailableServicesL( MVPbkStoreContact* aContact, TInt aIndex ); + + void InformObserver(); + + void UpdateNameOrderL(); + +private: + /** Array that contains all loaded contact data. Owned. */ + RPointerArray iContactDataArray; + + /** Array that contains indexes of thumbnails that are waiting to be loaded. Owned. */ + RArray iWaitingContacts; + + /** Phonebook image manager. Owned. */ + CPbk2ImageManager* iImageManager; + + /** Parameters for image manager. Contains info about the size of thumbnails. */ + TPbk2ImageManagerParams iImageManagerParams; + + /** Field type. Not owned. */ + const MVPbkFieldType* iThumbnailFieldType; + + /** Image loading operation. Owned. */ + MPbk2ImageOperation* iImageOperation; + + /** Contact item for which a thumbnail is being loaded. Owned. */ + MVPbkStoreContact* iStoreContact; + + /** Virtual phonebook contact manager. Not owned. */ + CVPbkContactManager* iContactManager; + + /** Contact data manager observer. Not owned. */ + MContactDataManagerObserver* iObserver; + + /** Top (i.e. favourite) contacts manager. Owned. */ + CVPbkTopContactManager* iVPbkTopContactManager; + + /** Virtual phonebook operation handle. Owned. */ + MVPbkContactOperationBase* iContactOperation; + + /** Default contact store. Not owned. */ + MVPbkContactStore* iContactStore; + + /** Variable which tells either to show or hide contact thumbnails. */ + TBool iContactThumbnailSetting; + + /** ETrue if asynchronous opening of the contac store is ready. */ + TBool iStoreReady; + + /** View to vpbk containing all favourite contacts. Owned. */ + MVPbkContactViewBase* iFavsView; + + /** Favourites view is ready to be used. */ + TBool iFavsViewReady; + + /** Virtual phonebook operation handle for getting favourites. Owned. */ + MVPbkContactOperationBase* iFavsOperation; + + /** Phonebook settings interface. */ + MPbkGlobalSetting* iPbkSettings; + + /** Contact name display order. */ + TNameOrder iNameOrder; + + /** Contact data manager pause status */ + TBool iPause; + }; + +#endif //__EASYDIALINGTHUMBNAILMANAGER_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingcrkeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingcrkeys.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2010 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: Easy dialing central repository keys. +* +*/ + + +#ifndef __EASYDIALINGCRKEYS_H__ +#define __EASYDIALINGCRKEYS_H__ + +#include + +/** +* Easydialing settings CR UID (same as easydialing DLL uid) +*/ +const TUid KCRUidEasyDialSettings = {0x200212A0}; + +/** +* Easydialing on/off +* +* Possible values are: +* 0 = Easydialing is off +* 1 = Easydialing is on +*/ +const TUint32 KEasyDialing = 0x00000001; + +/** +* Easydialing Contact Thumbnails show/hide +* Possible values are: +* 0 = Thumbnails are hidden +* 1 = Thumbnails are shown +*/ +const TUint32 KEasyDialingContactThumbnails = 0x00000002; + +#endif //__EASYDIALINGCRKEYS_H__ + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialinglistbox.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialinglistbox.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,205 @@ +/* +* Copyright (c) 2010 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: Easy dialing listbox. +* +*/ + + +#ifndef _EASYDIALINGLISTBOX_H +#define _EASYDIALINGLISTBOX_H + +// INCLUDE FILES +#include "easydialinglistboxview.h" +#include "easydialinglistboxitemdrawer.h" +#include "easydialinglistboxdata.h" +#include +#include + +// CONSTANTS + +// Easy dialing specific listbox events +const TInt KEasyDialingContactSelected( 0x1001 ); +const TInt KEasyDialingContactLongTapped( 0x1002 ); +const TInt KEasyDialingScrollingStarted( 0x1003 ); +const TInt KEasyDialingScrollingStopped( 0x1004 ); + +// FORWARD DECLARATIONS + +class CEasyDialingListBoxItemDrawer; +class CAknsFrameBackgroundControlContext; +class CEasyDialingContactDataManager; +class CAknLongTapDetector; +class CAknPointerEventSuppressor; + +// CLASS DECLARATIONS + +/* + * ============================================================================== + * + * CEasyDialingListBox + * + * ============================================================================== + */ + +class CEasyDialingListBox : public CEikFormattedCellListBox, + public MAknLongTapDetectorCallBack + { +public: + + /** + * Constructor. + */ + CEasyDialingListBox(); + + /** + * Destructor. + */ + ~CEasyDialingListBox(); + + /** + * Second phase constructor. + * @param aFlags Listbox flags. + * @param aContactDataManager Pointer to contact data manager + */ + void ConstructL( TInt aFlags, + CEasyDialingContactDataManager* aContactDataManager ); + + /** + * From CEikFormattedCellListBox. + */ + virtual CListBoxView* MakeViewClassInstanceL(); + + /** + * From CEikFormattedCellListBox. + */ + CEasyDialingListBoxItemDrawer* ItemDrawer() const; + + /** + * From CEikFormattedCellListBox. + */ + void Draw( const TRect& aRect ) const; + + /** + * From CEikFormattedCellListBox. + */ + void HandleResourceChange( TInt aType ); + + /** + * From CEikFormattedCellListBox. + */ + void HandleScrollEventL( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType ); + + /** + * From CCoeControl + */ + void MakeVisible( TBool aVisible ); + + /** + * From CCoeControl + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * The the rectangle within which the listbox must always fit. + * @param aMaxRect The largest allowed rect size, given in + * screen relative coordinate system. + */ + void SetMaxRect( TRect aMaxRect ); + + /** + * Adjusts the control rect according to amount of visible contacts. + * @param aNumberOfNames Number of contact to which to adjust. + */ + void SetRectToNumberOfItems( TInt aNumberOfNames ); + + + /** + * Puts list box control into focus, and moved the focus highlight + * to the appropriate item. + * @param aKeyEvent key event + * @param aType key event type + * @return Whether the key was handled or not. + */ + TKeyResponse SetFocusedWithKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * Gets the height of the listbox based on the number of items. + * @param aNum Number of items. + */ + TInt GetHeightBasedOnNumberOfItems( TInt aNum ) const; + + /** + * Gets the contact index of the currently selected contact item. + * Contact index points to contact data object in + * CEasyDialingContactDataManager. + * @return Contact data manager index. + */ + TInt CurrentContactDataIndex(); + + /** + * Return contact link of current item packaged in HBufC object. + * @return Contact link. + */ + HBufC8* CurrentContactLinkLC(); + +public: + /** + * From MAknLongTapDetectorCallBack + */ + void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); + +protected: + + /** + * From CEikFormattedCellListBox. + */ + virtual void FocusChanged( TDrawNow aDrawNow ); + + /** + * From CEikFormattedCellListBox. + */ + virtual void CreateItemDrawerL(); + + /** + * From CEikFormattedCellListBox. + */ + virtual void SizeChanged(); + + /** + * From CCoeControl + */ + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + +private: + + /** Background control context. Owned. */ + CAknsFrameBackgroundControlContext* iBGContext; + + /** Pointer to a contact data manager; Not Own. */ + CEasyDialingContactDataManager* iContactDataManager; + + /** Number of matching contacts. */ + TInt iNumberOfNames; + + /** Maximum size rectangle. */ + TRect iMaxRect; + + /** Detector for Long Tap event; Owned. */ + CAknLongTapDetector* iLongTapDetector; + + /** Flag set when long pointer press has been handled after latest pointer down event.*/ + TBool iPointerLongPressHandled; + }; + +#endif // _EASYDIALINGLISTBOX_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialinglistboxdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialinglistboxdata.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,217 @@ +/* +* Copyright (c) 2010 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: Easy dialing listbox data. +* +*/ + + +#ifndef _EASYDIALINGLISTBOXDATA_H +#define _EASYDIALINGLISTBOXDATA_H + + +// INCLUDE FILES +#include + +// CONSTANTS + +/* + * Matching highlight separator character is used in listbox model to separate + * matching and non-matching charaters. 0x1F is chosen for this because + * it is a control character "INFORMATION SEPARATOR ONE" of ASCII set. + * User of the listbox must use this character in creating list box item + * strings. + */ +// FORWARD DECLARATIONS +class CEasyDialingListBox; +class CEasyDialingContactDataManager; + +// CLASS DECLARATIONS + +/* + * Easy dialing listbox data class. + */ + +class CEasyDialingListBoxData : public CFormattedCellListBoxData + { +public: + + class TExtendedColors : public CFormattedCellListBoxData::TColors + { + public: + + TExtendedColors(); + + /** The matching text colour. */ + TRgb iMatchingText; + + /** The matching background colour. */ + TRgb iMatchingBack; + + }; + + + /** + * Constructor. + */ + CEasyDialingListBoxData(); + + /** + * Destructor + */ + ~CEasyDialingListBoxData(); + + /** + * Second phase constructor of the class. + * @return Pointer to the instance. + */ + static CEasyDialingListBoxData* NewL(); + + /** + * Draws selected item. + */ + void DrawData( + const TListItemProperties& aItemProperties, + CWindowGc& aGc, + const TDesC* aText, + const TRect& aRect, + TBool aHighlight, + const TExtendedColors& aColors ) const; + + /** + * Draws selected item highlight. + * @param aGc Graphics context. + * @param aItemRect Item rectangle. + */ + void DrawHighlight( CWindowGc &aGc, const TRect &aItemRect ) const; + + /** + * Sets the contact data manager. Must be set before using the listbox. + * @param aContactDataManager Contact data manager. + */ + void SetContactDataManager( CEasyDialingContactDataManager* aContactDataManager ); + + /** + * Sets a pointer to listbox class. Called from listbox constructor. + * @param aControl Pointer to easy dialing listbox cotrol. + */ + void SetEDLBXControl( CEasyDialingListBox* aControl ); + + /** + * Handle change in list item size + */ + void HandleItemSizeChange(); + +protected: + + void ConstructLD(); + +private: + + /** + * Determines fonts for contact name and company name. + * The font sizes are determined based on list box item height. + * This function must be called once before any drawing routines are + * done. + * @param aItemHeight List box item height + */ + void ObtainFonts( TInt aItemHeight ); + + /** + * Update the color bitmap used for fallback graphics for the Action Menu arrow according to + * size changes in listbox control. + * @param aSize New size. + */ + void UpdateColorBitmapL( const TSize& aSize ); + + /** + * Draws the data for one list item. + * @param aProperties List item property structure. + * @param aGc Graphics context. + * @param aText String containing list item data information. + * @param aItemRect Item rectangle. + * @param aHighlight ETrue if the item has highlight, EFalse otherwise. + * @param aColors Structure containing used colors. + */ + void DrawDataFormatted( + TListItemProperties aProperties, + CWindowGc& aGc, + const TDesC* aText, + const TRect& aItemRect, + TBool aHighlight, + const TExtendedColors& aColors ) const; + + /** + * Draws the Contact Thumbnail Icon if any else draws the dummy contact thumbnail. + * @param aGc Graphics context. + * @param aBoundingBox Rectangle containing bounds for contact thumbnail. + * @param aDescId Descriptor containing contact id. + */ + TBool DrawContactThumbnail( + CWindowGc& aGc, + TRect aBoundingBox, + TPtrC aDescId) const; + + /** + * Draws the Action Menu. + * @param aGc Graphics context. + * @param aActionMenuArrowRect Rectangle where arrow is to be drawn. + */ + void DrawArrowIcon( CWindowGc& aGc, TRect aActionMenuArrowRect ) const; + + /** + * Draws the Favourite Icon. Takes the name rect as a parameter. Name rect + * must be unmirrored, because the mirroring is done as the last thing + * before drawing. + * @param aGc Graphics context. + * @param aNameRectUnMirrored Name rect, where fav star is contained + * @param aEffectiveRect The whole listbox item rect. Used for mirroring. + */ + void DrawFavouriteIcon( + CWindowGc& aGc, + TRect aNameRectUnMirrored, + TRect aEffectiveRect) const; + +private: + + /** Font to be used showing contact name. Not owned. */ + CFont* iContactNameFont; + + /** Font to be used showing company name. Not owned. */ + CFont* iCompanyNameFont; + + /** Handle for loading and storing the thumbnails. Not owned.*/ + CEasyDialingContactDataManager* iContactDataManager; + + /** Action Menu LeftPointing Arrow for mirrored layout. Owned. */ + CGulIcon* iArrowPointingRight; + + /** Action Menu RightPointing Arrow. Owned. */ + CGulIcon* iArrowPointingLeft; + + /** Action icon color bitmap. Owned. */ + CFbsBitmap* iColorBitmap; + + /** Default image for contacts with no own thumbnail. Owned. */ + CGulIcon* iDummyThumbnail; + + /** Favourite icon. Owned. */ + CGulIcon* iFavouriteIcon; + + /** Pointer to listbox. Not owned. */ + CEasyDialingListBox* iControl; + }; + + +#endif // _EASYDIALINGLISTBOXDATA_H + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialinglistboxitemdrawer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialinglistboxitemdrawer.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,112 @@ +/* +* Copyright (c) 2010 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: Easy dialing listbox list item drawer. +* +*/ + + +#ifndef _EASYDIALINGLISTBOXDRAWER_H +#define _EASYDIALINGLISTBOXDRAWER_H + + +// INCLUDE FILES +#include + +// FORWARD DECLARATIONS + +class CEasyDialingListBoxData; + +// CLASS DECLARATIONS + +/* + * Easy dialing list item drawer. + */ + +class CEasyDialingListBoxItemDrawer : public CFormattedCellListBoxItemDrawer + { +public: + + /** + * Constructor. + * @param aTextListBoxModel Listbox mode. + * @param aFont Font parameter required by super class constructor. + * @param aFormattedCellData List box data pointer. + */ + CEasyDialingListBoxItemDrawer( + MTextListBoxModel* aTextListBoxModel, + const CFont* aFont, + CFormattedCellListBoxData* aFormattedCellData); + + /** + * Returns pointer to item data. + */ + CEasyDialingListBoxData* EasyDialingCellData() const; + + /** + * Draws item. + * @param aItemIndex Index of the item. + * @param aItemRectPos Position of the item. + * @param aItemIsSelected ETrue if item is selected, EFalse otherwise. + * @param aItemIsCurrent ETrue if this item is the current item. + * @param aViewIsEmphasized ETrue if item is emphasized. + * @param aViewIsDimmed ETrue if item is dimmed. + */ + void DrawItem( + TInt aItemIndex, + TPoint aItemRectPos, + TBool aItemIsSelected, + TBool aItemIsCurrent, + TBool aViewIsEmphasized, + TBool aViewIsDimmed) const; + + /** + * Draws data content of the item. Not just text but + * but any content. + * @param aItemIndex Index of the item. + * @param aItemTextRect Rectangle of the item. + * @param aItemIsCurrent ETrue is the item is currently selected item. + * @param aViewIsEmphasized ETrue if the item is emphasized. + * @param aItemIsSelected ETrue if item is selected. + */ + void DrawItemText( + TInt aItemIndex, + const TRect& aItemTextRect, + TBool aItemIsCurrent, + TBool aViewIsEmphasized, + TBool aItemIsSelected ) const; + + /** + * Finds proper listbox colors from theme and makes them active. + */ + void SetColors(); + +protected: + + /** + * Draws background of list item. + * @param aItemTextRect Item rectangle. + */ + void DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect ) const; + +protected: + + /** The matching text colour. */ + TRgb iMatchingText; + + /** The matching text background colour. */ + TRgb iMatchingBack; + }; + + +#endif // _EASYDIALINGLISTBOXDRAWER_H diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialinglistboxview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialinglistboxview.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2010 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: Easy dialing list box view. +* +*/ + +#ifndef _EASYDIALINGLISTBOXVIEW_H +#define _EASYDIALINGLISTBOXVIEW_H + +// INCLUDE FILES +#include + +// CLASS DECLARATIONS + +/* + * Easy dialing listbox view. + */ + +class CEasyDialingListBoxView : public CFormattedCellListBoxView + { +public: + + /** + * Sets current index value to outside-of-range value. After this, no + * item in the listbox is highlighted. + */ + void SetCurrentItemIndexToNone(); + }; + + +#endif // _EASYDIALINGLISTBOXVIEW_H + + + + + + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialinglogger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialinglogger.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,98 @@ +/* +* Copyright (c) 2010 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: Easy dialing logging functions. +* +*/ + + +#ifndef __EASYDIALINGLOGGER_H__ +#define __EASYDIALINGLOGGER_H__ + +// Note! These macros are to be used in trace prints (legacy support). +// To be used only in error situations and major events only ! +// Otherwise use OST - Open System Trace + +#ifdef _DEBUG + +// #define USE_FILE_LOGGING + +// From this point on, internal implementation + +#include // for RDebug::Print + +#ifdef USE_FILE_LOGGING +#include +_LIT( KLogDir, "ed" ); +_LIT( KLogFile, "easydialing.log" ); +#endif + + +NONSHARABLE_CLASS(TOverflowTruncate) : public TDes16Overflow + { + public: + void Overflow(TDes16& /*aDes*/) {} + }; + +inline void DoDebugPrintF(TRefByValue aFmt, VA_LIST& aList) + { + TBuf<200> buf; + TOverflowTruncate overFlow; + buf.AppendFormatList( aFmt, aList, &overFlow ); + _LIT(KLogPrintFormat,"%S: %S"); // Log printing format + const TDesC& thname = RThread().Name(); // With FullName more info + RDebug::Print( KLogPrintFormat, &thname, &buf ); +#ifdef USE_FILE_LOGGING + RFileLogger::Write(KLogDir, KLogFile, EFileLoggingModeAppend, buf); +#endif + } + +inline void DebugPrintF(const TRefByValue aFmt,...) + { + VA_LIST list; + VA_START(list,aFmt); + DoDebugPrintF(aFmt, list); + } + + +// Macros + +#define LOGSTRING( TEXT ) DebugPrintF( _L( TEXT ) ) +#define LOGSTRING1( TEXT, VAR1 ) DebugPrintF( _L( TEXT ), VAR1 ) +#define LOGSTRING2( TEXT, VAR1, VAR2 ) DebugPrintF( _L( TEXT ), VAR1, VAR2 ) + +#define PERF_MEASURE_START \ + TTime startTime, endTime; \ + startTime.HomeTime();\ + DebugPrintF( _L("EasyDialingPlugin: Measure start..") ); + + +#define PERF_MEASURE_STOP \ + endTime.HomeTime(); \ + TTimeIntervalMicroSeconds microsecs = endTime.MicroSecondsFrom( startTime ); \ + TReal timeSecs=(TReal)((TReal)(microsecs.Int64())/1000); \ + DebugPrintF( _L("EasyDialingPlugin: Measure stop, time taken %5.3f msecs"), timeSecs ); + +#else + +#define LOGSTRING( TEXT ) +#define LOGSTRING1( TEXT, VAR1 ) +#define LOGSTRING2( TEXT, VAR1, VAR2 ) + +#define PERF_MEASURE_START +#define PERF_MEASURE_STOP + +#endif + +#endif + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingpanics.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingpanics.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2010 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: Easy dialing panic codes and macro. +* +*/ + +#ifndef EASYDIALINGPANICS_H_ +#define EASYDIALINGPANICS_H_ + +/** Easy dialing panic codes */ +enum + { + EEasyDialingPanicInvalidListBoxModelString = 200, + EEasyDialingPanicNoResults, + EEasyDialingPanicNoContactSelected, + EEasyDialingActionNotSupported, + EEasyDialingNoFontFound, + // add further panics here + }; + + +/** Easy dialing string for panic function */ +_LIT( KEasyDialingPanicString, "Easy dialing" ); + + +/** + * Panic function for easy dialing module. + * + */ +inline void EasyDialingPanic( TInt aReason ) + { + User::Panic( KEasyDialingPanicString, aReason ); + } + + +#endif /* EASYDIALINGPANICS_H_ */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingplugin.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,502 @@ +/* +* Copyright (c) 2010 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: Easy dialing plugin implementation. +* +*/ + + +#ifndef __CEASYDIALINGPLUGIN_H__ +#define __CEASYDIALINGPLUGIN_H__ + +// INCLUDES + +#include "dialingextensioninterface.h" +#include +#include +#include +#include "measydialingcenreplistenerobserver.h" +#include "mcontactdatamanagerobserver.h" +#include "medcontactorobserver.h" +#include "easydialingcontactdatamanager.h" // for TNameOrder + +// Phonebook engine API +#include + +// ListBox Observer API +#include + +// MAknInputBlockCancelHandler +#include + + +// CONSTANTS + +/** Maximum constact search string length. */ +const TInt KEDMaxSearchStringLength = 200; + +/** Maximum string length for listbox model string. */ +const TInt KEDMaxContactStringLength = 600; + +/** Maximum phone number length. */ +const TInt KEDMaxPhoneNumberLength = 64; + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +class CPSRequestHandler; +class CPsQuery; +class CVPbkContactStoreUriArray; +class CVPbkContactManager; +class CEasyDialingListBox; +class MVPbkContactLink; +class CEasyDialingCenrepListener; +class CEasyDialingContactDataManager; +class CEDContactorService; +class CEikMenuPane; +class CAsyncCallBack; + + +// CLASS DECLARATION + +/** +* Easy dialing plugin. +*/ +class CEasyDialingPlugin : public CDialingExtensionInterface, + public MVPbkContactStoreListObserver, + public MPsResultsObserver, + public MCCAObserver, + public MEasyDialingCenrepListenerObserver, + public MContactDataManagerObserver, + public MEDContactorObserver, + public MEikListBoxObserver, + public MAknInputBlockCancelHandler +{ +public: + + /** + * Static constructor. + * @return: Created object. + */ + static CEasyDialingPlugin* NewL(); + + /** + * Destructor. + */ + virtual ~CEasyDialingPlugin(); + +public: // from CCoeControl + + /** + * From CCoeControl. + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * From CCoeControl + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl + */ + CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * From CCoeControl + */ + void MakeVisible( TBool aVisible ); + +protected: + + /** + * See CCoeControl + */ + void SizeChanged(); + + /** + * See CCoeControl + */ + void FocusChanged( TDrawNow aDrawNow ); + +public: // from CDialingExtensionInterface + + /** + * Does further initialization to component. + * @param: parent container of this control. + */ + virtual void InitializeL( CCoeControl& aParent ); + + /** + * Reset the previour easy dialing search. + */ + void Reset(); + + /** + * Adds an observer to dialing extension. + * @param: aObserver: observer to be added. + */ + void AddObserverL( MDialingExtensionObserver* aObserver ); + + /** + * Removes an observer from dialing extension. + * @param: aObserver: observer to be removed. + */ + void RemoveObserver( MDialingExtensionObserver* aObserver ); + + /** + * Sets input string (search string) to easy dialing. + * @param: aDesC: input string descriptor. + */ + void SetInputL( const TDesC& aDesC ); + + /** + * Returns the number of matching contacts in previous search. + * @return: number of matches. + */ + TInt MatchingContactCount(); + + /** + * Gets the resource id of plugin's control button area resource. + * + * @return Resource id. + */ + TInt CbaResourceId(); + + /** + * From CDialingExtensionInterface. + * Gets the resource id of plugin's menu bar resource. + * + * @return Resource id. + */ + TInt MenuResourceId(); + + /** + * From CDialingExtensionInterface. + * Gets the resource id of plugin's menu bar resource. + * + * @param aMenuPane Menu pane + * @param aMenuResourceId Menu bar resource id. + * @return Resource id. + */ + TBool InitializeMenuPaneL( CEikMenuPane& aMenuPane, TInt aMenuResourceId ); + + /** + * From CDialingExtensionInterface. + * Gets the resource id of plugin's menu bar resource. + * + * @param aCommand Command id. + * @return ETrue if command was handled, EFalse otherwise. + */ + TBool HandleCommandL( TInt aCommand ); + + /** + * Tells if extension is currently enabled from settings. + * @return ETrue if extension is enabled, EFalse otherwise. + */ + TBool IsEnabled() const; + +public: + + /** + * From MVPbkContactStoreListObserver. + */ + void StoreReady(MVPbkContactStore& aContactStore); + + /** + * From MVPbkContactStoreListObserver. + */ + void StoreUnavailable(MVPbkContactStore& aContactStore, TInt aReason); + + /** + * From MVPbkContactStoreListObserver. + */ + void HandleStoreEventL( MVPbkContactStore& aContactStore, + TVPbkContactStoreEvent aStoreEvent); + + /** + * From MVPbkContactStoreListObserver. + */ + void OpenComplete(); + + /** + * From MEasyDialingCenrepListenerObserver. + */ + void EasyDialingSettingsChanged( TInt aValue ); + + /** + * From MEasyDialingCenrepListenerObserver. + */ + void EasyDialingContactThumbnailsSettingsChanged( TInt aThumbnailSettingValue ); + + /** + * From MContactDataManagerObserver. + */ + void AllContactDataLoaded(); + + /** + * From MContactDataManagerObserver. + */ + void NameOrderChanged(); + + /** + * From MContactDataManagerObserver. + */ + void FavouritesChanged(); + + /** + * From MEDContactorObserver. + */ + void InformContactorEvent( MEDContactorObserver::TEvent aEvent ); + + /** + * From MEikListBoxObserver. + */ + void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); + + /** + * From MAknInputBlockCancelHandler. + */ + void AknInputBlockCancel(); + + +private: + + /** + * Constructor. + */ + CEasyDialingPlugin (); + + /** + * Second phase constructor. + */ + void ConstructL (); + + void InitPredictiveContactSearchL(); + + void SetSortOrderL( CEasyDialingContactDataManager::TNameOrder aNameOrder ); + + /** + * From MPsResultsObserver. + */ + virtual void HandlePsResultsUpdate( RPointerArray& aResults, RPointerArray& aSeqs ); + virtual void HandlePsError( TInt aErrorCode ); + virtual void CachingStatus( TCachingStatus& aStatus, TInt& aError ); + + /** + * FindContactFieldPCSIndex + * Searches the index that stores the given contact field. + * To see possible contact field numbering, see file "vpbkeng.rsg". + * @param: contact field to search for. See file "vpbkeng.rsg" + * for contact field numbering. + * @return: index of the contact field. KErrNotFound if field was not found. + * Non-negative return values are for indexing CPsClientData array. + */ + TInt FindContactFieldPCSIndexL( TInt aIndex ); + + /** + * HandlePsResultsUpdateL + * A leaving function to be trapped in HandlePsResultsUpdate. + */ + void HandlePsResultsUpdateL( RPointerArray& aResults, RPointerArray& aSeqs ); + +public: + + /** + * MCCAObserver function handling exit of CCA launcher. + */ + void CCASimpleNotifyL( TNotifyType aType, TInt aReason ); + +private: + + /* + * Informs all observers registered with AddObserverL. + * @param: aEvent: event id to be informed. + */ + void InformObservers( MDialingExtensionObserver::TEvent aEvent ); + + +private: + + /** + * This method perform the drawing functionality of the component. + * @param: aRect: The rect to be rendered + * @return None + */ + void Draw( const TRect& aRect ) const; + + /** + * Initiates predictive contact search. + */ + void LaunchSearchL(); + + /** + * Opens ca launcher for currently selected contact. + */ + void LaunchCurrentContactL(); + + /** + * Creates listbox model string. + */ + void CreateListBoxContactStringL( + const TDesC& aContactString, + MVPbkContactLink *aLink, + TBool aMatchThumbnails, + TBool aFav ); + + /** + * Creates string with first name, last name and company name. + */ + HBufC* CreateContactStringLC( CPsClientData* aResult, + CEasyDialingContactDataManager::TNameOrder aNameOrder ); + + /** Possible actions launched by this plugin. */ + enum TEasyDialingAction + { + ENoActionDefined, + ECallCurrentContact, + EVideoCallCurrentContact, + ESendMessageCurrentContact, + ELaunchCurrentContact, + ELaunchSearch, + EInitializePcs + }; + + /** + * Initiates asynchronous callback to launch action and sets + * input blocker active. + */ + void AsyncActionLaunchL( const TEasyDialingAction aAction ); + + /** + * Callback for CAsyncCallBack. Launches action set in iActionToBeLaunched + * and stops input block when launch is done. + */ + static TInt AsyncCallBackToLaunchAction( TAny* aPtr ); + + /** + * Launches action defined in iActionToBeLaunched. + */ + void DoLaunchActionL(); + + /** + * Cancels async action launch and input block. + */ + void CancelActionLaunchAndInputBlock(); + + /** + * Handles change events from contact database and favourites view. + */ + void DoHandleContactsChangedL(); + + /** + * Makes contact listbox visible. Effect is used if feasible. + */ + void ShowContactListBoxWithEffect(); + + /** + * Makes contact listbox invisible. Effect is used if feasible. + */ + void HideContactListBoxWithEffect(); + + +private: + + /** Textual version of current search string. */ + TBuf iSearchString; + + /** Handle to predictive search engine. Owned. */ + CPSRequestHandler* iPredictiveContactSearchHandler; + + /** PCS type of presentation of the current search string. Owned. */ + CPsQuery* iPredictiveSearchQuery; + + /** If ETrue, completing PCS searches are not displayed but just discarded. */ + TBool iDiscardCompletingSearches; + + /** ETrue if contact database has been changed and a new search is needed. */ + TBool iNewSearchNeeded; + + /** Array of used data stores. Owned. */ + RPointerArray iContactDataStores; + + /** Contact store array. Owned. */ + CVPbkContactStoreUriArray* iContactStoreUriArray; + + /** Contact manager handle. Owned. */ + CVPbkContactManager* iContactManager; + + /** Search result field index for first name field. */ + TInt iFirstNamePCSIndex; + + /** Search result field index for last name field. */ + TInt iLastNamePCSIndex; + + /** Search result field index for first name field. */ + TInt iCompanyNamePCSIndex; + + /** Array containing observers to this class. Owned. */ + RPointerArray iObservers; + + /** Contact listbox. Owned. */ + CEasyDialingListBox* iContactListBox; + + /** Listbox model from search results. Owned. */ + CDesCArrayFlat* iListBoxModel; + + /** Number of found matching contacts from most recent search. */ + TInt iNumberOfNames; + + /** Handle to contact launcher. */ + MCCAConnectionExt* iContactLauncher; + + /** ETrue if contact launcher (a.k.a. communication launcher) is open. */ + TBool iContactLauncherActive; + + /** If true, contact listbox must not reset focus when contact launcher exits. */ + TBool iRememberFocus; + + /** Working buffer for creating contact string to listbox. */ + TBuf iContactStringCreationBuffer; + + /** Central repository listener. Owned. */ + CEasyDialingCenrepListener* iCenrepListener; + + /** Contact data manager. Owned. */ + CEasyDialingContactDataManager* iContactDataManager; + + /** Easy dialing contactor service. Owned. */ + CEDContactorService* iContactorService; + + /** Easy dialing resource file offset in current application. */ + TInt iResourceFileOffset; + + /** Blocks user input when action is being launched. NULL if not active. Owned. */ + CAknInputBlock* iInputBlocker; + + /** Used to launch action asynchronously. Owned.*/ + CAsyncCallBack* iAsyncCallBack; + + /** Action to be launched next asynchronously. */ + TEasyDialingAction iActionToBeLaunched; +}; + + +#endif //__CEASYDIALINGPLUGIN_H__ + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/easydialingutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/easydialingutils.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2010 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: Helper class for easydialing. +* +*/ + +#ifndef __EASYDIALINGUTILS_H__ +#define __EASYDIALINGUTILS_H__ + +#include "easydialingcontactdatamanager.h" // for TNameOrder + +class EasyDialingUtils + { + public: + + /* + * Creates contact string from first name, last name and company name. + * F.ex. "Firstname Lastname\tCompany" + * @param aFirstName First name + * @param aFirstName Last name + * @param aFirstName Comapany name + * @param aNameOrder The name ordering to be used + * @return Contact string (in cleanupstack) + */ + static HBufC* CreateContactStringLC( + const TDesC& aFirstName, + const TDesC& aLastName, + const TDesC& aCompanyName, + CEasyDialingContactDataManager::TNameOrder aNameOrder ); + }; + +#endif //__EASYDIALINGUTILS_H__ + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/mcontactdatamanagerobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/mcontactdatamanagerobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2010 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: Easy dialing contac data observer class. +* +*/ + +#ifndef __MCONTACTDATAMANAGEROBSERVER_H__ +#define __MCONTACTDATAMANAGEROBSERVER_H__ + +/** + * MContactDataManagerObserver + * Contact data manager observer interface + */ +class MContactDataManagerObserver + { +public: + virtual void AllContactDataLoaded() = 0; + + virtual void NameOrderChanged() = 0; + + virtual void FavouritesChanged() = 0; + }; + +#endif //__MCONTACTDATAMANAGEROBSERVER_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/inc/measydialingcenreplistenerobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/inc/measydialingcenreplistenerobserver.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2010 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: Easy dialing cenrep observer class. +* +*/ + + +#ifndef __MEASYDIALINGCENREPLISTENEROBSERVER_H__ +#define __MEASYDIALINGCENREPLISTENEROBSERVER_H__ + +/** + * Easy dialing central repository observer. + */ +class MEasyDialingCenrepListenerObserver + { +public: + + + /** + * Called when easy dialing feature setting (on / off) value is changed. + * @param aValue 1 if setting is set on, otherwise 0. + */ + virtual void EasyDialingSettingsChanged(TInt aValue) = 0; + + + /** + * Called when easy dialing thumbnail setting (shown / not shown) value is changed. + * @param aThumbnailSettingValue 1 if shown, otherwise 0. + */ + virtual void EasyDialingContactThumbnailsSettingsChanged( TInt aThumbnailSettingValue ) = 0; + }; + +#endif //__MEASYDIALINGCENREPLISTENEROBSERVER_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/layers.sysdef.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/layers.sysdef.xml Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,19 @@ + + +]> + + + + + + + + + + + + + + + \ No newline at end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/loc/easydialing.loc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/loc/easydialing.loc Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,38 @@ +/* +* Copyright (c) 2010 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: Easy dialing localization file. +* +*/ + +// LOCALISATION STRINGS + +// d: Option in Number Acquisition state menu. +// d: It contains submenu on/off states of easy dialing. +// l: list_single_pane_t1_cp2/opt3 +// r:9.1 +#define qtn_easydial_option_submenu_title "Contact search" + +//d: Submenu item for easy dialing setting. +//l: list_single_popup_submenu_pane_t1/opt1 +//r:9.2 +// +#define qtn_easy_dialing_on "On" + +//d: Submenu item for easy dialing setting. +//l: list_single_popup_submenu_pane_t1/opt1 +//r:9.2 +// +#define qtn_easy_dialing_off "Off" + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/rom/easydialingplugin.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/rom/easydialingplugin.iby Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,41 @@ +/* +* Copyright (c) 2010 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: The ROM definition file +* +*/ + +#ifdef FF_HOME_SCREEN_EASY_DIALING + +#ifndef __ED_PLUGIN_IBY_ +#define __ED_PLUGIN_IBY_ + +#include + +// Stub sis file +data=ZSYSTEM\install\easydialing_stub.sis System\Install\easydialing_stub.sis + +// Binary code and not localized resources + +ECOM_PLUGIN(easydialingplugin.dll,easydialingplugin.rsc) + +file=ABI_DIR\BUILD_DIR\edcontactor.dll SHARED_LIB_DIR\edcontactor.dll +data=DATAZ_\RESOURCE_FILES_DIR\edcontactor.rsc RESOURCE_FILES_DIR\edcontactor.rsc + +data=\epoc32\data\z\private\10202be9\200212A0.txt "\private\10202be9\200212A0.txt" + +#endif // __ED_PLUGIN_IBY_ + +#endif // FF_HOME_SCREEN_EASY_DIALING + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/rom/easydialingpluginresources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/rom/easydialingpluginresources.iby Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,34 @@ +/* +* Copyright (c) 2010 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: The ROM definition file +* +*/ + +#ifdef FF_HOME_SCREEN_EASY_DIALING + +#ifndef __ED_PLUGINRESOURCES_IBY_ +#define __ED_PLUGINRESOURCES_IBY_ + +#include + +// Localisable resources + +data=DATAZ_\RESOURCE_FILES_DIR\easydialingpluginresources.rsc RESOURCE_FILES_DIR\easydialingpluginresources.rsc +data=DATAZ_\APP_RESOURCE_DIR\easydialing.mif APP_RESOURCE_DIR\easydialing.mif + +#endif // __ED_PLUGINRESOURCES_IBY_ + +#endif FF_HOME_SCREEN_EASY_DIALING + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/dllmain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/dllmain.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,79 @@ +/* +* Copyright (c) 2010 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: Easy dialing DLL main. +* +*/ + + +// INCLUDE FILES + +#include +#include +#include "easydialingplugin.h" +#include "easydialingconstants.hrh" + + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +const TImplementationProxy ImplementationTable[] = + { +#ifdef __EABI__ + IMPLEMENTATION_PROXY_ENTRY( EASYDIALING_PLUGIN_ECOM_IMPL_UID, CEasyDialingPlugin::NewL ) +#else + {{EASYDIALING_PLUGIN_ECOM_IMPL_UID}, CEasyDialingPlugin::NewL } +#endif + }; + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + +// --------------------------------------------------------- +// ImplementationGroupProxy +// +// Provides a key value pair table, this is used to identify +// Function used to return an instance of the proxy table. +// the correct construction function for the requested interface. +// --------------------------------------------------------- +// +EXPORT_C const TImplementationProxy* ImplementationGroupProxy (TInt& aTableCount) + { + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); + return ImplementationTable; + } + +// --------------------------------------------------------- +// E32Dll +// +// Standard Symbian OS DLL entry point. +// --------------------------------------------------------- +// +#ifndef EKA2 +TBool E32Dll(TDllReason) + { + return ETrue; + } +#endif // EKA2 diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialingcenreplistener.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialingcenreplistener.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,135 @@ +/* +* Copyright (c) 2010 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: Easy dialing cenrep listener. +* +*/ + +// INCLUDE FILES +#include +#include +#include "easydialingcenreplistener.h" +#include "measydialingcenreplistenerobserver.h" +#include "easydialingcrkeys.h" + +// ================= MEMBER FUNCTIONS ======================= + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CEasyDialingCenrepListener* CEasyDialingCenrepListener::NewL(MEasyDialingCenrepListenerObserver* aObserver) + { + CEasyDialingCenrepListener* self = new (ELeave) CEasyDialingCenrepListener(aObserver); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::~CEasyDialingCenrepListener +// Destructor +// ----------------------------------------------------------------------------- +// +CEasyDialingCenrepListener::~CEasyDialingCenrepListener() + { + if (iNotifyHandler) + { + iNotifyHandler->StopListening(); + delete iNotifyHandler; + iNotifyHandler = NULL; + } + + delete iClient; + } + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::CEasyDialingCenrepListener +// C++ default constructor. +// ----------------------------------------------------------------------------- +// +CEasyDialingCenrepListener::CEasyDialingCenrepListener(MEasyDialingCenrepListenerObserver* aObserver) + : iObserver(aObserver), + iEasyDialingSettingValue(0), + iContactThumbnailsSettingsValue(1) + + { + } + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::ConstructL +// Symbian 2nd phase constructor. +// ----------------------------------------------------------------------------- +// +void CEasyDialingCenrepListener::ConstructL() + { + iClient = CRepository::NewL(KCRUidEasyDialSettings); + + User::LeaveIfError(iClient->Get( KEasyDialing, iEasyDialingSettingValue )); + User::LeaveIfError(iClient->Get( KEasyDialingContactThumbnails, iContactThumbnailsSettingsValue )); + + iNotifyHandler = CCenRepNotifyHandler::NewL(*this, *iClient ); + iNotifyHandler->StartListeningL(); + } + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::KeyValueL +// Returns key value +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingCenrepListener::Value() const + { + return iEasyDialingSettingValue; + } + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::SetEasyDialingSettingsValue +// Sets key value. +// ----------------------------------------------------------------------------- +// +void CEasyDialingCenrepListener::SetEasyDialingSettingsValue( const TInt aValue ) + { + iClient->Set( KEasyDialing, aValue ); + } + +// ----------------------------------------------------------------------------- +// CEasyDialingCenrepListener::HandleNotifyInt +// ----------------------------------------------------------------------------- +// +void CEasyDialingCenrepListener::HandleNotifyGeneric( TUint32 aId ) + { + TInt value(0); + + iClient->Get( aId, value ); + + if( aId == KEasyDialingContactThumbnails) + { + if( value!= iContactThumbnailsSettingsValue ) + { + iContactThumbnailsSettingsValue = value; + iObserver->EasyDialingContactThumbnailsSettingsChanged( iContactThumbnailsSettingsValue ); + } + } + + else if ( aId == KEasyDialing ) + { + if ( value != iEasyDialingSettingValue ) + { + iEasyDialingSettingValue = value; + iObserver->EasyDialingSettingsChanged( iEasyDialingSettingValue ); + } + } + } +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialingcontactdata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialingcontactdata.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,185 @@ +/* +* Copyright (c) 2010 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: Easy dialing contact data container. +* +*/ + +#include +#include +#include + +#include "easydialingcontactdata.h" + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::CEasyDialingContactData +// --------------------------------------------------------------------------- +// +CEasyDialingContactData::CEasyDialingContactData(MVPbkContactLink* aContactLink) + : iContactLink(aContactLink), iThumbnail(NULL),iFav(EFalse), iLoaded(EFalse) + { + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::~CEasyDialingContactData +// --------------------------------------------------------------------------- +// +CEasyDialingContactData::~CEasyDialingContactData() + { + delete iThumbnail; + delete iContactLink; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::Id +// --------------------------------------------------------------------------- +// +MVPbkContactLink* CEasyDialingContactData::ContactLink() + { + return iContactLink; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::Thumbnail +// --------------------------------------------------------------------------- +// +CFbsBitmap* CEasyDialingContactData::Thumbnail() + { + return iThumbnail; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::SetThumbnail +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::SetThumbnail(CFbsBitmap* aThumbnail) + { + if (iThumbnail) + { + delete iThumbnail; + } + iThumbnail = aThumbnail; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::Fav +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactData::Fav() + { + return iFav; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::SetFav +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::SetFav(TBool aFav) + { + iFav = aFav; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::IsLoaded +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactData::IsLoaded() + { + return iLoaded; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::LoadingComplete +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::LoadingComplete() + { + iLoaded = ETrue; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::DeleteThumbnail +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::DeleteThumbnail() + { + delete iThumbnail; + iThumbnail = NULL; + iLoaded = EFalse; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::VoiceCallAvailable +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactData::VoiceCallAvailable() + { + return iVoiceCallAvailable; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::SetVoiceCallAvailable +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::SetVoiceCallAvailable( TBool aVailable ) + { + iVoiceCallAvailable = aVailable; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::VideoCallAvailable +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactData::VideoCallAvailable() + { + return iVideoCallAvailable; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::SetVideoCallAvailable +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::SetVideoCallAvailable( TBool aVailable ) + { + iVideoCallAvailable = aVailable; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::UniEditorAvailable +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactData::UniEditorAvailable() + { + return iUniEditorAvailable; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactData::SetUniEditorAvailable +// --------------------------------------------------------------------------- +// +void CEasyDialingContactData::SetUniEditorAvailable( TBool aVailable ) + { + iUniEditorAvailable = aVailable; + } + + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialingcontactdatamanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialingcontactdatamanager.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,1007 @@ +/* +* Copyright (c) 2010 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: Easy dialing contact data manager. +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include // MVPbkContactStore +#include +#include + +#include + +#include "easydialingcontactdata.h" +#include "easydialingcontactdatamanager.h" +#include "easydialingutils.h" +#include "mcontactdatamanagerobserver.h" +#include "easydialingcrkeys.h" +#include "easydialinglogger.h" + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::CEasyDialingContactDataManager +// --------------------------------------------------------------------------- +// +CEasyDialingContactDataManager::CEasyDialingContactDataManager(CVPbkContactManager* aContactManager) + : iImageOperation(NULL), iContactManager(aContactManager), iContactOperation(NULL), + iContactThumbnailSetting(ETrue), iStoreReady(EFalse) + { + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::~CEasyDialingContactDataManager +// --------------------------------------------------------------------------- +// +CEasyDialingContactDataManager::~CEasyDialingContactDataManager() + { + Reset(); + iWaitingContacts.Close(); + iContactDataArray.Close(); + delete iImageManager; + delete iVPbkTopContactManager; + delete iImageOperation; + delete iContactOperation; + delete iFavsView; + if (iContactStore) + { + iContactStore->Close( *this); + } + + if ( iPbkSettings ) + { + iPbkSettings->Close(); + } + delete iPbkSettings; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ConstructL +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::ConstructL() + { + iImageManager = CPbk2ImageManager::NewL(*iContactManager); + + TVPbkContactStoreUriPtr uri( VPbkContactStoreUris::DefaultCntDbUri() ); + iContactStore = iContactManager->ContactStoresL().Find( uri ); + + iVPbkTopContactManager = CVPbkTopContactManager::NewL( *iContactManager ); + + iImageManagerParams.iFlags = TPbk2ImageManagerParams::EScaleImage | TPbk2ImageManagerParams::EKeepAspectRatio; + iThumbnailFieldType = iContactManager->FieldTypes().Find( R_VPBK_FIELD_TYPE_THUMBNAILPIC ); + + // Open the store + iContactStore->OpenL( *this ); + + // Read easydialing setting from cenrep. + CRepository* cenrep = CRepository::NewL( KCRUidEasyDialSettings ); + CleanupStack::PushL( cenrep ); + User::LeaveIfError( cenrep->Get( KEasyDialingContactThumbnails, iContactThumbnailSetting ) ); + CleanupStack::PopAndDestroy( cenrep ); + + iPbkSettings = PbkGlobalSettingFactory::CreatePersistentSettingL(); + iPbkSettings->ConnectL( MPbkGlobalSetting::EGeneralSettingCategory ); + iPbkSettings->RegisterObserverL( this ); + + // Get name order from Phonebook settings + UpdateNameOrderL(); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::SetObserver +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::SetObserver(MContactDataManagerObserver* aObserver) + { + iObserver = aObserver; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::SetThumbnailSize +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::SetThumbnailSize(const TSize& aSize) + { + if (iImageManagerParams.iSize != aSize) + { + iImageManagerParams.iSize = aSize; + Reload(); + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::GetThumbnailIdL +// --------------------------------------------------------------------------- +// +HBufC* CEasyDialingContactDataManager::GetThumbnailIdL( + MVPbkContactLink* aContact, TBool aMatchThumbnails, TBool aFav ) + { + LOGSTRING("CEasyDialingContactDataManager: GetThumbnailIdL"); + TInt newIndex(KErrNotFound); + if (aMatchThumbnails) + { + newIndex = FindContactIndex( aContact ); + } + + LOGSTRING1("newIndex = %d", newIndex); + if (newIndex == KErrNotFound) + { + MVPbkContactLink* newLink = aContact->CloneLC(); + CEasyDialingContactData *newThumbnail = new (ELeave) CEasyDialingContactData(newLink); + CleanupStack::Pop(); // newLink + newIndex = iContactDataArray.Count(); + CleanupStack::PushL(newThumbnail); + iContactDataArray.AppendL(newThumbnail); + CleanupStack::Pop(newThumbnail); + } + + iContactDataArray[ newIndex ]->SetFav( aFav ); + + HBufC* id = HBufC::NewL( sizeof(TInt) * 2 ); // space for hex representation of TInt + TPtr ptr = id->Des(); + ptr.Num(newIndex, EHex); + LOGSTRING1("CEasyDialingContactDataManager: GetThumbnailIdL returns %S", id); + return id; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::GetThumbnailAndFav +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactDataManager::GetThumbnailAndFav(const TDesC& aId, CFbsBitmap*& aThumbnail, TBool& aFav) + { + LOGSTRING("CEasyDialingContactDataManager: GetThumbnailAndFav"); + TUint idVal(0); + TLex lex(aId); + lex.Val(idVal, EHex); + + TBool retVal; + + CEasyDialingContactData* thumbnail = iContactDataArray[idVal]; + aFav = thumbnail->Fav(); + if (thumbnail->IsLoaded()) + { + aThumbnail = thumbnail->Thumbnail(); + retVal = ETrue; + } + else + { + aThumbnail = NULL; + retVal = EFalse; + if (iWaitingContacts.Find(idVal) == KErrNotFound) + { + LOGSTRING1("iWaitingContacts.Append %d", idVal); + iWaitingContacts.Append(idVal); + TRAPD(err, LoadNextContactDataL()); + if (err) + { + HandleError(err); + } + } + } + LOGSTRING("CEasyDialingContactDataManager: GetThumbnailAndFav Exit"); + return retVal; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::IsFavL +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactDataManager::IsFavL( MVPbkContactLink* aLink ) + { + if ( iFavsView && iFavsViewReady && iFavsView->IndexOfLinkL( *aLink ) > KErrNotFound ) + { + return ETrue; + } + else + { + return EFalse; + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::NumberOfFavsL +// --------------------------------------------------------------------------- +// +TInt CEasyDialingContactDataManager::NumberOfFavsL() + { + if ( iFavsView && iFavsViewReady ) + { + return iFavsView->ContactCountL(); + } + else + { + return 0; + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::FavLinkLC +// --------------------------------------------------------------------------- +// +MVPbkContactLink* CEasyDialingContactDataManager::FavLinkLC( TInt aIndex ) + { + if ( !iFavsView || !iFavsViewReady ) + { + // LC function should not return normally unless it has actually + // put something to cleanup stack + User::Leave( KErrNotFound ); + } + return iFavsView->ContactAtL( aIndex ).CreateLinkLC(); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::FavContactStringLC +// --------------------------------------------------------------------------- +// +HBufC* CEasyDialingContactDataManager::FavContactStringLC( TInt aIndex, TNameOrder aNameOrder ) + { + const MVPbkBaseContactFieldCollection& fields = iFavsView->ContactAtL( aIndex ).Fields(); + TPtrC firstName; + TPtrC lastName; + TPtrC companyName; + for ( TInt i = 0; i < fields.FieldCount(); i++ ) + { + const MVPbkFieldType* fieldType = fields.FieldAt( i ).MatchFieldType( 0 ); + switch ( fieldType->FieldTypeResId() ) + { + case R_VPBK_FIELD_TYPE_LASTNAME: + { + const MVPbkContactFieldTextData& data = + MVPbkContactFieldTextData::Cast( fields.FieldAt( i ).FieldData() ); + lastName.Set( data.Text() ); + } + break; + case R_VPBK_FIELD_TYPE_FIRSTNAME: + { + const MVPbkContactFieldTextData& data = + MVPbkContactFieldTextData::Cast( fields.FieldAt( i ).FieldData() ); + firstName.Set( data.Text() ); + } + break; + case R_VPBK_FIELD_TYPE_COMPANYNAME: + { + const MVPbkContactFieldTextData& data = + MVPbkContactFieldTextData::Cast( fields.FieldAt( i ).FieldData() ); + companyName.Set( data.Text() ); + } + break; + default: + break; + } + } + + return EasyDialingUtils::CreateContactStringLC( firstName, lastName, companyName, aNameOrder ); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::NameOrder +// --------------------------------------------------------------------------- +// +CEasyDialingContactDataManager::TNameOrder CEasyDialingContactDataManager::NameOrder() + { + return iNameOrder; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::Pause +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::Pause( TBool aPause ) + { + if ( iPause != aPause ) + { + iPause = aPause; + + if ( !iPause && iWaitingContacts.Count() ) + { + TRAPD( err, LoadNextContactDataL()); + if ( err ) + { + HandleError(err); + } + } + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::InitReady +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::InitReady() + { + // Initialization is ready. we can start loading contact data, if needed. + // (It is unlikely that there is any data to load at this point) + iStoreReady = ETrue; + if ( iWaitingContacts.Count() ) + { + TRAPD( err, LoadNextContactDataL() ) + if ( err ) + { + HandleError( err ); + } + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::FindContactIndex +// --------------------------------------------------------------------------- +// +TInt CEasyDialingContactDataManager::FindContactIndex( MVPbkContactLink* aContact ) + { + TInt index( KErrNotFound ); + + for ( TInt i = 0; i < iContactDataArray.Count(); i++ ) + { + if ( iContactDataArray[i]->ContactLink()->IsSame( *aContact ) ) + { + index = i; + break; + } + } + + return index; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::LoadNextContactDataL +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::LoadNextContactDataL() + { + LOGSTRING("CEasyDialingContactDataManager: LoadNextContactDataL"); + if ( !iImageOperation && !iContactOperation && iWaitingContacts.Count() && iStoreReady && !iPause ) + { + // first we need to load the contact item + CEasyDialingContactData* tn = iContactDataArray[iWaitingContacts[0]]; + iContactOperation = iContactManager->RetrieveContactL( *(tn->ContactLink()), *this); + + if (!iContactOperation) + { + tn->LoadingComplete(); + RDebug::Print(_L("iWaitingContacts.Remove %d"), iWaitingContacts[0]); + iWaitingContacts.Remove(0); + LoadNextContactDataL(); + } + } + LOGSTRING("CEasyDialingContactDataManager: LoadNextContactDataL Exit"); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::PbkImageGetComplete +// From MPbkImageGetObserver +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::Pbk2ImageGetComplete(MPbk2ImageOperation& aOperation, CFbsBitmap* aBitmap) + { + LOGSTRING("CEasyDialingContactDataManager: Pbk2ImageGetComplete"); + TInt index = iWaitingContacts[0]; + LOGSTRING1("iWaitingContacts.Remove %d", iWaitingContacts[0]); + iWaitingContacts.Remove(0); + delete &aOperation; + iImageOperation = NULL; + delete iStoreContact; + iStoreContact = NULL; + + TRAPD(err, DoHandleImageGetCompleteL(aBitmap, index)); + if (err) + { + HandleError(err); + } + LOGSTRING("CEasyDialingContactDataManager: Pbk2ImageGetComplete Exit"); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::PbkImageGetFailed +// From MPbkImageGetObserver +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::Pbk2ImageGetFailed(MPbk2ImageOperation& aOperation, TInt /*aError*/) + { + LOGSTRING("CEasyDialingContactDataManager: Pbk2ImageGetFailed"); + Pbk2ImageGetComplete(aOperation, NULL); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::SettingChangedL +// From MPbkGlobalSettingObserver +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::SettingChangedL( MPbkGlobalSetting::TPbkGlobalSetting aKey ) + { + if ( aKey == MPbkGlobalSetting::ENameOrdering ) + { + UpdateNameOrderL(); + if ( iObserver ) + { + iObserver->NameOrderChanged(); + } + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::UpdateNameOrderL +// Update name order according to Phonebook setting +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::UpdateNameOrderL() + { + /* + * Phonebook name ordering flag, integer value, possible values: + * 0: name order Lastname Firstname + * 1: name order Firstname Lastname + * 2: name order undefined + */ + TInt nameOrderSetting; + iPbkSettings->Get( MPbkGlobalSetting::ENameOrdering, nameOrderSetting ); + + switch ( nameOrderSetting ) + { + case 0: + { + iNameOrder = ELastnameFirstname; + break; + } + case 1: + { + iNameOrder = EFirstnameLastname; + break; + } + case 2: + default: + { + // Decide name order based on UI language: lastname-firstname + // for Chinese, firstname-lastname for the rest of languages. + TLanguage uiLang = User::Language(); + if ( uiLang == ELangPrcChinese || + uiLang == ELangHongKongChinese || + uiLang == ELangTaiwanChinese ) + { + iNameOrder = ELastnameFirstname; + } + else + { + iNameOrder = EFirstnameLastname; + } + } + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::DoHandleImageGetCompleteL +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::DoHandleImageGetCompleteL(CFbsBitmap* aBitmap, TInt aIndex) + { + LOGSTRING("CEasyDialingContactDataManager: DoHandleImageGetCompleteL"); + CEasyDialingContactData *tn = iContactDataArray[aIndex]; + tn->LoadingComplete(); + if (aBitmap) + { + tn->SetThumbnail(aBitmap); + } + + LoadNextContactDataL(); + InformObserver(); + LOGSTRING("CEasyDialingContactDataManager: DoHandleImageGetCompleteL Exit"); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::Reset +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::Reset() + { + LOGSTRING("CEasyDialingContactDataManager: Reset"); + delete iImageOperation; + iImageOperation = NULL; + delete iContactOperation; + iContactOperation = NULL; + delete iStoreContact; + iStoreContact = NULL; + iWaitingContacts.Reset(); + iContactDataArray.ResetAndDestroy(); + iPause = EFalse; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::VoiceCallAvailable +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactDataManager::VoiceCallAvailable( TInt aIndex ) + { + LOGSTRING("CEasyDialingContactDataManager: VoiceCallAvailable"); + + TBool ret( EFalse ); + + if( aIndex >= 0 ) + { + // If the parsed index is valid, return the availability. + ret = iContactDataArray[ aIndex ]->VoiceCallAvailable(); + } + + LOGSTRING1("CEasyDialingContactDataManager: VoiceCallAvailable returns %d", ret); + return ret; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::VideoCallAvailable +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactDataManager::VideoCallAvailable( TInt aIndex ) + { + LOGSTRING("CEasyDialingContactDataManager: VideoCallAvailable"); + + TBool ret( EFalse ); + + if( aIndex >= 0 ) + { + // If the parsed index is valid, return the availability. + ret = iContactDataArray[ aIndex ]->VideoCallAvailable(); + } + + LOGSTRING1("CEasyDialingContactDataManager: VideoCallAvailable returns %d", ret); + return ret; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::UniEditorAvailable +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactDataManager::UniEditorAvailable( TInt aIndex ) + { + LOGSTRING("CEasyDialingContactDataManager: UniEditorAvailable"); + + TBool ret( EFalse ); + + if( aIndex >= 0 ) + { + // If the parsed index is valid, return the availability. + ret = iContactDataArray[ aIndex ]->UniEditorAvailable(); + } + + LOGSTRING1("CEasyDialingContactDataManager: UniEditorAvailable returns %d", ret); + return ret; + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ContactLinkLC +// --------------------------------------------------------------------------- +// +HBufC8* CEasyDialingContactDataManager::ContactLinkLC( TInt aIndex ) + { + LOGSTRING( "CEasyDialingContactDataManager: ContactLinkLC" ); + + if( aIndex >= 0 ) + { + // If the parsed index is valid, return the availability. + return iContactDataArray[ aIndex ]->ContactLink()->PackLC(); + } + else + { + return NULL; + } + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::HandleError +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::HandleError(TInt /*aError*/) + { + LOGSTRING("CEasyDialingContactDataManager: HandleError"); + // Something went wrong, but there is no need to panic. + // Cancel async operations and notify observer that we are done. + iWaitingContacts.Reset(); + delete iImageOperation; + iImageOperation = NULL; + delete iContactOperation; + iContactOperation = NULL; + + // Also mark all contact data as loaded. Otherwise it would just be + // loaded again, which would cause infinite loop if there is a permanent + // problem. + for ( TInt i = 0; i < iContactDataArray.Count(); i++ ) + { + iContactDataArray[i]->LoadingComplete(); + } + + if ( iObserver ) + { + iObserver->AllContactDataLoaded(); + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::StoreReady +// from MVPbkContactStoreObserver +// Called when the contact store is ready to be used, signals +// the next engine state. +// @param aContactStore The store that is ready. +// --------------------------------------------------------------------------- +// + +void CEasyDialingContactDataManager::StoreReady( MVPbkContactStore& /*aContactStore*/ ) + { + // next open the favourites view + TRAPD( err, iVPbkTopContactManager->GetTopContactsViewL( *this, *this ) ); + if ( err ) + { + HandleError( err ); + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::StoreUnavailable +// from MVPbkContactStoreObserver +// Called when a contact store becomes unavailable. +// @param aContactStore The store that became unavailable. +// @param aReason The reason why the store is unavailable. +// This is one of the system wide error codes. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::StoreUnavailable( MVPbkContactStore& /*aContactStore*/, + TInt /*aReason*/ ) + { + // Opening main contact database failed. Easydialing can operate without + // it, but thumbnails and favourite stars can't be shown, and availability + // of action menu items can't be checked. + // Of course, if easydialing can't open the database, probably PCSServer + // can't open it either... + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::HandleStoreEventL +// from MVPbkContactStoreObserver +// Called when changes occur in the contact store. +// IGNORED. +// @param aContactStore A store whose event it is. +// @param aStoreEvent The event that has occurred. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::HandleStoreEventL(MVPbkContactStore& /*aContactStore*/, + TVPbkContactStoreEvent /*aStoreEvent*/) + { + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::VPbkOperationFailed +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::VPbkOperationFailed( + MVPbkContactOperationBase* /*aOperation*/, + TInt /*aError*/ ) + { + // Loading list of favourite contacts failed. + // Continue as if none of the contacts are favourited. + delete iFavsOperation; + iFavsOperation = NULL; + delete iFavsView; + iFavsView = NULL; + iFavsViewReady = EFalse; + + InitReady(); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::VPbkOperationResultCompleted +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::VPbkOperationResultCompleted( + MVPbkContactOperationBase* /*aOperation*/, + MVPbkContactViewBase* aOperationResult ) + { + delete iFavsOperation; + iFavsOperation = NULL; + delete iFavsView; + iFavsView = aOperationResult; + iFavsViewReady = ETrue; + + // Leave can be safely ignored. Notifications of favourites view changes + // will not work, but otherwise Easydialing will work correctly. + TRAP_IGNORE( iFavsView->AddObserverL( *this ) ); + + InitReady(); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ContactViewReady +// From MVPbkContactViewObserver. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::ContactViewReady( + MVPbkContactViewBase& aView ) + { + LOGSTRING("CEasyDialingContactDataManager: ContactViewReady"); + + if ( iFavsView == &aView ) + { + iFavsViewReady = ETrue; + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ContactViewUnavailable +// From MVPbkContactViewObserver. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::ContactViewUnavailable( + MVPbkContactViewBase& aView ) + { + LOGSTRING("CEasyDialingContactDataManager: ContactViewUnavailable"); + + if ( iFavsView == &aView ) + { + iFavsViewReady = EFalse; + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ContactAddedToView +// From MVPbkContactViewObserver. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::ContactAddedToView( + MVPbkContactViewBase& aView, + TInt /*aIndex*/, + const MVPbkContactLink& /*aContactLink*/ ) + { + LOGSTRING("CEasyDialingContactDataManager: ContactAddedToView"); + + if ( iFavsView == &aView ) + { + iObserver->FavouritesChanged(); + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ContactRemovedFromView +// From MVPbkContactViewObserver. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::ContactRemovedFromView( + MVPbkContactViewBase& aView, + TInt /*aIndex*/, + const MVPbkContactLink& /*aContactLink*/ ) + { + LOGSTRING("CEasyDialingContactDataManager: ContactRemovedFromView"); + + if ( iFavsView == &aView ) + { + iObserver->FavouritesChanged(); + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::ContactViewError +// From MVPbkContactViewObserver. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::ContactViewError( + MVPbkContactViewBase& aView, + TInt /*aError*/, + TBool /*aErrorNotified*/ ) + { + LOGSTRING("CEasyDialingContactDataManager: ContactViewError"); + + if ( iFavsView == &aView ) + { + iFavsViewReady = EFalse; + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::DoHandleContactOperationCompleteL +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::DoHandleContactOperationCompleteL( + MVPbkStoreContact* aContact, TInt aIndex) + { + LOGSTRING("CEasyDialingContactDataManager: DoHandleContactOperationCompleteL"); + if (aContact) + { + + __ASSERT_DEBUG((!iStoreContact && !iImageOperation), User::Panic(_L("CEasyDialingContactDataManager"), 1)); + iStoreContact = aContact; + + // Find out the available communication methods for the contact. + GetAvailableServicesL( aContact, aIndex ); + + + // Next initiate async thumbnail get operation. + + if(GetContactThumbnailSetting()) // reads the iContactThumbnailSetting value if it is false we dont fetch images + { + if (iImageManager->HasImage(*iStoreContact, *iThumbnailFieldType)) + { + iImageOperation = iImageManager->GetImageAsyncL( + &iImageManagerParams, + *iStoreContact, + *iThumbnailFieldType, + *this); + } + } + if (!iImageOperation) + { + CEasyDialingContactData *tn = iContactDataArray[aIndex]; + tn->LoadingComplete(); + LOGSTRING1("iWaitingContacts.Remove %d", iWaitingContacts[0]); + iWaitingContacts.Remove(0); + delete iStoreContact; + iStoreContact = NULL; + LoadNextContactDataL(); + InformObserver(); + } + } + else + { + // Opening contact failed. Mark contact data loaded, so it's not opened again. + CEasyDialingContactData *tn = iContactDataArray[aIndex]; + tn->LoadingComplete(); + LOGSTRING1("iWaitingContacts.Remove %d", iWaitingContacts[0]); + iWaitingContacts.Remove(0); + LoadNextContactDataL(); + InformObserver(); + } + LOGSTRING("CEasyDialingContactDataManager: DoHandleContactOperationCompleteL Exit"); + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::GetAvailableServicesL +// +// Reads from parameter contact which services, i.e. communication methods, +// can be used with this contact. +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::GetAvailableServicesL( MVPbkStoreContact* aContact, TInt aIndex ) + { + LOGSTRING1("CEasyDialingContactDataManager: GetAvailableServicesL index = %d", aIndex); + TVPbkStoreContactAnalyzer analyzer( *iContactManager, aContact ); + + CEasyDialingContactData* contactData = iContactDataArray[aIndex]; + + // Voice call is available if either circuit-switched call or voip call is available. + TBool csdCall = (analyzer.HasFieldL( VPbkFieldTypeSelectorFactory::EVoiceCallSelector ) != KErrNotFound); + TBool voipCall = (analyzer.HasFieldL( VPbkFieldTypeSelectorFactory::EVOIPCallSelector ) != KErrNotFound); + + contactData->SetVoiceCallAvailable( csdCall || voipCall ); + + contactData->SetVideoCallAvailable( + analyzer.HasFieldL( VPbkFieldTypeSelectorFactory::EVideoCallSelector ) != KErrNotFound ); + + contactData->SetUniEditorAvailable( + analyzer.HasFieldL( VPbkFieldTypeSelectorFactory::EUniEditorSelector ) != KErrNotFound ); + + LOGSTRING("CEasyDialingContactDataManager: GetAvailableServicesL Exit"); + } + + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::VPbkSingleContactOperationComplete +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::VPbkSingleContactOperationComplete( + MVPbkContactOperationBase& aOperation, + MVPbkStoreContact* aContact ) + { + LOGSTRING("CEasyDialingContactDataManager: VPbkSingleContactOperationComplete"); + delete &aOperation; + iContactOperation = NULL; + TInt index = iWaitingContacts[0]; + LOGSTRING1("VPbkSingleContactOperationComplete, Index=%d", index); + TRAPD(err, DoHandleContactOperationCompleteL(aContact, index)); + if (err) + { + HandleError(err); + } + LOGSTRING("CEasyDialingContactDataManager: VPbkSingleContactOperationComplete Exit"); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::VPbkSingleContactOperationFailed +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::VPbkSingleContactOperationFailed( + MVPbkContactOperationBase& /*aOperation*/, + TInt /*aError*/ ) + { + LOGSTRING("CEasyDialingContactDataManager: VPbkSingleContactOperationFailed"); + delete iContactOperation; + iContactOperation = NULL; + TInt index = iWaitingContacts[0]; + LOGSTRING1("VPbkSingleContactOperationFailed, Index=%d", index); + TRAPD(err, DoHandleContactOperationCompleteL(NULL, index)); + if (err) + { + HandleError(err); + } + LOGSTRING("CEasyDialingContactDataManager: VPbkSingleContactOperationFailed Exit"); + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::InformObserver +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::InformObserver() + { + if (iObserver && !iWaitingContacts.Count()) + { + iObserver->AllContactDataLoaded(); + } + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::SetContactThumbnailSetting +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::SetContactThumbnailSetting( TInt aContactThumbnailSetting ) + { + iContactThumbnailSetting = aContactThumbnailSetting; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::GetContactThumbnailSetting +// --------------------------------------------------------------------------- +// +TBool CEasyDialingContactDataManager::GetContactThumbnailSetting( ) + { + return iContactThumbnailSetting; + } + +// --------------------------------------------------------------------------- +// CEasyDialingContactDataManager::Reload +// --------------------------------------------------------------------------- +// +void CEasyDialingContactDataManager::Reload( ) + { + LOGSTRING("CEasyDialingContactDataManager: Reload"); + + for ( TInt i = 0 ; i < iContactDataArray.Count() ; i++ ) + { + iContactDataArray[ i ]->DeleteThumbnail(); + } + } + + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialinglistbox.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialinglistbox.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,582 @@ +/* +* Copyright (c) 2010 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: Easy dialing list box. +* +*/ + + +// INCLUDE FILES + +#include "easydialinglistbox.h" +#include "easydialinglistboxview.h" +#include "easydialinglistboxitemdrawer.h" +#include "easydialinglistboxdata.h" +#include "easydialingpanics.h" +#include "easydialingcontactdatamanager.h" +#include "easydialingcrkeys.h" + +#include + +#include +#include +#include + +#include + +#include // Required for touch +#include + +#include +#include +#include +#include +#include // for BaflUtils + +#include +#include +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +extern TRect ContactImageBoundingBox( const TRect& aItemRect ); +extern TRect ActionMenuIconBoundingBox(const TRect& aItemRect); + +// CONSTANTS +static const TInt KListBoxMarginWidth = 2; +static const TInt KMaxVisibleItemsPortrait = 3; +static const TInt KMaxVisibleItemsLandscape = 2; + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + + +/* + * ============================================================================== + * + * + * class CEasyDialingListBox + * + * + * ============================================================================== + */ + + +// ----------------------------------------------------------------------------- +// CEasyDialingListBox +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBox::CEasyDialingListBox() : + CEikFormattedCellListBox() + { + } + +// ----------------------------------------------------------------------------- +// ~CEasyDialingListBox +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBox::~CEasyDialingListBox() + { + delete iBGContext; + delete iLongTapDetector; + } + +// ----------------------------------------------------------------------------- +// ConstructL +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::ConstructL( TInt aFlags, + CEasyDialingContactDataManager* aContactDataManager ) + { + CEikFormattedCellListBox::ConstructL( NULL, aFlags ); + + iLongTapDetector = CAknLongTapDetector::NewL( this ); + + CEasyDialingListBoxItemDrawer* drawer = static_cast (iItemDrawer); + CEasyDialingListBoxData* data = drawer->EasyDialingCellData(); + data->SetContactDataManager(aContactDataManager); + data->SetEDLBXControl(this); + + iBGContext = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrPopupSub, + Rect(), Rect(), EFalse ); + + // ContactDataManager is accessed from SizeChanged. If list item size + // changes -> thumbnail size changes + iContactDataManager = aContactDataManager; + + drawer->SetColors(); + + CreateScrollBarFrameL( ETrue ); + ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto ); + } + + +// ----------------------------------------------------------------------------- +// MakeViewClassInstanceL +// +// ----------------------------------------------------------------------------- +// +CListBoxView* CEasyDialingListBox::MakeViewClassInstanceL() + { + return (new ( ELeave ) CEasyDialingListBoxView); + } + + +// ----------------------------------------------------------------------------- +// ItemDrawer +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxItemDrawer* CEasyDialingListBox::ItemDrawer() const + { + return (CEasyDialingListBoxItemDrawer*) iItemDrawer; + } + + +// ----------------------------------------------------------------------------- +// FocusChanged +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::FocusChanged( TDrawNow aDrawNow ) + { + if ( !IsFocused() ) + { + CEasyDialingListBoxView* view = static_cast( iView ); + view->SetCurrentItemIndexToNone(); + } + CEikFormattedCellListBox::FocusChanged( aDrawNow ); + } + + +// ----------------------------------------------------------------------------- +// CreateItemDrawerL +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::CreateItemDrawerL() + { + CEasyDialingListBoxData* celldata = CEasyDialingListBoxData::NewL(); + CleanupStack::PushL( celldata ); + iItemDrawer = new(ELeave) CEasyDialingListBoxItemDrawer(Model(), iEikonEnv->NormalFont(), celldata); + CleanupStack::Pop( celldata ); + } + + +// ----------------------------------------------------------------------------- +// Draw +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::Draw(const TRect& aRect) const + { + MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iItemDrawer->Gc() ); + if ( transApi ) + { + transApi->SetListType( MAknListBoxTfxInternal::EListBoxTypeMainPane ); + transApi->BeginRedraw( MAknListBoxTfxInternal::EListView, this->Rect() ); + } + + if (!iView->RedrawDisabled() ) + { + TRect clientRect( Rect() ); + TRect viewRect = iView->ViewRect(); + + if ( transApi ) + { + transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); + } + + AknsDrawUtils::BackgroundBetweenRects( + AknsUtils::SkinInstance(), + iBGContext, + this, + *iItemDrawer->Gc(), + clientRect, + viewRect ); + + if ( transApi ) + { + transApi->StopDrawing(); + } + } + + if ( iModel->NumberOfItems() ) + { + // Draw the actual list + iView->Draw(&aRect); + } + if ( transApi ) + { + transApi->EndViewRedraw( aRect ); + } + } + + +// ----------------------------------------------------------------------------- +// HandleResourceChange +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::HandleResourceChange(TInt aType) + { + CEikFormattedCellListBox::HandleResourceChange( aType ); + iSBFrame->VerticalScrollBar()->HandleResourceChange( aType ); + iSBFrame->DrawScrollBarsNow(); + ItemDrawer()->SetColors(); + + // Base call to HandleResourceChange justifies the list to even items + // on the top. This causes problems when listbox height is not a multiple of + // listitem heights. Fix scrolling manually for these cases. + TRAP_IGNORE( HandleItemAdditionL() ); // needed to prevent drawing problems + TInt scrollIndex = ( IsFocused() ? CurrentItemIndex() : iNumberOfNames - 1 ); + ScrollToMakeItemVisible( scrollIndex ); + + DrawDeferred(); + } + + +// ----------------------------------------------------------------------------- +// SizeChanged +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::SizeChanged() + { + // Note that within this call view rect is adjusted to fit into TGulBorder + // that could have been given in construction. It's not used by ED listbox. + // The view rect is not correct for ED after this call but it's + // calculated and set below. + CEikFormattedCellListBox::SizeChanged(); + + TRect parentRect = Rect(); + + // Set the listbox colors. + // For some reason, calling this in HandleResourceChange is not enough, it does + // not get called in situation it should. + ItemDrawer()->SetColors(); + + // Get all the layout rects + TAknLayoutRect rect; + TInt variety = ( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 ); + + TAknWindowComponentLayout viewLayout( AknLayoutScalable_Apps::dia3_list_pane( variety ) ); + rect.LayoutRect(parentRect, viewLayout ); + TRect viewRect( rect.Rect() ); + // Add a bit of margin around the view as layout doesn't define any + viewRect.Shrink( KListBoxMarginWidth, KListBoxMarginWidth ); + + TAknWindowComponentLayout scrollBarLayout( AknLayoutScalable_Apps::scroll_pane_cp12() ); + rect.LayoutRect( parentRect, scrollBarLayout ); + TRect scrollBarRect( rect.Rect() ); + + TRect viewAndScrollBarRect( viewRect ); + if ( AknLayoutUtils::LayoutMirrored() ) + { + viewAndScrollBarRect.iTl.iX = scrollBarRect.iTl.iX + KListBoxMarginWidth; + } + else + { + viewAndScrollBarRect.iBr.iX = scrollBarRect.iBr.iX - KListBoxMarginWidth; + } + + // If scrollbar is not needed, then we can use all the space for the list view + if ( GetHeightBasedOnNumberOfItems( iNumberOfNames ) <= parentRect.Height() ) + { + viewRect = viewAndScrollBarRect; + scrollBarRect.SetWidth( 0 ); + } + + // Must use this method so that all eiklistbox's internal variables are + // set and updated according to this viewRect. This call would + // add list margins but no such are defined in layouts so view's rect is + // set to viewRect calculated here. + SetViewRectFromClientRect( viewRect ); + + // Set scroll bar rect + if ( iSBFrame ) + { + CAknDoubleSpanScrollBar* scrollbar = static_cast ( iSBFrame->VerticalScrollBar() ); + scrollbar->SetFixedLayoutRect( scrollBarRect ); + scrollbar->SetRect( scrollBarRect ); + scrollbar->MakeVisible( scrollBarRect.Width() != 0 ); + } + + iBGContext->SetFrameRects( parentRect, viewAndScrollBarRect ); + + TRAP_IGNORE( CEikFormattedCellListBox::HandleViewRectSizeChangeL() ); + } + + +// ----------------------------------------------------------------------------- +// MopSupplyObject +// +// ----------------------------------------------------------------------------- +// +TTypeUid::Ptr CEasyDialingListBox::MopSupplyObject( TTypeUid aId ) + { + if ( aId.iUid == MAknsControlContext::ETypeId && iBGContext ) + { + return MAknsControlContext::SupplyMopObject( aId, iBGContext ); + } + return CEikFormattedCellListBox::MopSupplyObject( aId ); + } + +// ----------------------------------------------------------------------------- +// MakeVisible +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::MakeVisible( TBool aVisible ) + { + if ( aVisible != IsVisible() ) + { + CEikFormattedCellListBox::MakeVisible( aVisible ); + if ( iSBFrame ) + { + CEikScrollBar* sb = iSBFrame->GetScrollBarHandle( CEikScrollBar::EVertical ); + if ( sb ) + { + sb->MakeVisible( aVisible ); + if ( aVisible ) + { + UpdateScrollBarThumbs(); + } + } + } + } + } + +// ----------------------------------------------------------------------------- +// SetMaxRect +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::SetMaxRect( TRect aMaxRect ) + { + iMaxRect = aMaxRect; + + // Update the list item size according the maximum view rect size + TInt variety = ( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 ); + TAknLayoutRect maxViewLayout; + maxViewLayout.LayoutRect( aMaxRect, AknLayoutScalable_Apps::dia3_list_pane( variety ) ); + TRect maxViewRect( maxViewLayout.Rect() ); + maxViewRect.Shrink( KListBoxMarginWidth, KListBoxMarginWidth ); // layout data doens't include any margins but we have added some + + TInt maxItemsShown = ( variety ? KMaxVisibleItemsLandscape : KMaxVisibleItemsPortrait ); + TInt itemHeight = maxViewRect.Height() / maxItemsShown; + TRAP_IGNORE( SetItemHeightL( itemHeight ) ); + + // Calculate new thumbnail rect from item size + TSize itemSize( maxViewRect.Width(), itemHeight ); + TRect thumbnailRect = ContactImageBoundingBox( itemSize ); + iContactDataManager->SetThumbnailSize( thumbnailRect.Size() ); // reloads thumbnails if the new size is different from old one + + // Inform listbox data class about changed list item size + ItemDrawer()->EasyDialingCellData()->HandleItemSizeChange(); + } + +// ----------------------------------------------------------------------------- +// SetRectToNumberOfItems +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::SetRectToNumberOfItems( TInt aNumberOfNames ) + { + iNumberOfNames = aNumberOfNames; + + TRect listboxRect( iMaxRect ); + + // Make listbox smaller if maximum size is not needed to show + // all list items. + TInt requiredHeight = GetHeightBasedOnNumberOfItems( iNumberOfNames ); + if ( requiredHeight < listboxRect.Height() ) + { + // Shrink rect height so that bottom of the rect doesn't move + listboxRect.iTl.iY += ( listboxRect.Height() - requiredHeight ); + } + + SetRect( listboxRect ); + } + + +// ----------------------------------------------------------------------------- +// SetFocusedWithKeyEventL +// ----------------------------------------------------------------------------- +// +TKeyResponse CEasyDialingListBox::SetFocusedWithKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) + { + TKeyResponse keyResponse = EKeyWasNotConsumed; + TInt keyCode = aKeyEvent.iCode; + + // Disable redrawing temporarily. + // This is because OfferKeyEventL puts the focus to the wrong item, + // and we don't want to show it flashing there. + // Make sure that no leave happens before redraw is enabled again. + iView->SetDisableRedraw( ETrue ); + + TRAP_IGNORE( keyResponse = OfferKeyEventL( aKeyEvent, aType ) ); + + TInt itemToFocus = ( keyCode == EKeyUpArrow ? iNumberOfNames - 1 : 0 ); + ScrollToMakeItemVisible( itemToFocus ); + SetCurrentItemIndex( itemToFocus ); + + iView->SetDisableRedraw( EFalse ); + + DrawDeferred(); + + return keyResponse; + } + + +// ----------------------------------------------------------------------------- +// GetHeightBasedOnNumberOfItems +// +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingListBox::GetHeightBasedOnNumberOfItems( TInt aNum ) const + { + return ( ItemHeight()*aNum + KListBoxMarginWidth*2 ); + } + + +// ----------------------------------------------------------------------------- +// CurrentContactDataIndex +// +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingListBox::CurrentContactDataIndex() + { + if ( CurrentItemIndex() >= 0 ) + { + TPtrC itemText = Model()->ItemText( CurrentItemIndex() ); + TPtrC indexText; + + TInt error = TextUtils::ColumnText( indexText , 0, &itemText ); + __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) ); + + TUint id( 0 ); + TLex lex( indexText ); + error = lex.Val( id, EHex ); + __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) ); + + return id; + } + else + { + return KErrNotFound; + } + } + + +// ----------------------------------------------------------------------------- +// CurrentContactLinkLC +// +// ----------------------------------------------------------------------------- +// +HBufC8* CEasyDialingListBox::CurrentContactLinkLC() + { + TInt index = CurrentContactDataIndex(); + return iContactDataManager->ContactLinkLC( index ); + } + + +// ----------------------------------------------------------------------------- +// HandleLongTapEventL +// Callback from CAknLongTapDetector. +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::HandleLongTapEventL( const TPoint& /*aPenEventLocation*/, + const TPoint& /*aPenEventScreenLocation*/ ) + { + ReportListBoxEventL( static_cast + ( KEasyDialingContactLongTapped ) ); + iPointerLongPressHandled = ETrue; + } + + +// ----------------------------------------------------------------------------- +// HandlePointerEventL +// Pointer event handling within the EasyDialingListBox. +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::HandlePointerEventL(const TPointerEvent& aPointerEvent) + { + // Button down event starts new pointer press. Reset flags at this point. + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + iPointerLongPressHandled = EFalse; + } + + iLongTapDetector->PointerEventL(aPointerEvent); + if ( iPointerLongPressHandled ) + { + // No further handling is made after long tap on list item + // has been detected. + return; + } + + CEikFormattedCellListBox::HandlePointerEventL( aPointerEvent ); + } + + +// ----------------------------------------------------------------------------- +// HandleScrollEventL +// If the EasyDialingListBox is scrolled by dragging the Scroll bar, this +// observer function is called +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBox::HandleScrollEventL( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType ) + { + // Report scrolling to the listbox observer + TInt scrollEvent( KErrNotFound ); + switch ( aEventType ) + { + case EEikScrollThumbDragVert: + scrollEvent = KEasyDialingScrollingStarted; + break; + + case EEikScrollThumbReleaseVert: + case EEikScrollUp: + case EEikScrollDown: + case EEikScrollPageUp: + case EEikScrollPageDown: + scrollEvent = KEasyDialingScrollingStopped; + break; + + default: + break; + } + + if ( scrollEvent != KErrNotFound ) + { + ReportListBoxEventL( static_cast( scrollEvent ) ); + } + + // Base class(es) might be also interested about the scrollbar events + CEikFormattedCellListBox::HandleScrollEventL( aScrollBar, aEventType ); + } + +// end of file + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialinglistboxdata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialinglistboxdata.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,1342 @@ +/* +* Copyright (c) 2010 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: Easy dialing list box data. +* +*/ + + +// INCLUDE FILES + +#include "easydialinglistboxdata.h" +#include "easydialinglistbox.h" +#include "easydialinglistboxview.h" +#include "easydialinglistboxitemdrawer.h" +#include "easydialingpanics.h" + +#include "easydialingcontactdatamanager.h" +#include +#include +#include + +// AvKON and drawing header files +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// KHighlightSeparatorChar is character used to separate matching and non-matching +// portions of contact names. +const TInt KHighlightSeparatorChar = 0x1F; +_LIT( KHighlightSeparatorCharAsLit, "\x1F" ); + + +// KContactNameFontHeightPercent is contact name font height relative to list item height. +const TInt KContactNameFontHeightPercent = 35; + +// KCompanyNameFontHeightPercent is company name font height relative to list item height. +const TInt KCompanyNameFontHeightPercent = 30; + +// KTextBoundingBoxHeightPercent gives the text bounding box height in percentages +// relative to font height. This must be over 100, or part of the text cuts off. +const TInt KTextBoundingBoxHeightPercent = 120; + +// KTextPlacementPercent controls how text is placed vertically within its bounding box. +// The value is between 0 and 100. 0 means in top part, 50 mean in the middle, 100 means in the +// bottom. +const TInt KTextPlacementPercent = 70; + +// KMarginXPercent defines a width of horizontal margin used in many places. In relation to +// the width of the item rectangle. +const TInt KMarginXPercent = 2; + +// KMarginYPercent defines a height of vertical margin. In relation to +// the height of the item rectangle. Currently used only with contact thumbnail. +const TInt KMarginYPercent = 4; + +// KContacNameYOffsetPercent defines the vertical placement of contact name in relation to +// item height. +const TInt KContactNameYOffsetPercent = 10; + +// KCompanyNameYOffsetPercent defines the vertical placement of company name in relation to +// item height. +const TInt KCompanyNameYOffsetPercent = 60; + +// KArrowIconSizePercent defines the size of action menu icon relative to item height. +const TInt KArrowIconSizePercent = 20; + +// KMatchingTextMarginInPixels the absolute pixel width of highlight margin. Highlight margin +// is an extra space in highlight boundary to make the text look less crowded. +const TInt KMatchingTextMarginInPixels = 3; + +// KFavoriteIconSizePercent is size of favorite icon relative to text height. +const TInt KFavoriteIconSizePercent = 65; + +// KMatchingTextMarginInPixels is the absolute pixel value for rounding used in highlight +// rectangle. +const TInt KHighligthRectangleRoundingYInPixels = 4; + +// KThumbnailAspectRatio is the aspect ratio of contact thumbnail in percents. 133 for instance +// is 4:3 aspect ration. +const TInt KThumbnailAspectRatio = 133; + +const TInt KCent = 100; + +const TInt KMaxRunInfoArrayCount = 20; + +// IMPLEMENTATION SPECIFIC CONSTANTS +// The mif file from where you would like to show the +// icon on the screen. +_LIT( KFavouriteIconBitmapFile, "\\resource\\apps\\phonebook2.mif" ); +_LIT( KEasyDialingBitmapFile, "\\resource\\apps\\easydialing.mif" ); +_LIT( KPhonebook2EceBitmapFile, "\\resource\\apps\\phonebook2ece.mif" ); + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// GLOBAL FUNCTION PROTOTYPES +TRect ContactImageBoundingBox( const TRect& aItemRect ); +TRect ArrowIconBoundingBox(const TRect& aItemRect); + +// LOCAL FUNCTION PROTOTYPES +static TRect ContactNameBoundingBox( + const TRect& aItemRect, + const CFont* aContactNameFont, + TBool aArrowIconShown, + TBool aIsFavourite, + TBool aThumbnailsShown ); +static TRect CompanyNameBoundingBox( + const TRect& aItemRect, + const CFont* aCompanyNameFont, + TBool aIsCurrentItem, + TBool aThumbnailsShown ); +static TRect FavouriteIconBoundingBox( const TRect& aContactNameBoundingBox ); +static TRect MirrorLayoutBoundingBox(const TRect& aSourceRect, TRect& aBoundingBoxRect); +static TInt BaseLineOffset( const TRect& aTextBoundingBox, const CFont* aFont ); +static TBool ContainsRightToLeftText( const TDesC& aDesc ); +static TInt HighlightSeparatorCount( const TDesC& aText ); +static HBufC* ConvertToVisualAndClipLC( const TDesC& aText, const CFont& aFont, const TRect& aBoundingBox ); + +static void ClipTextToWidth( + TDes& aText, + const CFont& aFont, + TInt aMaxWidthInPixels, + TBool& aMatch ); + +static TBool DrawPieceOfText( + const TRect& aBoundingBox, + TInt& aXOffset, + CWindowGc &aGc, + const TDesC& aText, + TBool aMatch, + const CFont* aFont, + const CEasyDialingListBoxData::TExtendedColors& aColors, + TBool aHighLight); + +static TInt DrawTextWithMatchHighlightL( + const TRect& aBoundingBox, + CWindowGc &aGc, + const TDesC& aText, + const CFont* aFont, + const CEasyDialingListBoxData::TExtendedColors& aColors, + TBool aHighLight ); + +static TInt CalculateTextWidth( + const TRect& aBoundingBox, + const TDesC& aText, + const CFont* aFont ); + +static TBool CalculateTextPieceWidth( + const TRect& aBoundingBox, + TInt& aXOffset, + const TDesC& aText, + TBool aMatch, + const CFont* aFont ); + +static CGulIcon* CreateIconL( + const TDesC& aFileName, + TInt aBitmapId, + TInt aMaskId ); +// FORWARD DECLARATIONS + + +/* + * ============================================================================== + * + * + * class EasyDialingListBoxData::TExtendedColors + * + * + * ============================================================================== + */ + + +// ----------------------------------------------------------------------------- +// TExtendedColors +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxData::TExtendedColors::TExtendedColors() : +CFormattedCellListBoxData::TColors(), +iMatchingText(KRgbBlack), +iMatchingBack(KRgbDarkYellow) + { + } + + +/* + * ============================================================================== + * + * + * class CEasyDialingListBoxData + * + * + * ============================================================================== + */ + + +// ----------------------------------------------------------------------------- +// CEasyDialingListBoxData +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxData::CEasyDialingListBoxData() : +CFormattedCellListBoxData() + { + } + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxData::~CEasyDialingListBoxData() + { + // Release fonts. ReleaseFont function can cope with null pointer + // so we don't need to null check them. + CWsScreenDevice& screenDev = *( CEikonEnv::Static()->ScreenDevice() ); + screenDev.ReleaseFont( iContactNameFont ); + screenDev.ReleaseFont( iCompanyNameFont ); + + delete iArrowPointingRight; + delete iArrowPointingLeft; + delete iColorBitmap; + delete iDummyThumbnail; + delete iFavouriteIcon; + + iContactDataManager = NULL; + } + +// ----------------------------------------------------------------------------- +// NewL +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxData* CEasyDialingListBoxData::NewL() + { + CEasyDialingListBoxData* self = new (ELeave) CEasyDialingListBoxData(); + + CleanupStack::PushL( self ); + self->ConstructLD(); + CleanupStack::Pop( self ); + + return self; + } + + +// ----------------------------------------------------------------------------- +// DrawData +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::DrawData( + const TListItemProperties& aProperties, + CWindowGc& aGc, + const TDesC* aText, + const TRect& aRect, + TBool aHighlight, + const TExtendedColors& aColors ) const + { + const TRect &aItemRect = aRect; + + if ( aHighlight ) + { + DrawHighlight( aGc, aItemRect ); + } + + // Draw the actual items. + DrawDataFormatted( aProperties, aGc, aText, aItemRect, + aHighlight, aColors ); + } + + +// ----------------------------------------------------------------------------- +// ConstructLD +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::ConstructLD() + { + CFormattedCellListBoxData::ConstructLD(); + + // EasyDialing bitmap file is attempted to be read from the same directory where the + // executed binary is located + TFileName dllFileName; + Dll::FileName( dllFileName ); + + TParse parse; + User::LeaveIfError(parse.Set(KEasyDialingBitmapFile, &dllFileName, NULL)); + TFileName bitmapFileName(parse.FullName()); + + // Icon displayed for the selected item in normal layout + iArrowPointingRight = CreateIconL( bitmapFileName, EMbmEasydialingQgn_indi_org_arrow_right, + EMbmEasydialingQgn_indi_org_arrow_right_mask ); + + // Icon displayed for the selected item in mirrored layout + iArrowPointingLeft = CreateIconL( bitmapFileName, EMbmEasydialingQgn_indi_org_arrow_left, + EMbmEasydialingQgn_indi_org_arrow_left_mask ); + + // Only mask for the arrow icons are used. iColorBitmap is used for making the icon + // to follow text color changes according to skin. + iColorBitmap = new (ELeave) CFbsBitmap; + + // Contact default thumbnail is not available in themes. It is read from phonebook resource. + iDummyThumbnail = CreateIconL( KPhonebook2EceBitmapFile, + EMbmPhonebook2eceQgn_prop_pb_thumb_unknown, EMbmPhonebook2eceQgn_prop_pb_thumb_unknown_mask ); + + // Create the favourite icon bitmap and mask + iFavouriteIcon = CreateIconL( KFavouriteIconBitmapFile, + EMbmPhonebook2Qgn_prop_pb_topc, EMbmPhonebook2Qgn_prop_pb_topc_mask ); + } + + +// ----------------------------------------------------------------------------- +// DrawHighlight +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::DrawHighlight( CWindowGc &aGc, const TRect &aItemRect ) const + { + MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( &aGc ); + if ( transApi ) + { + transApi->Invalidate(MAknListBoxTfxInternal::EListHighlight ); + transApi->BeginRedraw( MAknListBoxTfxInternal::EListHighlight, aItemRect ); + transApi->StartDrawing( MAknListBoxTfxInternal::EListHighlight ); + aGc.SetClippingRect( iControl->Rect() ); + } + + TAknLayoutRect outerRect; + TAknLayoutRect innerRect; + outerRect.LayoutRect( aItemRect, TAknWindowComponentLayout::Compose( + AknLayoutScalable_Avkon::list_highlight_pane_cp1(), + AknLayoutScalable_Avkon::list_highlight_pane_g10_cp1() ).LayoutLine() ); + innerRect.LayoutRect( aItemRect, TAknWindowComponentLayout::Compose( + AknLayoutScalable_Avkon::list_highlight_pane_cp1(), + AknLayoutScalable_Avkon::list_highlight_pane_g1_cp1() ).LayoutLine() ); + MAknsControlContext *cc = AknsDrawUtils::ControlContext( Control() ); + + if ( !cc ) + { + cc = SkinBackgroundContext(); + } + + if ( cc ) + { + aGc.SetPenStyle( CGraphicsContext::ENullPen ); + AknsDrawUtils::DrawFrame( + AknsUtils::SkinInstance(), + aGc, + outerRect.Rect(), + innerRect.Rect(), + KAknsIIDQsnFrList, + KAknsIIDQsnFrListCenter ); + } + + if ( transApi ) + { + aGc.CancelClippingRect(); + transApi->StopDrawing(); + transApi->EndRedraw( MAknListBoxTfxInternal::EListHighlight ); + } + } + + +// ----------------------------------------------------------------------------- +// DrawDataFormatted +// +// ----------------------------------------------------------------------------- +// +// ToDo: SetSize function could be called once for all static data in SizeChanged. +// Applies at least to icons. +void CEasyDialingListBoxData::DrawDataFormatted( + TListItemProperties /* aProperties */, + CWindowGc& aGc, + const TDesC* aText, + const TRect& aItemRect, + TBool aHighlight, + const TExtendedColors& aColors ) const + { + TPtrC cellText; + + TInt error = TextUtils::ColumnText( cellText , 0, aText ); + __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) ); + __ASSERT_DEBUG( iContactNameFont, EasyDialingPanic( EEasyDialingNoFontFound ) ); + __ASSERT_DEBUG( iCompanyNameFont, EasyDialingPanic( EEasyDialingNoFontFound ) ); + + MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( &aGc ); + if ( transApi ) + { + transApi->StartDrawing( MAknListBoxTfxInternal::EListItem ); + if ( transApi->EffectsDisabled() ) + { + aGc.SetClippingRect( iControl->Rect() ); + } + } + + TRect boundingBox = ContactImageBoundingBox( aItemRect ); + if ( AknLayoutUtils::LayoutMirrored() ) + { + boundingBox = MirrorLayoutBoundingBox( aItemRect, boundingBox ); + } + + // Arrow icon is drawn if the item is in focus and listbox has focus + // (and not only the temporary visual focus caused by touching a list item). + TBool showArrowIcon = aHighlight && iControl->IsFocused(); + if ( showArrowIcon ) + { + TRect arrowRect = ArrowIconBoundingBox( aItemRect ); + if ( AknLayoutUtils::LayoutMirrored() ) + { + arrowRect = MirrorLayoutBoundingBox( aItemRect, arrowRect ); + } + DrawArrowIcon( aGc, arrowRect ); + } + + //Draws the Contact Thumbnail Icon if exists, else draws the dummy contact thumbnail + TBool fav = DrawContactThumbnail( aGc, boundingBox, cellText ); + + error = TextUtils::ColumnText( cellText , 1, aText ); + __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) ); + + boundingBox = ContactNameBoundingBox( aItemRect, + iContactNameFont, + showArrowIcon, + fav, + iContactDataManager->GetContactThumbnailSetting() ); + TRect nameRectUnMirrored = boundingBox; // used for favourite star drawing + + if ( AknLayoutUtils::LayoutMirrored() ) + { + boundingBox = MirrorLayoutBoundingBox( aItemRect, boundingBox ); + } + + // favourite icon size is set the same as contact name bounding box height. + TInt favouriteIconSize = boundingBox.Height(); + + TInt err( KErrNone ); + TRAP( err, DrawTextWithMatchHighlightL( + boundingBox, aGc, cellText, iContactNameFont, aColors, aHighlight ) ); + + if ( !err && TextUtils::ColumnText( cellText , 2, aText ) == KErrNone ) + { + TRect companyNameBoundingBox = CompanyNameBoundingBox( + aItemRect, iCompanyNameFont, aHighlight, iContactDataManager->GetContactThumbnailSetting() ); + if ( AknLayoutUtils::LayoutMirrored() ) + { + companyNameBoundingBox = MirrorLayoutBoundingBox( aItemRect, companyNameBoundingBox ); + } + TRAP( err, DrawTextWithMatchHighlightL( + companyNameBoundingBox, aGc, cellText, iCompanyNameFont, aColors, aHighlight ) ); + } + + if ( !err && fav ) + { + // Draws the Favourite Icon + DrawFavouriteIcon( aGc, nameRectUnMirrored, aItemRect ); + } + + if ( transApi ) + { + aGc.CancelClippingRect(); + transApi->StopDrawing(); + } + } + +// ----------------------------------------------------------------------------- +// DrawContactThumbnail +// +// Draws the Contact Thumbnail Icon if any, else draws the dummy contact thumbnail +// Also check if this is a favorite contact and return true if this is. +// ----------------------------------------------------------------------------- +// +TBool CEasyDialingListBoxData::DrawContactThumbnail(CWindowGc& aGc, TRect aBoundingBox, TPtrC aCellText) const + { + TBool fav(EFalse); + CFbsBitmap* thumbnail(NULL); + TBool isLoaded = iContactDataManager->GetThumbnailAndFav(aCellText, thumbnail, fav); + if ( isLoaded && thumbnail ) + { + // center the thumbnail in its rect + TSize size(thumbnail->SizeInPixels()); + TInt xOffset = (aBoundingBox.Width() - size.iWidth) / 2; + TInt yOffset = (aBoundingBox.Height() - size.iHeight) / 2; + TPoint tl(aBoundingBox.iTl.iX + xOffset, aBoundingBox.iTl.iY + yOffset); + TRect sourceRect( TPoint(0,0),size); + aGc.BitBlt(tl, thumbnail, sourceRect); + } + else if ( isLoaded && iContactDataManager->GetContactThumbnailSetting() ) + { + // draw dummy thumnbnail, but only if we know that the contact doesn't + // have a thumbnail, and thumbnail drawing is enabled. + AknIconUtils::SetSize(iDummyThumbnail->Bitmap(), aBoundingBox.Size()); + AknIconUtils::SetSize(iDummyThumbnail->Mask(), aBoundingBox.Size()); + aGc.BitBltMasked( aBoundingBox.iTl, iDummyThumbnail->Bitmap(), + TRect( TPoint(0,0), aBoundingBox.Size() ), + iDummyThumbnail->Mask(), ETrue ); + } + return fav; + } + + +// ----------------------------------------------------------------------------- +// DrawArrowIcon +// Draws the Action Menu +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::DrawArrowIcon( + CWindowGc& aGc, TRect aArrowRect) const + { + // Action Menu Arrow for opening the Action Menu + if ( AknLayoutUtils::LayoutMirrored() ) + { + // For mirrored layout the UI logic is mirrored as well + AknIconUtils::SetSize( iArrowPointingLeft->Mask(), aArrowRect.Size() ); + aGc.BitBltMasked( aArrowRect.iTl, iColorBitmap, + TRect( TPoint(0,0), aArrowRect.Size() ), + iArrowPointingLeft->Mask(), ETrue ); + + } + else + { + AknIconUtils::SetSize( iArrowPointingRight->Mask(), aArrowRect.Size() ); + aGc.BitBltMasked( aArrowRect.iTl, iColorBitmap, + TRect( TPoint(0,0), aArrowRect.Size() ), + iArrowPointingRight->Mask(), ETrue ); + } + } + +// ----------------------------------------------------------------------------- +// DrawFavouriteIcon +// +// Draws the Favourite Icon +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::DrawFavouriteIcon( + CWindowGc& aGc, + TRect aNameRectUnMirrored, + TRect aEffectiveRect) const + { + TRect favouriteIconBoundingBox; + + favouriteIconBoundingBox = FavouriteIconBoundingBox( aNameRectUnMirrored ); + + if ( AknLayoutUtils::LayoutMirrored() ) + { + favouriteIconBoundingBox = MirrorLayoutBoundingBox(aEffectiveRect, favouriteIconBoundingBox); + } + + aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); + TRect sourceRect( TPoint(0,0), favouriteIconBoundingBox.Size() ); + + if( AknsUtils::SkinInstance()->GetCachedItemData(KAknsIIDQgnFsContactsFavorite) ) + { + AknsDrawUtils::DrawCachedImage( AknsUtils::SkinInstance(), aGc, sourceRect, + KAknsIIDQgnFsContactsFavorite ); + } + else + { + // Set size for the bitmap and mask + AknIconUtils::SetSize( iFavouriteIcon->Bitmap(), favouriteIconBoundingBox.Size() ); + AknIconUtils::SetSize( iFavouriteIcon->Mask(), favouriteIconBoundingBox.Size() ); + aGc.BitBltMasked( favouriteIconBoundingBox.iTl , iFavouriteIcon->Bitmap(), + sourceRect, iFavouriteIcon->Mask(), ETrue); + } + } +// ----------------------------------------------------------------------------- +// SetContactDataManager +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::SetContactDataManager(CEasyDialingContactDataManager* aContactDataManager) + { + iContactDataManager = aContactDataManager; + } + +// ----------------------------------------------------------------------------- +// HandleItemSizeChange +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::HandleItemSizeChange() + { + TInt height = iControl->ItemHeight(); + TSize size( height, height ); + TRAP_IGNORE( UpdateColorBitmapL( size ) ); + + // Obtain fonts. + ObtainFonts( height ); + + // TODO: also bounding boxes could be updated and stored here + } + +// ----------------------------------------------------------------------------- +// ObtainFonts +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::ObtainFonts( TInt aItemHeight ) + { + CWsScreenDevice& screenDev = *( CEikonEnv::Static()->ScreenDevice() ); + + // Release previous fonts. ReleaseFont function can cope with null pointers + // so we don't need to null check them. + screenDev.ReleaseFont( iContactNameFont ); + screenDev.ReleaseFont( iCompanyNameFont ); + + // Get a logical font to a basis for our own fonts. + const CFont* logicalFont = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont ); + + // Extract font information + TFontSpec fontSpec = logicalFont->FontSpecInTwips(); + + // Calculate contact name font height in TWIPs. + TInt fontHeightPixels = aItemHeight * KContactNameFontHeightPercent / KCent; + TInt fontHeightTwips = screenDev.VerticalPixelsToTwips( fontHeightPixels ); + + // Set height, weight, and posture. + fontSpec.iHeight = fontHeightTwips; + fontSpec.iFontStyle.SetStrokeWeight( EStrokeWeightBold ); + fontSpec.iFontStyle.SetPosture( EPostureUpright ); + + // Obtain contact name font + TInt err = screenDev.GetNearestFontToDesignHeightInTwips( iContactNameFont, fontSpec ); + __ASSERT_DEBUG( err == KErrNone, EasyDialingPanic( EEasyDialingNoFontFound ) ); + + // Calculate company name font height in TWIPs. + fontHeightPixels = aItemHeight * KCompanyNameFontHeightPercent / KCent; + fontHeightTwips = screenDev.VerticalPixelsToTwips( fontHeightPixels ); + fontSpec.iHeight = fontHeightTwips; + fontSpec.iFontStyle.SetStrokeWeight( EStrokeWeightNormal ); + + // Obtain company name font. + err = screenDev.GetNearestFontToDesignHeightInTwips( iCompanyNameFont, fontSpec ); + __ASSERT_DEBUG( err == KErrNone, EasyDialingPanic( EEasyDialingNoFontFound ) ); + } + + +// ----------------------------------------------------------------------------- +// UpdateColorBitmapL +// ColorBitmap is redrawn when UI layout or text color (Theme) changes +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::UpdateColorBitmapL( const TSize& aSize ) + { + TRgb color; + // Get the HighLighted text color in ListBox from the Theme + AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ); + + // Create a bitmap with the similar display mode than what the device currently + // uses for using it as an offscreen bitmap + AknIconConfig::TPreferredDisplayMode mode; + AknIconConfig::PreferredDisplayMode( mode, AknIconConfig::EImageTypeOffscreen ); + User::LeaveIfError( iColorBitmap->Create( aSize, mode.iBitmapMode ) ); + + // Create a new drawing device and graphics context for enabling drawing to + // the offscreen bitmap + CFbsBitmapDevice* destinationDevice = CFbsBitmapDevice::NewL( iColorBitmap ); + CleanupStack::PushL(destinationDevice); + + CFbsBitGc* destinationGc; + User::LeaveIfError( destinationDevice->CreateContext( destinationGc ) ); + + // Set the color and style for pen and brush and draw a rectangle to the + // bitmap graphics + destinationGc->SetPenColor( color ); + destinationGc->SetPenStyle( CGraphicsContext::ESolidPen ); + destinationGc->SetBrushColor( color ); + destinationGc->SetBrushStyle( CGraphicsContext::ESolidBrush ); + destinationGc->DrawRect( TRect( TPoint( 0,0 ), aSize ) ); + + // Colorbitmap is ready, cleanup + delete destinationGc; + CleanupStack::PopAndDestroy(destinationDevice); + } + +// ----------------------------------------------------------------------------- +// SetEDLBXControl +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxData::SetEDLBXControl(CEasyDialingListBox* aControl) + { + iControl = aControl; + } + + +/* + * ============================================================================== + * + * Local functions + * + * ============================================================================== + */ + + +// ----------------------------------------------------------------------------- +// ContactImageBoundingBox +// Calculates the area where contact thumbnail is confined +// ----------------------------------------------------------------------------- +// +TRect ContactImageBoundingBox( const TRect& aItemRect ) + { + TInt leftMargin = aItemRect.Width() * KMarginXPercent / KCent; + TInt topMargin = KMarginYPercent * aItemRect.Height() / KCent; + TInt bottomMargin = topMargin; + TInt width = ((aItemRect.Height() - topMargin - bottomMargin) * KThumbnailAspectRatio) / KCent; + + return TRect( + aItemRect.iTl.iX + leftMargin, + aItemRect.iTl.iY + topMargin, + aItemRect.iTl.iX + leftMargin + width, + aItemRect.iBr.iY - bottomMargin); + } + +// ----------------------------------------------------------------------------- +// ContactNameBoundingBox +// Calculates the area to which the contact name and possible match highlights +// are confined. +// ----------------------------------------------------------------------------- +// +static TRect ContactNameBoundingBox( + const TRect& aItemRect, + const CFont* aContactNameFont, + TBool aArrowIconShown, + TBool aIsFavourite, + TBool aThumbnailsShown ) + { + // Position X will contain the starting position of text from left side of item rect. + TInt positionX = aItemRect.Width() * KMarginXPercent / KCent; + + if (aThumbnailsShown) + { + // If contact image is shown, text starts from right side of contact picture + margin. + TRect contactImageBoundingBox = ContactImageBoundingBox( aItemRect ); + positionX += contactImageBoundingBox.Width(); + positionX += aItemRect.Width() * KMarginXPercent / KCent; + } + + TInt topMargin = KContactNameYOffsetPercent * aItemRect.Height() / KCent; + TInt height = KTextBoundingBoxHeightPercent * aContactNameFont->FontMaxHeight() / KCent; + TInt rightMargin = KMarginXPercent * aItemRect.Width() / KCent; + + // Reserve space for communication launcher icon if it's shown on this item + if ( aArrowIconShown ) + { + rightMargin += KArrowIconSizePercent * aItemRect.Height() / KCent; + } + + // If item is favourite, reserve space for favourite icon. Icon dimensions are the same as bounding box height. + if ( aIsFavourite ) + { + rightMargin += height; + } + + return TRect( + aItemRect.iTl.iX + positionX, + aItemRect.iTl.iY + topMargin, + aItemRect.iTl.iX + aItemRect.Width() - rightMargin, + aItemRect.iTl.iY + topMargin + height); + } + + +// ----------------------------------------------------------------------------- +// CompanyNameBoundingBox +// Calculates the area to which the company name and possible match highlights +// are confined. +// ----------------------------------------------------------------------------- +// +static TRect CompanyNameBoundingBox( + const TRect& aItemRect, + const CFont* aCompanyNameFont, + TBool aIsCurrentItem, + TBool aThumbnailsShown ) + { + // Position X will contain the starting position of text from left side of item rect. + TInt positionX = aItemRect.Width() * KMarginXPercent / KCent; + + if (aThumbnailsShown) + { + // If contact image is show, text starts from right side of contact picture + margin. + TRect contactImageBoundingBox = ContactImageBoundingBox( aItemRect ); + positionX += contactImageBoundingBox.Width(); + positionX += aItemRect.Width() * KMarginXPercent / KCent; + } + + TInt topMargin = KCompanyNameYOffsetPercent * aItemRect.Height() / KCent; + TInt height = KTextBoundingBoxHeightPercent * aCompanyNameFont->FontMaxHeight() / KCent; + TInt rightMargin = KMarginXPercent * aItemRect.Width() / KCent; + + // Reserve space for communication launcher icon. + // Communication launcher icon is shown only id item is highlighted. + if ( aIsCurrentItem ) + { + rightMargin += KArrowIconSizePercent * aItemRect.Height() / KCent; + } + + return TRect( + aItemRect.iTl.iX + positionX, + aItemRect.iTl.iY + topMargin, + aItemRect.iTl.iX + aItemRect.Width() - rightMargin, + aItemRect.iTl.iY + topMargin + height); + } + + +// ----------------------------------------------------------------------------- +// ArrowIconBoundingBox +// Calculates the area to which the action menu icon is drawn. +// ----------------------------------------------------------------------------- +// +TRect ArrowIconBoundingBox( const TRect& aItemRect ) + { + TInt iconSize = KArrowIconSizePercent * aItemRect.Height() / KCent; + TInt rightMargin = KMarginXPercent * aItemRect.Width() / KCent; + TInt positionX = aItemRect.iBr.iX - rightMargin - iconSize; + TInt topMargin = ( aItemRect.Height() - iconSize ) / 2; // Icon is vertically centered. + + return TRect( + positionX, + aItemRect.iTl.iY + topMargin, + positionX + iconSize, + aItemRect.iTl.iY + topMargin + iconSize ); + } + + +// ----------------------------------------------------------------------------- +// FavouriteIconBoundingBox +// Calculates the area to which the favourite icon is drawn. +// Favourite icon is drawn right beside contact name bounding box. +// ----------------------------------------------------------------------------- +// +static TRect FavouriteIconBoundingBox( const TRect& aContactNameBoundingBox ) + { + // Favourite icons place is right beside contact name bounding box. + // Contact name bounding box is calculated so that there is room for the icon. + TInt shrinkMargin = ( KCent - KFavoriteIconSizePercent ) * aContactNameBoundingBox.Height() / ( 2 * KCent ); + TRect rect( + aContactNameBoundingBox.iBr.iX, + aContactNameBoundingBox.iTl.iY, + aContactNameBoundingBox.iBr.iX + aContactNameBoundingBox.Height(), + aContactNameBoundingBox.iBr.iY); + rect.Shrink( shrinkMargin, shrinkMargin ); + return rect; + } + + + +// ----------------------------------------------------------------------------- +// BaseLineOffset +// +// ----------------------------------------------------------------------------- +// +static TInt BaseLineOffset( const TRect& aTextBoundingBox, const CFont* aFont ) + { + TInt fontHeight = aFont->FontMaxHeight(); + TInt topMargin = KTextPlacementPercent * (aTextBoundingBox.Height() - fontHeight) / KCent; + return fontHeight + topMargin - aFont->FontMaxDescent(); + } + + +// ----------------------------------------------------------------------------- +// MirrorLayoutBoundingBox +// +// ----------------------------------------------------------------------------- +// +static TRect MirrorLayoutBoundingBox( const TRect& aSourceRect, TRect& aBoundingBoxRect ) + { + return TRect( + aSourceRect.iTl.iX + aSourceRect.iBr.iX - aBoundingBoxRect.iBr.iX, + aBoundingBoxRect.iTl.iY, + aSourceRect.iTl.iX + aSourceRect.iBr.iX - aBoundingBoxRect.iTl.iX, + aBoundingBoxRect.iBr.iY); + } + + +// ----------------------------------------------------------------------------- +// ClipTextToWidth +// Cuts the text in the given pixel width. Also considers match highlight +// issues. +// NOTE: Can change the aMatch parameter if considers that there is too little +// width for matching highlight. +// NOTE 2: This function cannot handle right-to-left or bidirectional text currently. +// These cases must be handled elsewhere. +// ----------------------------------------------------------------------------- +// +static void ClipTextToWidth( + TDes& aText, + const CFont& aFont, + TInt aMaxWidthInPixels, + TBool& aMatch) + { + _LIT( KThreeDots, "..." ); + TInt minimumWidth = aFont.TextWidthInPixels( KThreeDots ); + + // If this is a matching piece of text, also match text marginals need to be counted. + if ( aMatch ) + { + minimumWidth += 2 * KMatchingTextMarginInPixels; + } + + if ( minimumWidth > aMaxWidthInPixels ) + { + + // Not enough space for any text. + aText.Zero(); + aMatch = EFalse; // No match highlight shown. + return; + } + + if ( aMatch ) + { + aMaxWidthInPixels -= 2 * KMatchingTextMarginInPixels; + } + + AknTextUtils::ClipToFit( aText, aFont, aMaxWidthInPixels ); + } + +// ----------------------------------------------------------------------------- +// DrawPieceOfText +// Draws a piece of text of contact, either matching or not matching. +// Updates aXOffset argument by adding drawn text width. +// +// @return: ETrue, if there was enough space for the text to draw. +// NOTE: CWindowGc font must be set before calling this function. +// ----------------------------------------------------------------------------- +// +static TBool DrawPieceOfText( + const TRect& aBoundingBox, + TInt& aXOffset, + CWindowGc &aGc, + const TDesC& aText, + TBool aMatch, + const CFont* aFont, + const CEasyDialingListBoxData::TExtendedColors& aColors, + TBool aHighLight ) + { + if (aText.Length() == 0) + { + return ETrue; + } + + HBufC* newText = aText.Alloc(); + if ( !newText ) + { + return EFalse; + } + + TPtr textPtr = newText->Des(); + + // textWidth is the width needed for the text. + TInt textWidth = AknBidiTextUtils::MeasureTextBoundsWidth( *aFont, textPtr, CFont::TMeasureTextInput::EFVisualOrder ); + + // whole width includes also possible highlight margins. + TInt wholeWidth = textWidth + ( aMatch ? 2 * KMatchingTextMarginInPixels : 0); + + // availableWidth is the space left for drawing. + TInt availableWidth = aBoundingBox.Width() - aXOffset; + + if ( availableWidth < wholeWidth ) + { + ClipTextToWidth( textPtr, *aFont, availableWidth, aMatch ); + wholeWidth = availableWidth; + if ( aMatch ) + { + textWidth = wholeWidth - (2 * KMatchingTextMarginInPixels); + } + else + { + textWidth = wholeWidth; + } + } + + // textBox is rectangle for text without highlight. + TRect textBox( aBoundingBox ); + textBox.iTl.iX += aXOffset; + textBox.iBr.iX = textBox.iTl.iX + textWidth; + + TInt baseLineOffset = BaseLineOffset( textBox, aFont ); + + if ( aMatch ) + { + // highlightBox rectangle for text with highlight. + // Compared to no highlight, it has extra margins on both sides. + TRect highlightBox( textBox ); + highlightBox.iBr.iX = highlightBox.iTl.iX + wholeWidth; + + // Also boundingBox is shifted right for one margin width. + textBox.iTl.iX += KMatchingTextMarginInPixels; + textBox.iBr.iX += KMatchingTextMarginInPixels; + + // Outline of matching highlight is of same colour as text. + // This looks quite OK. + aGc.SetPenColor( aColors.iMatchingText ); + aGc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + aGc.SetBrushColor( aColors.iMatchingBack ); + + aGc.DrawRoundRect( highlightBox, TSize( KMatchingTextMarginInPixels, KHighligthRectangleRoundingYInPixels ) ); + + aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); + } + else + { + if ( aHighLight ) + { + aGc.SetPenColor( aColors.iHighlightedText ); + } + else + { + aGc.SetPenColor( aColors.iText ); + } + } + + aGc.DrawText( textPtr, textBox, baseLineOffset ); + delete newText; + aXOffset += wholeWidth; + return ETrue; + } + +// ----------------------------------------------------------------------------- +// DrawTextWithMatchHighlight +// Draws a string with match highlight. Highlighted and non-highlighted +// parts are separated with KHighlightSeparatorChar. +// The first text part is not highlighted and from that on highlight +// is on on every other text piece. +// +// ----------------------------------------------------------------------------- +// +static TInt DrawTextWithMatchHighlightL( + const TRect& aBoundingBox, + CWindowGc &aGc, + const TDesC& aText, + const CFont* aFont, + const CEasyDialingListBoxData::TExtendedColors& aColors, + TBool aHighLight ) + { + TInt xOffset = 0; + + HBufC* visualBuf = ConvertToVisualAndClipLC( aText, *aFont, aBoundingBox ); + + TInt calculatedTextWidth = CalculateTextWidth( aBoundingBox, *visualBuf, aFont ); + + if ( AknLayoutUtils::LayoutMirrored() ) + { + xOffset = aBoundingBox.Width() - calculatedTextWidth; + } + TPtrC textPiece; + TInt textPieceIndex = 0; + TBool match = EFalse; + + aGc.UseFont( aFont ); + aGc.SetBrushStyle( CGraphicsContext::ENullBrush ); + + while ( TextUtils::ColumnText( textPiece , textPieceIndex, visualBuf, KHighlightSeparatorChar) == KErrNone ) + { + if (! DrawPieceOfText( aBoundingBox, xOffset, aGc, textPiece, match, aFont, aColors, aHighLight )) + { + // If there was not enough space for this piece of text, exit the loop stop drawing further pieces. + break; + } + + // Toggle match + match = !match; + + ++textPieceIndex; + } + + CleanupStack::PopAndDestroy( visualBuf ); + + aGc.DiscardFont(); + + return calculatedTextWidth; + } + +// ----------------------------------------------------------------------------- +// CalculateTextWidth +// Calculates the width of the text and returns it +// ----------------------------------------------------------------------------- +// +static TInt CalculateTextWidth( const TRect& aBoundingBox, + const TDesC& aText, + const CFont* aFont ) + { + TInt xOffset = 0; + TPtrC textPiece; + TInt textPieceIndex = 0; + TBool match = EFalse; + + while ( TextUtils::ColumnText( textPiece , textPieceIndex, &aText, KHighlightSeparatorChar) == KErrNone ) + { + if (! CalculateTextPieceWidth( aBoundingBox, xOffset, textPiece, match, aFont )) + { + // If there was not enough space for this piece of text, exit the loop stop drawing further pieces. + break; + } + + // Toggle match + match = !match; + + ++textPieceIndex; + } + + return xOffset; + } + +// ----------------------------------------------------------------------------- +// CalculateTextPieceWidth +// +// Calculates the width of the text piece of highlighted text. +// The function is aware of the available width for the text, and can take +// possible clippings into account. +// +// The available width is given by parameters aBoundingBox (space for all text +// pieces) and aXOffset (now much of that space has already been used). +// +// The function adds the text width to the aXOffset reference parameter. +// Returns EFalse, if there is no more space for new text pieces, otherwise +// ETrue. +// +// This function contains the same logic as function DrawPieceOfText. +// ----------------------------------------------------------------------------- +// +static TBool CalculateTextPieceWidth( + const TRect& aBoundingBox, + TInt& aXOffset, + const TDesC& aText, + TBool aMatch, + const CFont* aFont ) + { + if (aText.Length() == 0) + { + return ETrue; + } + + // textWidth is the width needed for the text. + TInt textWidth = AknBidiTextUtils::MeasureTextBoundsWidth( *aFont, aText, CFont::TMeasureTextInput::EFVisualOrder ); + + // whole width includes also possible highlight margins. + TInt wholeWidth = textWidth + ( aMatch ? 2 * KMatchingTextMarginInPixels : 0); + + // availableWidth is the space left for drawing. + TInt availableWidth = aBoundingBox.Width() - aXOffset; + + if ( availableWidth < wholeWidth ) + { + + // We get to this branch, if there is not enough space for the text piece. + HBufC* newText = aText.Alloc(); + if ( !newText ) + { + return EFalse; + } + + TPtr textPtr = newText->Des(); + + // Clip the text so that it fits the space. + ClipTextToWidth( textPtr, *aFont, availableWidth, aMatch ); + + if ( textPtr.Length() > 0 ) + { + wholeWidth = AknBidiTextUtils::MeasureTextBoundsWidth( *aFont, textPtr, CFont::TMeasureTextInput::EFVisualOrder ); + wholeWidth += (aMatch ? 2 * KMatchingTextMarginInPixels : 0); + + aXOffset += wholeWidth; + } + + delete newText; + + return EFalse; + } + + aXOffset += wholeWidth; + + return ETrue; + } + +// ----------------------------------------------------------------------------- +// ContainsRightToLeftText +// +// Returns true if argument descriptor contains right-to-left text. +// ----------------------------------------------------------------------------- +// +static TBool ContainsRightToLeftText( const TDesC& aDesc ) + { + TBool rtlFound = EFalse; + + // TRunInfoArray contains information of the directionalities of the different sections of the aText + TBidirectionalState::TRunInfo array[ KMaxRunInfoArrayCount ]; + + // Initialize the TBidiLogicalToVisual converter for making the conversion from logical to visual order + TBidiLogicalToVisual converter( aDesc, array, KMaxRunInfoArrayCount ); + + // Do the reordering. Amount of different directionality sections is returned. + TInt count( converter.Reorder() ); + // If there are more directionality blocks than we are prepared to handle, just ignore + // the rest. Those shouldn't fit the screen anyway. + count = Min( count, KMaxRunInfoArrayCount ); + + for ( TInt i = 0 ; i < count && !rtlFound ; i++ ) + { + // iDirection is 0 for left-to-right text. + if (array[i].iDirection) + { + rtlFound = ETrue; + } + } + + return rtlFound; + } + +// ----------------------------------------------------------------------------- +// ConvertToVisualAndClipL +// +// Clip bidirectional text to given box and convert it to visual order, ensuring +// that the match highlights don't get broken in the process. Result is given +// as new heap descriptor which is left to CleanupStack. +// NOTE1: No clipping happens here if given descriptor contains only +// left-to-right text. +// NOTE2: It's assumed that there can be highlights only in pure LTR and RTL +// texts. Highlights for mixed LTR-RTL text cannot be handled properly. +// ----------------------------------------------------------------------------- +// +static HBufC* ConvertToVisualAndClipLC( const TDesC& aText, + const CFont& aFont, + const TRect& aBoundingBox ) + { + HBufC* buf = HBufC::NewLC( aText.Length() + KAknBidiExtraSpacePerLine ); + TPtr ptr = buf->Des(); + ptr.Copy( aText ); + + // Calling AknBidiTextUtils::ConvertToVisualAndClip doesn't work correctly + // with the highlight separator characters (they are not considered to be + // zero-length). To minimise the problem, we call the function only when + // necessary, i.e. when given text really contains RTL text. This should be + // considered as temporary solutions because now the problem of excessive + // truncation still remains with RTL languages. + if ( ContainsRightToLeftText( ptr ) ) + { + AknBidiTextUtils::ConvertToVisualAndClipL( + ptr, aFont, aBoundingBox.Width(), + aBoundingBox.Width() ); + + // If there's an odd number of highlight separators in the RTL text, + // then the matching and and not-matching parts have gone + // off-sync in the visual conversion (because parts are drawn starting + // from left and first part is always interpreted as not-matching part). + // Fix this by adding one highlight separator. + TInt sepCount = HighlightSeparatorCount( ptr ); + if ( sepCount % 2 ) + { + if ( ptr.Length() == ptr.MaxLength() ) + { + // There's no more space available. We need to reallocate the + // buffer in order to fit the extra separator character. + HBufC* newBuf = buf->ReAllocL( buf->Length() + 1 ); + CleanupStack::Pop( buf ); // original buf deleted by ReAllocL + buf = newBuf; + CleanupStack::PushL( buf ); + ptr.Set( buf->Des() ); + } + ptr.Insert( 0, KHighlightSeparatorCharAsLit ); + } + } + + return buf; + } + +// ----------------------------------------------------------------------------- +// HighlightSeparatorCount +// +// Returns number of match highlight separator characters in the text +// ----------------------------------------------------------------------------- +// +static TInt HighlightSeparatorCount( const TDesC& aText ) + { + TInt len = aText.Length(); + TInt sepCount = 0; + + for ( TInt i = 0; i < len; i++ ) + { + if ( aText[i] == KHighlightSeparatorChar ) + { + sepCount++; + } + } + + return sepCount; + } + +// ----------------------------------------------------------------------------- +// CreateIconL +// +// Create and return a new icon object from given file and with given ID +// ----------------------------------------------------------------------------- +// +static CGulIcon* CreateIconL( + const TDesC& aFileName, + TInt aBitmapId, + TInt aMaskId ) + { + CGulIcon* icon = CGulIcon::NewLC(); + + CFbsBitmap* bm; + CFbsBitmap* mask; + AknIconUtils::CreateIconL( bm, mask, aFileName, aBitmapId, aMaskId ); + + icon->SetBitmap( bm ); + icon->SetMask( mask ); + + CleanupStack::Pop( icon ); + return icon; + } + +// End of File. + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialinglistboxitemdrawer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialinglistboxitemdrawer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,271 @@ +/* +* Copyright (c) 2010 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: Easy dialing listbox list item drawer. +* +*/ + + +// INCLUDE FILES + +#include "easydialinglistboxitemdrawer.h" +#include "easydialinglistboxdata.h" +#include "easydialinglistbox.h" +#include "easydialinglistboxview.h" + +#include +#include +#include +#include +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +const TInt KTextColorFallBack = 215; +const TInt KMatchingTextColorFallBack = 0; +const TInt KMatchingTextBackgroundFallBack = 243; + +// FORWARD DECLARATIONS + +/* + * ============================================================================== + * + * + * class CEasyDialingListBoxItemDrawer + * + * + * ============================================================================== + */ + +// ----------------------------------------------------------------------------- +// CEasyDialingListBoxItemDrawer +// Constructor +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxItemDrawer::CEasyDialingListBoxItemDrawer( + MTextListBoxModel* aTextListBoxModel, + const CFont* aFont, + CFormattedCellListBoxData* aFormattedCellData) : + CFormattedCellListBoxItemDrawer( aTextListBoxModel, aFont, aFormattedCellData) + { + + } + + +// ----------------------------------------------------------------------------- +// EasyDialingCellData +// +// ----------------------------------------------------------------------------- +// +CEasyDialingListBoxData* CEasyDialingListBoxItemDrawer::EasyDialingCellData() const + { + return STATIC_CAST( CEasyDialingListBoxData*, iData ); + } + + +// ----------------------------------------------------------------------------- +// DrawItem +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxItemDrawer::DrawItem( + TInt aItemIndex, + TPoint aItemRectPos, + TBool aItemIsSelected, + TBool aItemIsCurrent, + TBool aViewIsEmphasized, + TBool aViewIsDimmed) const + { + CFormattedCellListBoxItemDrawer::DrawItem( aItemIndex, aItemRectPos, aItemIsSelected, aItemIsCurrent, aViewIsEmphasized, aViewIsDimmed); + } + + +// ----------------------------------------------------------------------------- +// DrawItemText +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxItemDrawer::DrawItemText( + TInt aItemIndex, + const TRect& aItemTextRect, + TBool aItemIsCurrent, + TBool aViewIsEmphasized, + TBool /* aItemIsSelected */) const + { + MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc ); + if ( transApi ) + { + transApi->StartDrawing( MAknListBoxTfxInternal::EListNotSpecified ); + } + + iGc->SetPenColor(iTextColor); + iGc->SetBrushColor(iBackColor); + + TPtrC temp = iModel->ItemText(aItemIndex); + + SetupGc(aItemIndex); + if ( transApi ) + { + transApi->StopDrawing(); + } + +// TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse()); + + CEasyDialingListBoxData::TExtendedColors colors; + colors.iText = iTextColor; + colors.iBack = iBackColor; + colors.iHighlightedText = iHighlightedTextColor; + colors.iHighlightedBack = iHighlightedBackColor; + colors.iMatchingText = iMatchingText; + colors.iMatchingBack = iMatchingBack; + + DrawBackgroundAndSeparatorLines( aItemTextRect ); + + TBool highlightShown = ETrue; + if ( ( FormattedCellData()->RespectFocus() && !aViewIsEmphasized ) ) + { + if ( transApi ) + { + transApi->Remove( MAknListBoxTfxInternal::EListHighlight ); + } + + highlightShown = EFalse; + } + + // normal drawing without mark icon + EasyDialingCellData()->DrawData( + Properties(aItemIndex), + *iGc, + &temp, + aItemTextRect, + aItemIsCurrent && highlightShown, + colors ); + + if ( aItemTextRect.iBr.iY < iViewRect.iBr.iY && aItemIndex < iModel->NumberOfItems() - 1 ) + { + if ( transApi ) + { + transApi->StartDrawing( MAknListBoxTfxInternal::EListItem ); + } + + AknListUtils::DrawSeparator( *iGc, aItemTextRect, iTextColor ); + + if ( transApi ) + { + transApi->StopDrawing(); + } + } + } + + +// ----------------------------------------------------------------------------- +// SetColors +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxItemDrawer::SetColors() + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + if ( !skin ) + { + // These values are copied from "aknlist.cpp". + // This branch should be never take, and can be considered protective programming. + iTextColor = AKN_LAF_COLOR_STATIC( KTextColorFallBack); + iHighlightedTextColor = AKN_LAF_COLOR_STATIC( KTextColorFallBack ); + iMatchingText = AKN_LAF_COLOR_STATIC( KMatchingTextColorFallBack ); + iMatchingBack = AKN_LAF_COLOR_STATIC( KMatchingTextBackgroundFallBack ); + } + + else + { + AknsUtils::GetCachedColor( skin, + iTextColor, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG7 ); + + AknsUtils::GetCachedColor( skin, + iHighlightedTextColor, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG10 ); + + AknsUtils::GetCachedColor( skin, + iMatchingText, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG24 ); + + AknsUtils::GetCachedColor( skin, + iMatchingBack, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG2 ); + } + } + + + +// ----------------------------------------------------------------------------- +// DrawBackgroundAndSeparatorLines +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxItemDrawer::DrawBackgroundAndSeparatorLines( const TRect& aItemTextRect ) const + { + CCoeControl* control = FormattedCellData()->Control(); + + MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal( iGc ); + + if ( transApi && !transApi->EffectsDisabled() ) + { + MAknListBoxTfx* tfxApi = CAknListLoader::TfxApi( iGc ); + + if ( tfxApi ) + { + tfxApi->EnableEffects( ETrue ); + } + } + + if ( transApi ) + { + transApi->StartDrawing( MAknListBoxTfxInternal::EListView ); + } + TBool bgDrawn( EFalse ); + + if ( control ) + { + MAknsControlContext *cc = AknsDrawUtils::ControlContext( control ); + + bgDrawn = AknsDrawUtils::DrawBackground( + AknsUtils::SkinInstance(), + cc, + control, + *Gc(), + aItemTextRect.iTl, + aItemTextRect, + KAknsDrawParamDefault ); + } + + if ( !bgDrawn ) + { + iGc->Clear( aItemTextRect ); + } + if ( transApi ) + { + transApi->StopDrawing(); + } + } + +// end of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialinglistboxview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialinglistboxview.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,78 @@ +/* +* Copyright (c) 2010 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: Easy dialing listbox view. +* +*/ + + +// INCLUDE FILES + +#include "easydialinglistboxview.h" +#include "easydialinglistbox.h" +#include "easydialinglistboxitemdrawer.h" +#include "easydialinglistboxdata.h" +#include "easydialingcontactdatamanager.h" +#include +#include + +#include + +// AvKON and drawing header files +#include + +#include +#include +#include + +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +/* + * ============================================================================== + * + * + * class CEasyDialingListBoxView + * + * + * ============================================================================== + */ + + +// ----------------------------------------------------------------------------- +// SetCurrentItemIndexToNone +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingListBoxView::SetCurrentItemIndexToNone() + { + iCurrentItemIndex = -1; + } + +// End of File. + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialingplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialingplugin.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,2123 @@ +/* +* Copyright (c) 2010 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: Easy dialing plugin. +* +*/ + +// INCLUDE FILES + +#include "easydialingplugin.h" +#include "easydialinglistbox.h" +#include "easydialinglogger.h" +#include "easydialingpanics.h" +#include "easydialingcenreplistener.h" +#include "easydialingcontactdatamanager.h" +#include "easydialingutils.h" +#include "easydialingcommands.hrh" +#include + +// AVKON and drawing header files +#include +#include +#include +#include +#include + +// Predictive search header files +#include +#include +#include +#include +#include +#include + +// Virtual phonebook header files +#include +#include +#include +#include +#include // contains virtual phonebook data fields +#include + +// CCA Launcher header files. +#include +#include +#include +#include + +// Service provider settings api +#include + +// AIW header files +#include +#include + +// CCA contactor service. +#include "edcontactorservice.h" + +// Open system trace +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "easydialingpluginTraces.h" +#endif + +#include +#include // for BaflUtils + +// Transition effects +#include + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS +const TInt KEDMaximumMatchingContactsCount = 100; +const TInt KEasyDialingListBoxModelGranularity = 8; +const TInt KEasyDialingMaximumMatchingParts = 10; +const TInt KErrEasyDialingNoFirstNamePCSIndexing = -2000; +const TInt KErrEasyDialingNoLastNamePCSIndexing = -2001; + +const TInt KEDFlushContactDataManagerLimit = 20; + +const TText KHighlightSeparatorChar = 0x1F; +_LIT(KHighlightSeparatorCharAsLiteral,"\x1F"); +const TText KListFieldSeparatorChar = '\t'; + +const TText KArabicAndSouthEastAsianRangeStart = 0x0600; +const TText KArabicAndSouthEastAsianRangeEnd = 0x19FF; +const TText KArabicPresentationFormsARangenStart = 0xFB50; +const TText KArabicPresentationFormsARangeEnd = 0xFDFF; +const TText KArabicPresentationFormsBRangenStart = 0xFE70; +const TText KArabicPresentationFormsBRangeEnd = 0xFEFF; + +const TInt KMaxRunInfoArrayCount = 20; + +// Transition context_uid for dialer_list component effects +#define KGfxContactListBoxUid TUid::Uid( 0x2000B47B ) +const TInt KGfxContactListBoxOpenEffect = 3; +const TInt KGfxContactListBoxCloseEffect = 4; + +// MACROS + +// LOCAL CONSTANTS AND MACROS +_LIT(KResourceFile, "\\resource\\easydialingpluginresources.rsc"); + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +TInt CompareTPsMatchLocation( const TPsMatchLocation& a1, const TPsMatchLocation& a2 ); + +void AppendStringWithMatchDataL( + TDes& aBuffer, + const TDesC& aText, + CPSRequestHandler* aPSHandler, + const CPsQuery* aPSQuery ); + +TBool HighlightingSupportedForText( const TDesC& aText ); + +inline TBool HighlightingSupportedForScript( TText aChar ); + +TBool IsStrictlyBidirectional( const TDesC& aText ); + +static HBufC* AllocWithoutHighlightSeparatorsLC( TDesC& aDesc ); + +static TBool IsItuTCharacter( TChar aChar ); + +static TInt Find( const MVPbkContactLink* aLink, const RPointerArray& aArray ); + +template +inline void CleanupResetAndDestroyPushL( T& aRef ); + + + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin +// The default c++ constructor +// ----------------------------------------------------------------------------- +// +CEasyDialingPlugin::CEasyDialingPlugin() + : iActionToBeLaunched( ENoActionDefined ) + { + } + +// ----------------------------------------------------------------------------- +// NewL +// Create instance of concrete ECOM interface implementation. +// ----------------------------------------------------------------------------- +// +CEasyDialingPlugin* CEasyDialingPlugin::NewL() + { + OstTrace0( TRACE_NORMAL, CEASYDIALINGPLUGIN_NEWL_LOAD_PLUGIN, "Loading plugin.." ); + LOGSTRING("EasyDialingPlugin: Loading plugin.."); + + CEasyDialingPlugin* self = new (ELeave) CEasyDialingPlugin; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + OstTrace0( TRACE_NORMAL, CEASYDIALINGPLUGIN_NEWL_LOAD_PLUGIN_OK, "Loading plugin completed succesfully" ); + LOGSTRING("EasyDialingPlugin: Loading plugin completed succesfully"); + return self; + } + +// ----------------------------------------------------------------------------- +// ConstructL +// Main construction handled here. Creates connection to the predictive search +// engine and initialises all member data. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::ConstructL() + { + // Create a contact store array. + HBufC* defaultCdb = VPbkContactStoreUris::DefaultCntDbUri().AllocLC(); + iContactDataStores.AppendL( defaultCdb ); + CleanupStack::Pop( defaultCdb ); + + // Create a contact manager instance. + iContactStoreUriArray = CVPbkContactStoreUriArray::NewL(); + iContactStoreUriArray->AppendL( TVPbkContactStoreUriPtr( VPbkContactStoreUris::DefaultCntDbUri() ) ); + iContactManager = CVPbkContactManager::NewL( *iContactStoreUriArray ); + + // Set contact store observer to listen to contact store events. + iContactManager->ContactStoresL().OpenAllL( *this ); + + iContactDataManager = new (ELeave) CEasyDialingContactDataManager(iContactManager); + iContactDataManager->ConstructL(); + iContactDataManager->SetObserver(this); + + // Find a handle to ca launcher extension MCCAConnectionExt. + // Easydialing has to use the extension API, because it needs function CloseAppL + // only found in extension. + // MCCAConnection extension has to be obtained through MCCAParameter extension, + // since MCCAConnection is not designed to be extensible API. + MCCAParameter* parameter = TCCAFactory::NewParameterL(); + TAny* any = parameter->CcaParameterExtension( KMCCAConnectionExtUid ); + + // Parameter can be deallocated since "any" containing pointer to contact launcher + // is not tied to parameter in any way. + parameter->Close(); + + // Cast the pointer into contact launcher object. + User::LeaveIfNull( any ); + iContactLauncher = static_cast( any ); + + iCenrepListener = CEasyDialingCenrepListener::NewL(this); + + iContactorService = CEDContactorService::NewL( this ); + + // EasyDialing resource file is attempted to be read from the same directory where the + // executed binary is located + TFileName dllFileName; + Dll::FileName( dllFileName ); + + TParse parse; + User::LeaveIfError( parse.Set(KResourceFile, &dllFileName, NULL) ); + TFileName resourceFileName( parse.FullName() ); + + BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), resourceFileName ); + iResourceFileOffset = iCoeEnv->AddResourceFileL( resourceFileName ); + + SetComponentsToInheritVisibility( ETrue ); + } + +// ----------------------------------------------------------------------------- +// ~CEasyDialingPlugin +// The desctructor +// ----------------------------------------------------------------------------- +// +CEasyDialingPlugin::~CEasyDialingPlugin() + { + iObservers.Reset(); + + if ( iContactManager ) + { + TRAP_IGNORE( iContactManager->ContactStoresL().CloseAll( *this ) ); + } + + delete iCenrepListener; + delete iContactDataManager; + delete iPredictiveSearchQuery; + delete iContactManager; + delete iContactStoreUriArray; + iContactDataStores.ResetAndDestroy(); + + if (iPredictiveContactSearchHandler) + { + iPredictiveContactSearchHandler->RemoveObserver(this); + } + delete iPredictiveContactSearchHandler; + + delete iListBoxModel; + + if ( iContactListBox ) + { + GfxTransEffect::Deregister( iContactListBox ); + } + + delete iContactListBox; + + if (iContactLauncher) + { + iContactLauncher->Close(); + } + + delete iContactorService; + + iCoeEnv->DeleteResourceFile( iResourceFileOffset ); + + delete iInputBlocker; + + if ( iAsyncCallBack ) + { + iAsyncCallBack->Cancel(); + } + delete iAsyncCallBack; + + OstTrace0( TRACE_NORMAL, CEASYDIALINGPLUGIN_UNLOAD_PLUGIN, "Plugin unloaded" ); + LOGSTRING("EasyDialingPlugin: Plugin unloaded"); + } + + +// ----------------------------------------------------------------------------- +// InitializeL +// Initialises easy dialing. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::InitializeL( CCoeControl& aParent ) + { + SetContainerWindowL( aParent ); + SetMopParent( &aParent ); + + TCallBack asyncCallBack( AsyncCallBackToLaunchAction, this ); + iAsyncCallBack = new ( ELeave ) CAsyncCallBack( asyncCallBack, + CActive::EPriorityStandard ); + + iContactListBox = new (ELeave) CEasyDialingListBox(); + iListBoxModel = new(ELeave) CDesCArrayFlat( KEasyDialingListBoxModelGranularity ); + + iContactListBox->ConstructL( CEikListBox::EPaintedSelection + | CEikListBox::ENoFirstLetterMatching + | CEikListBox::EDisableItemSpecificMenu, + iContactDataManager ); + iContactListBox->SetListBoxObserver(this); + + iContactListBox->SetMopParent(this); + + CTextListBoxModel* model = iContactListBox->Model(); + model->SetItemTextArray( iListBoxModel ); + model->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + iContactListBox->MakeVisible( EFalse ); + + SetFocus( EFalse ); + iContactListBox->ActivateL(); + + GfxTransEffect::Register( iContactListBox, + KGfxContactListBoxUid, EFalse ); + + // Do delayed initialization of PCS. PCS constructions takes a long time. + // On the other hand, easy dialing initialization is done in phone application + // constructor, so it contributes the whole system boot time. These are good + // reasons not to construct PCS in easy dialing constructor, but do it later as + // an asynchronous operation. + AsyncActionLaunchL( EInitializePcs ); + } + + +// ----------------------------------------------------------------------------- +// Reset +// Resets easydialing plugin. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::Reset() + { + // PCS searches completing after the Reset() call must be discarded + iDiscardCompletingSearches = ETrue; + + iNewSearchNeeded = EFalse; + iSearchString.Zero(); + iListBoxModel->Reset(); + iNumberOfNames = 0; + iContactListBox->MakeVisible( EFalse ); + iContactDataManager->Reset(); + if ( IsFocused() ) + { + SetFocus( EFalse ); + } + } + + +// ----------------------------------------------------------------------------- +// InitPredictiveContactSearchL +// Initialises predictive contact search. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::InitPredictiveContactSearchL() + { + iPredictiveContactSearchHandler = CPSRequestHandler::NewL(); + iPredictiveContactSearchHandler->AddObserverL(this); + + // Put the searched contact fields into array. + RArray contact_fields; + CleanupClosePushL(contact_fields); + + // Check which relevant contact fields are indexed in PCS search. + iFirstNamePCSIndex = FindContactFieldPCSIndexL( R_VPBK_FIELD_TYPE_FIRSTNAME ); + iLastNamePCSIndex = FindContactFieldPCSIndexL( R_VPBK_FIELD_TYPE_LASTNAME ); + iCompanyNamePCSIndex = FindContactFieldPCSIndexL( R_VPBK_FIELD_TYPE_COMPANYNAME ); + + // If first name and last name are not indexed in PCS, easy dialing plugin + // can not function reasonably. The function leaves, which in turn causes + // the plugin not to be initialized. + // Company name not being indexed is not as severe case, and does not cause a leave. + // Fields used in PCS indexing are configured in cenrep 2000B5C6. + if ( iFirstNamePCSIndex == KErrNotFound ) + { + OstTrace0( TRACE_ERROR, CEASYDIALINGPLUGIN_INITPREDICTIVECONTACTSEARCHL_ERROR_NO_FIRST_NAME, "ERROR, PCS does not support first name indexing!" ); + LOGSTRING("EasyDialingPlugin: PCS does not support first name indexing => Leave"); + User::Leave( KErrEasyDialingNoFirstNamePCSIndexing ); + } + if ( iLastNamePCSIndex == KErrNotFound ) + { + OstTrace0( TRACE_ERROR, CEASYDIALINGPLUGIN_INITPREDICTIVECONTACTSEARCHL_ERROR_NO_LAST_NAME, "ERROR, PCS does not support last name indexing!" ); + LOGSTRING("EasyDialingPlugin: PCS does not support last name indexing => Leave"); + User::Leave( KErrEasyDialingNoLastNamePCSIndexing ); + } + + // First name, last name and company name (if supported) are used in PCS search. + contact_fields.Append(R_VPBK_FIELD_TYPE_FIRSTNAME); + contact_fields.Append(R_VPBK_FIELD_TYPE_LASTNAME); + if ( iCompanyNamePCSIndex != KErrNotFound ) + { + contact_fields.Append(R_VPBK_FIELD_TYPE_COMPANYNAME); + } + + SetSortOrderL( iContactDataManager->NameOrder() ); + + // Create and fill ps settings object. + CPsSettings* ps_settings = CPsSettings::NewL(); + CleanupStack::PushL(ps_settings); + + ps_settings->SetSearchUrisL(iContactDataStores); + ps_settings->SetMaxResults(KEDMaximumMatchingContactsCount); + ps_settings->SetSortType(EAlphabetical); + ps_settings->SetDisplayFieldsL(contact_fields); + + // Set the PCS settings. + iPredictiveContactSearchHandler->SetSearchSettingsL(*ps_settings); + + CleanupStack::PopAndDestroy(ps_settings); + CleanupStack::PopAndDestroy(&contact_fields); + + iPredictiveSearchQuery = CPsQuery::NewL(); + } + +// ----------------------------------------------------------------------------- +// SetSortOrderL +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::SetSortOrderL( CEasyDialingContactDataManager::TNameOrder aNameOrder ) + { + RArray fields; + CleanupClosePushL( fields ); + if ( aNameOrder == CEasyDialingContactDataManager::EFirstnameLastname ) + { + fields.Append(R_VPBK_FIELD_TYPE_FIRSTNAME); + fields.Append(R_VPBK_FIELD_TYPE_LASTNAME); + } + else + { + fields.Append(R_VPBK_FIELD_TYPE_LASTNAME); + fields.Append(R_VPBK_FIELD_TYPE_FIRSTNAME); + } + if ( iCompanyNamePCSIndex != KErrNotFound ) + { + fields.Append(R_VPBK_FIELD_TYPE_COMPANYNAME); + } + iPredictiveContactSearchHandler->ChangeSortOrderL( *iContactDataStores[0], fields ); + CleanupStack::PopAndDestroy( &fields ); + } + +// ----------------------------------------------------------------------------- +// OfferKeyEventL +// Check the received keypad event and performs user +// actions related to it. +// ----------------------------------------------------------------------------- +// +TKeyResponse CEasyDialingPlugin::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) + { + TKeyResponse keyResponse = EKeyWasNotConsumed; + + if ( aKeyEvent.iCode == 0 && aKeyEvent.iScanCode != EStdKeyDevice3) + { + return keyResponse; + } + + TInt keyCode = aKeyEvent.iCode; + + // Swap right and left key codes in mirrored layout. This needs to be done + // also for action menu grid as CAknGrid handles arrow keys like this: + // left key = next column (not item!) and right is previous column and + // grid layout (LtR/RtL) is not taken into account when movement is done + // in columns (always like in LtR layout). So if right key should move + // focus to the right also in mirroded layout, key codes must be switched. + // This kind of approach is used also e.g. in application grid. + if ( AknLayoutUtils::LayoutMirrored() ) + { + if ( keyCode == EKeyRightArrow ) keyCode = EKeyLeftArrow; + else if ( keyCode == EKeyLeftArrow ) keyCode = EKeyRightArrow; + } + + + if ( IsFocused() ) + { + if ( keyCode == EKeyUpArrow ) + { + // if the focus is on the top-most item + if ( iContactListBox->CurrentItemIndex() == 0) + { + // then focus jumps off the component. + SetFocus( EFalse ); + DrawDeferred(); + keyResponse = EKeyWasConsumed; + } + else + { + keyResponse = iContactListBox->OfferKeyEventL( aKeyEvent, aType ); + } + } + else if ( keyCode == EKeyDownArrow ) + { + // if the focus is on the bottom-most item + if ( iContactListBox->CurrentItemIndex() == (iNumberOfNames - 1) ) + { + // then focus jumps off the component. + SetFocus( EFalse ); + DrawDeferred(); + keyResponse = EKeyWasConsumed; + } + else + { + keyResponse = iContactListBox->OfferKeyEventL( aKeyEvent, aType ); + } + } + + else if ( keyCode == EKeyRightArrow ) + { + iRememberFocus = ETrue; + AsyncActionLaunchL( ELaunchCurrentContact ); + keyResponse = EKeyWasConsumed; + } + + else if ( keyCode == EKeyLeftArrow ) + { + // then focus jumps off the component. + SetFocus( EFalse ); + DrawDeferred(); + keyResponse = EKeyWasConsumed; + } + + else + { + // then focus jumps off the component. + SetFocus( EFalse ); + } + } + + else if ( iNumberOfNames > 0 ) // not in focus but there are contacts to show + { + if ( keyCode == EKeyUpArrow || keyCode == EKeyDownArrow ) + { + SetFocus( ETrue ); + keyResponse = iContactListBox->SetFocusedWithKeyEventL( aKeyEvent, aType ); + } + } + return keyResponse; + } + + +// ----------------------------------------------------------------------------- +// CountComponentControls +// +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingPlugin::CountComponentControls() const + { + return iNumberOfNames > 0 ? 1 : 0; + } + + +// ----------------------------------------------------------------------------- +// ComponentControl +// +// ----------------------------------------------------------------------------- +// +CCoeControl* CEasyDialingPlugin::ComponentControl( TInt aIndex ) const + { + return aIndex == 0 ? iContactListBox : NULL; + } + + +// ----------------------------------------------------------------------------- +// MakeVisible +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::MakeVisible( TBool aVisible ) + { + if ( aVisible != IsVisible() ) + { + CCoeControl::MakeVisible( aVisible ); + + if ( !aVisible && IsFocused() ) + { + SetFocus( EFalse ); + } + } + } + + +// ----------------------------------------------------------------------------- +// SizeChanged +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::SizeChanged() + { + TRect rect = Rect(); + // convert rect to absolute coordinates + rect.SetRect( PositionRelativeToScreen(), rect.Size() ); + + iContactListBox->SetMaxRect( rect ); + iContactListBox->SetRectToNumberOfItems( iNumberOfNames ); + + TInt itemToMakeVisible = iContactListBox->CurrentItemIndex(); + if ( itemToMakeVisible == KErrNotFound && iNumberOfNames ) + { + // if no current item is set, make sure that the list is then + // scrolled to the bottom. + itemToMakeVisible = iNumberOfNames - 1; + } + iContactListBox->ScrollToMakeItemVisible( itemToMakeVisible ); + } + + +// ----------------------------------------------------------------------------- +// FocusChanged +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::FocusChanged( TDrawNow aDrawNow ) + { + iContactListBox->SetFocus( IsFocused() ); + if( !IsFocused() ) + { + // To be on the safe side, cancel async callback and reset input block. + CancelActionLaunchAndInputBlock(); + } + CCoeControl::FocusChanged( aDrawNow ); + InformObservers( MDialingExtensionObserver::EFocusChanged ); + } + + +// ----------------------------------------------------------------------------- +// SetInputL +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::SetInputL( const TDesC& aSearchString ) + { + if ( !IsEnabled() ) + { + return; + } + OstTraceExt1( TRACE_NORMAL, CEASYDIALINGPLUGIN_SET_INPUT, "SetInput: '%S' ", aSearchString ); + LOGSTRING1("EasyDialingPlugin: SetInput: '%S'", &aSearchString ); + + // Earlier here was a test if the search string is the same as the one used in previous search. + // If it was, no search was done but function returned immediately. + // This has now been removed. It is possible that contacts have changed, and a new search + // may be needed even if the search string is the same. + + // Check if search string is just empty space or 0-length. Decision was made that no + // matches are shown if search string is just space (would show all contacts) + // even if somebody might have unnamed contacts. Should be quite rare. + // It's assumed later on in the code that string is not just empty space. + TLex searchString( aSearchString ); + searchString.SkipSpace(); + if ( searchString.Eos() ) // the end of the string reached after skipping empty space + { + // It's assumed here that if we get here due to switching to call + // handling etc, then dialer and thus ed is already set invisible + // and effect will not be shown as listbox is already invisible. + // However if user empties number entry, then it's feasible to show + // effect. + HideContactListBoxWithEffect(); + Reset(); + } + else // proper search string + { + iSearchString.Copy( aSearchString.Left( iSearchString.MaxLength() ) ); + LaunchSearchL(); + } + } + + +// ----------------------------------------------------------------------------- +// MatchingContactCount +// +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingPlugin::MatchingContactCount() + { + return iNumberOfNames; + } + + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::StoreReady +// From MVPbkContactStoreListObserver. +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::StoreReady(MVPbkContactStore& /* aContactStore */) + { + + } + + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::StoreUnavailable +// From MVPbkContactStoreListObserver. +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::StoreUnavailable(MVPbkContactStore& /* aContactStore */, TInt /* aReason */) + { + + } + + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::HandleStoreEventL +// From MVPbkContactStoreListObserver. +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::HandleStoreEventL( MVPbkContactStore& /* aContactStore */, + TVPbkContactStoreEvent aStoreEvent) + { + // Store's observers are informed one by one using active object so one shouldn't + // perform search syncronously as one must try to ensure that PCS has had a + // chance to update its store. However there seems to be no way to be + // 100% sure that PCS is up-to-date when search is launched: telephony app + // has such a high priority and there are no APIs to query PCS' status. + switch ( aStoreEvent.iEventType ) + { + case TVPbkContactStoreEvent::EContactAdded: + case TVPbkContactStoreEvent::EContactDeleted: + case TVPbkContactStoreEvent::EContactChanged: + { + DoHandleContactsChangedL(); + } + break; + + default: + break; + } + } + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::OpenComplete +// From MVPbkContactStoreListObserver. +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::OpenComplete() + { + } + +// ----------------------------------------------------------------------------- +// EasyDialingSettingsChanged +// From MEasyDialingCenrepListenerObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::EasyDialingSettingsChanged( TInt aValue ) + { + if ( aValue == 0 ) + { + Reset(); + InformObservers( MDialingExtensionObserver::EEasyDialingDisabled ); + } + else if ( aValue == 1 ) + { + InformObservers( MDialingExtensionObserver::EEasyDialingEnabled ); + } + MakeVisible( aValue ); + } + +// ----------------------------------------------------------------------------- +// EasyDialingContactThumbnailsSettingsChanged +// From MEasyDialingCenrepListenerObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::EasyDialingContactThumbnailsSettingsChanged( TInt aThumbnailSettingValue ) + { + iContactDataManager->SetContactThumbnailSetting( aThumbnailSettingValue ); + iContactDataManager->Reload(); + DrawDeferred(); + } + +// ----------------------------------------------------------------------------- +// AllContactDataLoaded +// From MContactDataManagerObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::AllContactDataLoaded() + { + iContactListBox->DrawDeferred(); + } + +// ----------------------------------------------------------------------------- +// NameOrderChanged +// From MContactDataManagerObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::NameOrderChanged() + { + if ( iPredictiveContactSearchHandler ) + { + TRAP_IGNORE( SetSortOrderL( iContactDataManager->NameOrder() ) ); + } + } + +// ----------------------------------------------------------------------------- +// FavouritesChanged +// From MContactDataManagerObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::FavouritesChanged() + { + TRAP_IGNORE( DoHandleContactsChangedL() ); + } + +// ----------------------------------------------------------------------------- +// InformContactorEvent +// From MEDContactorObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::InformContactorEvent( MEDContactorObserver::TEvent aEvent ) + { + + // This callback function simply propagates the events to its own listener. + switch ( aEvent ) + { + case MEDContactorObserver::ECommunicationStarted: + InformObservers( MDialingExtensionObserver::ECommunicationStarted ); + break; + case MEDContactorObserver::ECommunicationCancelled: + InformObservers( MDialingExtensionObserver::ECommunicationCancelled ); + break; + default: + break; + } + + // Reset focus unless it is flagged to be remembered. + if ( !iRememberFocus ) + { + SetFocus( EFalse ); + DrawDeferred(); + } + + iRememberFocus = EFalse; + } + +// ----------------------------------------------------------------------------- +// Draw +// The actual UI drawing function. Draws the easy dialing popup bubble on the +// idle screen. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::Draw( const TRect& /* aRect */ ) const + { + return; + } + + +// ----------------------------------------------------------------------------- +// LaunchSearchL +// Initiates predictive contact search. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::LaunchSearchL() + { + if ( iSearchString.Length() == 0 || !iPredictiveContactSearchHandler ) + { + return; + } + + iDiscardCompletingSearches = EFalse; + iNewSearchNeeded = EFalse; + + iPredictiveSearchQuery->Reset(); + + for ( TInt i = 0; i < iSearchString.Length(); i++ ) + { + // Add a query item + CPsQueryItem* item = CPsQueryItem::NewL(); + CleanupStack::PushL(item); + + item->SetCharacter( iSearchString[i] ); + + // The PCS mode used with character is based on character itself, + // not to the keyboard it is made with. While this is not strictly + // identical to checking the used keyboard, this behaves identically + // in most of the normal cases, and makes the logic simpler. + if ( IsItuTCharacter( iSearchString[i] ) ) + { + item->SetMode( EPredictiveItuT ); + } + else + { + item->SetMode( EPredictiveDefaultKeyboard ); + } + + iPredictiveSearchQuery->AppendL(*item); + + // Previous CPsQuery::AppendL takes the ownership of item. + // Do not delete item. + CleanupStack::Pop(item); + } + + // Issue the search. SearchL is asynchronous function => returns immediately. + iPredictiveContactSearchHandler->SearchL(*iPredictiveSearchQuery); + } + + +// ----------------------------------------------------------------------------- +// HandlePsResultsUpdate from MPsResultsObserver +// Called after predictive search has been completed. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::HandlePsResultsUpdate( RPointerArray& aResults, RPointerArray& aSeqs ) + { + if ( !IsEnabled() ) + { + // Easydialing is off. We should arrive here only if user turned it off while a search was happening. + Reset(); + return; + } + TRAPD( leaveError, HandlePsResultsUpdateL( aResults, aSeqs ) ); + + if ( leaveError ) + { + OstTrace1( TRACE_ERROR, CEASYDIALINGPLUGIN_HANDLEPSRESULTSUPDATE, "HandlePsResultsUpdate failed: %d", leaveError ); + LOGSTRING1("EasyDialingPlugin: HandlePsResultsUpdate failed: %d", leaveError ); + } + } + + +// ----------------------------------------------------------------------------- +// HandlePsError from MPsResultsObserver +// Called when search error happens. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::HandlePsError( TInt aErrorCode ) + { + OstTrace1( TRACE_ERROR, CEASYDIALINGPLUGIN_HANDLEPSERROR, "PCS Error: %d", aErrorCode ); + LOGSTRING1("EasyDialingPlugin: PCS Error: %d", aErrorCode ); + } + +// ----------------------------------------------------------------------------- +// CachingStatus from MPsResultsObserver +// Called to update caching status. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::CachingStatus( TCachingStatus& aStatus, TInt& aError ) + { + OstTraceExt2( TRACE_NORMAL, CEASYDIALINGPLUGIN_CACHINGSTATUS, "PCS CachingStatus: %d, error: %d", ( TUint )( aStatus ), aError ); + LOGSTRING2("EasyDialingPlugin: PCS CachingStatus: %d, error: %d", aStatus, aError ); + } + + +// ----------------------------------------------------------------------------- +// FindContactFieldPCSIndex +// Searches the index that stores the given contact field. +// To see possible contact field numbering, see file "vpbkeng.rsg". +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingPlugin::FindContactFieldPCSIndexL( TInt aIndex ) + { + RArray fieldOrder; + CleanupClosePushL( fieldOrder ); + + // Current implementation searches only from default database. + // Later this may be expanded to search SIM contacts as well. + HBufC* default_cdb = VPbkContactStoreUris::DefaultCntDbUri().AllocLC(); + + iPredictiveContactSearchHandler->GetDataOrderL( *default_cdb, fieldOrder ); + + for ( TInt i = 0; i < fieldOrder.Count(); i++) + { + if ( fieldOrder[i] == aIndex ) + { + CleanupStack::PopAndDestroy( default_cdb ); + CleanupStack::PopAndDestroy( &fieldOrder ); + return i; + } + } + + CleanupStack::PopAndDestroy( default_cdb ); + CleanupStack::PopAndDestroy( &fieldOrder ); + return KErrNotFound; + } + + +// ----------------------------------------------------------------------------- +// HandlePsResultsUpdateL +// This function does the actual callback fork, and must be trapped inside +// HandlePsResultsUpdateL. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::HandlePsResultsUpdateL( RPointerArray& aResults, RPointerArray& /*aSeqs*/ ) + { + // If iDiscardCompletingSearches is ETrue, don't show search results but just return. + // If easydialing has been reset with reset function, no searches completed after that + // can be shown. + // This is done like this because there seems not to be a feasible way of cancelling all + // PCS search request in PCS API. CancelRequest does not work here. + if ( iDiscardCompletingSearches ) + { + return; + } + + iListBoxModel->Reset(); + iContactListBox->HandleItemRemovalL(); + + TInt numberOfPCSMatches( aResults.Count() ); + + // Resetting the contactdatamanager causes the thumbnails to flicker a bit, because + // we need to load the thumbnails again. But if there are lots of search results, or + // lots of loaded thumbnails in the manager, matching the search results to the + // thumbnail manager contents may take too much time. If there are lots of results, + // it is likely that the contents of the listbox change anyway, so the flickering + // doesn't matter too much. This also limits the memory usage of the manager. + // But if there are fewer search results, it is worth trying to match them + // with the contents of thumbnail manager. + + TBool matchThumbnails(ETrue); + if ( numberOfPCSMatches > KEDFlushContactDataManagerLimit ) + { + iContactDataManager->Reset(); + matchThumbnails = EFalse; + } + + OstTrace1( TRACE_NORMAL, CEASYDIALINGPLUGIN_HANDLEPSRESULTSUPDATEL_MATCHES, "Matching results from PCS: %d", numberOfPCSMatches ); + LOGSTRING1("EasyDialingPlugin: Matching results from PCS: %d", numberOfPCSMatches ); + + // retrieve the name order before adding + CEasyDialingContactDataManager::TNameOrder nameOrder = iContactDataManager->NameOrder(); + + RPointerArray favsFoundByPcs; + CleanupResetAndDestroyPushL( favsFoundByPcs ); + + // Update the model + // ---------------- + for ( TInt i = 0; i < numberOfPCSMatches; i++ ) + { + TInt indexFromEnd = numberOfPCSMatches - i - 1; + + MVPbkContactLink* link = iPredictiveContactSearchHandler->ConvertToVpbkLinkLC( + *(aResults[indexFromEnd]), *iContactManager ); + if ( !iContactDataManager->IsFavL( link ) ) + { + // handle favourites separately, in another loop + HBufC* contactString = CreateContactStringLC( aResults[ indexFromEnd ], nameOrder ); + CreateListBoxContactStringL( *contactString, link, matchThumbnails, EFalse ); + CleanupStack::PopAndDestroy( contactString ); + CleanupStack::PopAndDestroy( link ); + } + else + { + // favourites are handled later + favsFoundByPcs.AppendL( link ); + CleanupStack::Pop( link ); + } + + OstTraceExt2( TRACE_NORMAL, CEASYDIALINGPLUGIN_HANDLEPSRESULTSUPDATEL_SHOW_MATCH, "Contact #%d: '%S'", i+1, iContactStringCreationBuffer ); + LOGSTRING2( "EasyDialingPlugin: Contact #%d: '%S'", i+1, &iContactStringCreationBuffer ); + } + + // Search synchronously through all the favourite contacts to ensure + // that all favourite matches are added to bottom even when number of mathces + // exceeds the maximum number set to PCS + TInt numberOfFavs( iContactDataManager->NumberOfFavsL() ); + TBuf results; + for ( TInt i = numberOfFavs - 1; i >= 0; i-- ) + { + HBufC* favContactString = iContactDataManager->FavContactStringLC( i, nameOrder ); + MVPbkContactLink* link = iContactDataManager->FavLinkLC( i ); + + // Check if this fav contact was returned in aResults. + // It's at least theoretically possible that all matches in aResults + // are not matched when using LookupMatchL. PCS has completely separate logics + // for functions SearchL and LookupMatchL and especially with Chinese variant + // they may return different results. + TBool found = ( Find( link, favsFoundByPcs ) != KErrNotFound ); + + // If this fav contact was not in aResults, then use LookupMatchL + // to check if this contact is still a match and was excluded from aResults + // because maximum number of results was exceeded. + if ( !found ) + { + results = KNullDesC; + iPredictiveContactSearchHandler->LookupMatchL( + *iPredictiveSearchQuery, *favContactString, results ); + found = ( results.Length() > 0 ); + } + + if ( found ) + { + // matches, add this fav to listbox. + CreateListBoxContactStringL( *favContactString, link, matchThumbnails, ETrue ); + } + + CleanupStack::PopAndDestroy(); // link + CleanupStack::PopAndDestroy( favContactString ); + } + + CleanupStack::PopAndDestroy( &favsFoundByPcs ); // ResetAndDestroy + + // Update the view + // --------------- + iNumberOfNames = iListBoxModel->Count(); + if ( iNumberOfNames ) + { + iContactListBox->SetRectToNumberOfItems( iNumberOfNames ); + iContactListBox->HandleItemAdditionL(); + // Scroll the list to bottom + iContactListBox->ScrollToMakeItemVisible( iNumberOfNames-1 ); + ShowContactListBoxWithEffect(); + } + else + { + HideContactListBoxWithEffect(); + } + + if ( IsFocused() ) + { + SetFocus( EFalse ); + } + + DrawDeferred(); + + InformObservers( MDialingExtensionObserver::ESearchComplete ); + } + + +// ----------------------------------------------------------------------------- +// void CCASimpleNotifyL() +// Implements MCCAObserver notification interface. +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::CCASimpleNotifyL( TNotifyType aType, TInt aReason ) + { + OstTraceExt2( TRACE_NORMAL, CEASYDIALINGPLUGIN_CCASIMPLENOTIFYL, "CCASimpleNotifyL: type: %d, reason: %d", ( TUint )( aType ), aReason ); + LOGSTRING2("EasyDialingPlugin: CCASimpleNotifyL: type: %d, reason: %d", (TInt)aType, aReason ); + + iContactLauncherActive = EFalse; + + CAknAppUi* appUi = static_cast( iCoeEnv->AppUi() ); + appUi->HandleCommandL( EPhoneCmdBlockingDialogClosed ); + + // If contacts have been edited during contact launcher being open, a new search + // needs to be done. + if ( iNewSearchNeeded ) + { + // The cached information in contact data manager may be outdated. Call to reload makes sure that when the + // search is made, all data is loaded again. + iContactDataManager->Reload(); + + LaunchSearchL(); + } + + // Give up focus, if iRememberFocus flag is not set. + if ( !iRememberFocus ) + { + SetFocus( EFalse ); + DrawDeferred(); + } + iRememberFocus = EFalse; + + // Inform observers. + InformObservers( MDialingExtensionObserver::ECCALauncherExit ); + } + + +// ----------------------------------------------------------------------------- +// void LaunchCurrentContactL() +// Implements MCCAObserver notification interface. +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::LaunchCurrentContactL() + { + __ASSERT_DEBUG( iNumberOfNames > 0, EasyDialingPanic( EEasyDialingPanicNoResults ) ); + __ASSERT_DEBUG( iContactListBox->CurrentItemIndex() >= 0, EasyDialingPanic( EEasyDialingPanicNoContactSelected ) ); + + if (( iContactLauncherActive ) || ( iNumberOfNames == 0 ) || ( !iContactListBox ) || ( iContactListBox->CurrentItemIndex() < 0 )) + { + OstTrace0( TRACE_ERROR, CEASYDIALINGPLUGIN_LAUNCHCURRENTCONTACTL_ERROR, "LaunchCurrentContactL: Parameter error" ); + LOGSTRING("EasyDialingPlugin: LaunchCurrentContactL - Parameter error"); + return; + } + + MCCAParameter* launchParameters = TCCAFactory::NewParameterL(); + CleanupClosePushL( *launchParameters ); + + // ESoftExit flag causes that ca launcher will not close the + // client application in any circumstance. + // Application hosting easydialing is telephone application. + // It must never be closed, so we must use this flag. + launchParameters->SetConnectionFlag(MCCAParameter::ESoftExit); + + launchParameters->SetContactDataFlag(MCCAParameter::EContactLink); + + // Get the contact link of the current contact item. + HBufC8* contact8 = iContactListBox->CurrentContactLinkLC(); + + // Expand it into 16-bit descriptor because cca launcher api expects this. + HBufC16* contact16 = HBufC16::NewLC( contact8->Length() ); + contact16->Des().Copy( *contact8 ); + + launchParameters->SetContactDataL( *contact16 ); + + CleanupStack::PopAndDestroy( contact16 ); + CleanupStack::PopAndDestroy( contact8 ); + + TPtrC selectedName = iListBoxModel->MdcaPoint( iContactListBox->CurrentItemIndex() ); + OstTraceExt1( TRACE_NORMAL, CEASYDIALINGPLUGIN_LAUNCHCURRENTCONTACTL_LAUNCH_CCA, "Launch CL for contact: '%S'", selectedName ); + LOGSTRING1("EasyDialingPlugin: Launch CL for contact: '%S'", &selectedName ); + + iContactLauncher->LaunchAppL( *launchParameters, this ); + + // Ownership of parameter transferred to CCA launcher => pop but do not destroy. + CleanupStack::Pop( launchParameters ); + + + iContactLauncherActive = ETrue; + CAknAppUi* appUi = static_cast( iCoeEnv->AppUi() ); + appUi->HandleCommandL( EPhoneCmdBlockingDialogLaunched ); + } + + +// ----------------------------------------------------------------------------- +// CreateListBoxContactStringL +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::CreateListBoxContactStringL( + const TDesC& aContactString, + MVPbkContactLink *aLink, + TBool aMatchThumbnails, + TBool aFav ) + { + // Construct the contact string for the listbox model. + iContactStringCreationBuffer.Zero(); + + // Append contact thumbnail id. + HBufC* thumbnailId = iContactDataManager->GetThumbnailIdL( aLink, aMatchThumbnails, aFav ); + iContactStringCreationBuffer.Append( *thumbnailId ); + delete thumbnailId; + iContactStringCreationBuffer.Append( KListFieldSeparatorChar ); + + AppendStringWithMatchDataL( + iContactStringCreationBuffer, + aContactString, + iPredictiveContactSearchHandler, + iPredictiveSearchQuery ); + + // Append the whole string to listbox model. + iListBoxModel->AppendL( iContactStringCreationBuffer ); + } + +// ----------------------------------------------------------------------------- +// CreateContactStringLC +// +// ----------------------------------------------------------------------------- +// +HBufC* CEasyDialingPlugin::CreateContactStringLC( CPsClientData* aResult, + CEasyDialingContactDataManager::TNameOrder aNameOrder ) + { + TPtrC firstName = *aResult->Data( iFirstNamePCSIndex ); + TPtrC lastName = *aResult->Data( iLastNamePCSIndex ); + TPtrC companyName( KNullDesC ); + + if ( iCompanyNamePCSIndex != KErrNotFound ) + { + companyName.Set( *aResult->Data( iCompanyNamePCSIndex ) ); + } + return EasyDialingUtils::CreateContactStringLC( firstName, lastName, companyName, aNameOrder ); + } + + +// ----------------------------------------------------------------------------- +// AddObserverL +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::AddObserverL( MDialingExtensionObserver* aObserver ) + { + if ( !aObserver ) + { + return; + } + + iObservers.AppendL( aObserver ); + } + + +// ----------------------------------------------------------------------------- +// RemoveObserver +// +// Removes the parameter observer from observer list if found. If same observer +// has registered multiple times (which is unnecessary), removed just the first +// registration. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::RemoveObserver( MDialingExtensionObserver* aObserver ) + { + for ( TInt i = 0; i < iObservers.Count(); i++ ) + { + if ( iObservers[i] == aObserver) + { + iObservers.Remove( i ); + return; + } + } + } + + +// ----------------------------------------------------------------------------- +// InformObservers +// Informs all registered observers of easy dialing events. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::InformObservers( MDialingExtensionObserver::TEvent aEvent ) + { + for ( TInt i = 0; i < iObservers.Count(); i++ ) + { + iObservers[i]->HandleDialingExtensionEvent( aEvent ); + } + } + +// ----------------------------------------------------------------------------- +// CbaResourceId +// Returns EasyDialingPlugin specific CBA resource ID that +// Phone application can use when updating Soft Keys. +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingPlugin::CbaResourceId() + { + return R_EASYDIALING_CBA; + } + + +// ----------------------------------------------------------------------------- +// MenuResourceId +// Returns EasyDialingPlugin specific menu resource ID that +// Phone application can use when easydialing is in focus. +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingPlugin::MenuResourceId() + { + return R_EASYDIALING_MENUBAR; + } + + +// ----------------------------------------------------------------------------- +// InitializeMenuPaneL +// Initializes easy dialing menu pane. This function is meant to be called in +// DynInitMenuPaneL of the application, if the application wants to use easy +// dialing menu. +// ----------------------------------------------------------------------------- +// +TBool CEasyDialingPlugin::InitializeMenuPaneL( CEikMenuPane& aMenuPane, TInt aMenuResourceId ) + { + if ( aMenuResourceId == R_PHONEUIDIALER_OPTIONS_MENU ) + { + TInt index( KErrNotFound ); + // To be on the safe side - place holder was added into phoneui.rss. + if ( aMenuPane.MenuItemExists( EEasyDialingSettingsItemPlaceHolder, index ) ) + { + // Add first menu item (= on/off submenu) after placeHolder item and + // then delete that (empty) placeHolder. + aMenuPane.AddMenuItemsL( R_EASYDIALING_OPTIONS_ON_OFF_MENU_ITEM, + EEasyDialingSettingsItemPlaceHolder ); + aMenuPane.DeleteMenuItem( EEasyDialingSettingsItemPlaceHolder ); + + LOGSTRING("EasyDialingPlugin::InitializeMenuPaneL: Added on/off menu into dialer's menu" ); + } + + // Return EFalse as only one menu item was added here. + return EFalse; + } + + else if ( aMenuResourceId == R_EASYDIALING_MENU ) + { + TBool voiceCall = EFalse; + TBool videoCall = EFalse; + TBool message = EFalse; + + if ( iContactListBox->CurrentItemIndex() >= 0 ) + { + TInt index = iContactListBox->CurrentContactDataIndex(); + + voiceCall = iContactDataManager->VoiceCallAvailable( index ); + videoCall = iContactDataManager->VideoCallAvailable( index ); + message = iContactDataManager->UniEditorAvailable( index ); + } + + // Call menu item is not show if neither voice call nor video call are possible. + aMenuPane.SetItemDimmed( EEasyDialingVoiceCall, !voiceCall && !videoCall ); + aMenuPane.SetItemDimmed( EEasyDialingSendMessage, !message ); + + LOGSTRING("EasyDialingPlugin::InitializeMenuPaneL: InitializeMenuPaneL done" ); + + return ETrue; + } + + else if ( aMenuResourceId == R_EASYDIALING_OPTIONS_CALL_MENU ) + { + TBool voiceCall = EFalse; + TBool videoCall = EFalse; + + if ( iContactListBox->CurrentItemIndex() >= 0 ) + { + TInt index = iContactListBox->CurrentContactDataIndex(); + + voiceCall = iContactDataManager->VoiceCallAvailable( index ); + videoCall = iContactDataManager->VideoCallAvailable( index ); + } + + aMenuPane.SetItemDimmed( EEasyDialingVoiceCall, !voiceCall ); + aMenuPane.SetItemDimmed( EEasyDialingVideoCall, !videoCall ); + + LOGSTRING("EasyDialingPlugin::InitializeMenuPaneL: InitializeMenuPaneL for call submenu done" ); + + return ETrue; + } + + else if ( aMenuResourceId == R_EASYDIALING_OPTIONS_ON_OFF_CASCADE_MENU ) + { + if ( IsEnabled() ) + { + aMenuPane.SetItemButtonState( EEasyDialingOn, EEikMenuItemSymbolOn ); + } + else + { + aMenuPane.SetItemButtonState( EEasyDialingOff, EEikMenuItemSymbolOn ); + } + + LOGSTRING("EasyDialingPlugin::InitializeMenuPaneL: InitializeMenuPaneL for on/off submenu done" ); + + return ETrue; + } + + else + { + return EFalse; + } + } + +// ----------------------------------------------------------------------------- +// HandleCommandL +// Method for handling EasyDialingPlugin specific commands. +// ----------------------------------------------------------------------------- +// +TBool CEasyDialingPlugin::HandleCommandL( TInt aCommand ) + { + // Input blocker can't block controls higher on the control stack than + // ECoeStackPriorityDialog so we will get HandleCommandL calls from + // phoneappui (CBA) when input blocker is active (=not NULL). + + if ( iInputBlocker && aCommand != EEasyDialingCallHandlingActivated ) + { + // Some action is already being launched since iInputBlocker exists. + // Only call activation command requires always action from this plugin. + return ETrue; + } + + + TBool ret(EFalse); + + switch ( aCommand ) + { + case EEasyDialingOpenContact: + + iRememberFocus = ETrue; + AsyncActionLaunchL( ELaunchCurrentContact ); + ret = ETrue; + break; + + // EEasyDialingEnterKeyAction is sent when Enter key is pressed. + // EEasyDialingMakeCall is sent when send key or send toolbar button or send menu item is pressed. + case EEasyDialingVoiceCall: // fall through + case EEasyDialingEnterKeyAction: + // Make a call. + iRememberFocus = ETrue; + AsyncActionLaunchL( ECallCurrentContact ); + ret = ETrue; + break; + + // Video call is selectable only through menu. + case EEasyDialingVideoCall: + // Make a video call. + iRememberFocus = ETrue; + AsyncActionLaunchL( EVideoCallCurrentContact ); + ret = ETrue; + break; + + // Uni-editor message is selectable only through menu. + case EEasyDialingSendMessage: + // Create a message. + iRememberFocus = ETrue; + AsyncActionLaunchL( ESendMessageCurrentContact ); + ret = ETrue; + break; + + // EEasyDialingCallHandlingActivated is sent when the in-call-ui of telephony gets activated + case EEasyDialingCallHandlingActivated: + + iRememberFocus = EFalse; + // Stop input block and async action launch in case they are active. + CancelActionLaunchAndInputBlock(); + // Close down number selection popup in case it happens to be open. + iContactorService->CancelService(); + // Close down communication launcher if it's active + if ( iContactLauncherActive ) + { + iNewSearchNeeded = EFalse; + iContactLauncher->CloseAppL(); + } + ret = ETrue; + break; + + case EEasyDialingOn: + + iCenrepListener->SetEasyDialingSettingsValue( 1 ); + ret = ETrue; + break; + + case EEasyDialingOff: + + iCenrepListener->SetEasyDialingSettingsValue( 0 ); + ret = ETrue; + break; + + case EEasyDialingClosePopup: + + // Not only Number Entry is removed but also closes down number selection popup in case it happens to be open. + iContactorService->CancelService(); + ret = ETrue; + break; + + default: + break; + } + return ret; + } + +// ----------------------------------------------------------------------------- +// IsEnabled +// Check if Easy dialing is enabled in the settings +// ----------------------------------------------------------------------------- +// +TBool CEasyDialingPlugin::IsEnabled() const + { + return ( iCenrepListener && iCenrepListener->Value() != 0 ); + } + +// ----------------------------------------------------------------------------- +// AsyncActionLaunchL +// Use asynchronous callback to launch action. While action is being launched, +// input blocker is used to avoid OfferKeyEvent and HandlePointerEvent calls +// coming in. Both end key and application key work despite of input blocker. +// Input blocker can't block phoneappui's cba so extra check is needed in +// HandleCommandL method. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::AsyncActionLaunchL( const TEasyDialingAction aAction ) + { + iActionToBeLaunched = aAction; + + CancelActionLaunchAndInputBlock(); + + if ( aAction == ELaunchSearch ) + { + // Must be set as low as possible to enable PCS to update its store. + iAsyncCallBack->SetPriority( CActive::EPriorityIdle ); + } + else + { + iAsyncCallBack->SetPriority( CActive::EPriorityStandard ); + } + + iAsyncCallBack->CallBack(); // activates callback request + + // By defining cancel handler, we don't block all input but system is still + // able to deactivate the view etc. + iInputBlocker = CAknInputBlock::NewCancelHandlerLC( this ); + CleanupStack::Pop( iInputBlocker ); + + // This means that iInputBlocker is deleted by CAknInputBlock when + // it's cancelled ( we get a callback where iInputBlocker is set to NULL). + iInputBlocker->SetCancelDelete( iInputBlocker ); + } + +// ----------------------------------------------------------------------------- +// AsyncCallBackToLaunchAction +// Callback function for CAsyncCallBack class. +// ----------------------------------------------------------------------------- +// +TInt CEasyDialingPlugin::AsyncCallBackToLaunchAction( TAny* aPtr ) + { + CEasyDialingPlugin* plugin = static_cast( aPtr ); + + TRAP_IGNORE( plugin->DoLaunchActionL() ); + + // Stop input block if active (=not NULL). + if ( plugin->iInputBlocker ) + { + plugin->iInputBlocker->Cancel(); + } + + plugin->iActionToBeLaunched = ENoActionDefined; + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// DoLaunchActionL +// +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::DoLaunchActionL( ) + { + // If ELaunchCurrentContact, then we launch cca launcher. + if ( iActionToBeLaunched == ELaunchCurrentContact ) + { + LaunchCurrentContactL(); + return; + } + else if ( iActionToBeLaunched == ELaunchSearch ) + { + LaunchSearchL(); + return; + } + else if ( iActionToBeLaunched == EInitializePcs ) + { + PERF_MEASURE_START + InitPredictiveContactSearchL(); + PERF_MEASURE_STOP + + return; + } + + // If not for launching current contact or performing search, + // the action is launching some communication method. + + if ( iContactorService->IsBusy() ) + { + LOGSTRING("EasyDialingPlugin: LaunchActionL - contactor service is busy!"); + return; + } + + // Get current contact link. + HBufC8* contact8 = iContactListBox->CurrentContactLinkLC(); + + TPtrC contactString( iListBoxModel->MdcaPoint( iContactListBox->CurrentItemIndex() ) ); + + TPtrC fullNameSeparators; + TInt error = TextUtils::ColumnText( fullNameSeparators , 1, &contactString ); + __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) ); + + // Remove highlight separators. It is possible that some contactor API has problem with them. + HBufC* fullName = AllocWithoutHighlightSeparatorsLC( fullNameSeparators ); + + VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector selector( + VPbkFieldTypeSelectorFactory::EEmptySelector ); + + switch ( iActionToBeLaunched ) + { + case ECallCurrentContact: + { + // Easy Dialing provides pretty much the same functionality for big Call icon + // and Send key than phonebook's contact list view by using aiw interface + // in edcontactor. + // At this point one must however check whether to use voip or voice call selector - + // otherwise correct logic is provided by aiw interface. + // Note that Easy Dialing ignores default numbers and addresses set for + // action types and shows always the number and address list if there are + // more than one possible number/address for some action. + + CSPSettingsVoIPUtils* sPSettings = CSPSettingsVoIPUtils::NewLC(); + + if ( sPSettings->IsPreferredTelephonyVoIP() ) + { + selector = VPbkFieldTypeSelectorFactory::EVOIPCallSelector; + } + else + { + selector = VPbkFieldTypeSelectorFactory::EVoiceCallSelector; + } + + CleanupStack::PopAndDestroy( sPSettings ); + } + break; + + case EVideoCallCurrentContact: + + selector = VPbkFieldTypeSelectorFactory::EVideoCallSelector; + break; + + case ESendMessageCurrentContact: + + selector = VPbkFieldTypeSelectorFactory::EUniEditorSelector; + break; + + default: + CleanupStack::PopAndDestroy( fullName ); + CleanupStack::PopAndDestroy( contact8 ); + __ASSERT_DEBUG( EFalse, EasyDialingPanic( EEasyDialingActionNotSupported ) ); + return; + } + + CEDContactorService::TCSParameter param( selector, *contact8, + CEDContactorService::TCSParameter::EEnableDefaults, + *fullName ); + + iContactorService->ExecuteServiceL( param ); + + CleanupStack::PopAndDestroy( fullName ); + CleanupStack::PopAndDestroy( contact8 ); + } + + +// ----------------------------------------------------------------------------- +// CancelActionLaunchAndInputBlock +// Should be called when focus is lost or when call ui is activated. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::CancelActionLaunchAndInputBlock() + { + iAsyncCallBack->Cancel(); + if ( iInputBlocker ) + { + iInputBlocker->Cancel(); + } + } + +// ----------------------------------------------------------------------------- +// HandleListBoxEventL +// EasyDialerListBox calls this function when listbox events are reported +// to observers. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent aEventType ) + { + LOGSTRING1( "EasyDialingPlugin: HandleListBoxEventL( %d ) - Enter", aEventType ); + + switch( aEventType ) + { + case EEventItemSingleClicked: + // 9.2. Selecting contact initiates call + AsyncActionLaunchL( ECallCurrentContact ); + break; + + case KEasyDialingContactLongTapped: + AsyncActionLaunchL( ELaunchCurrentContact ); + break; + + // Pause contact data manager when panning and flicking listbox. + // This ensures smooth and responsive listbox touch handling. + case EEventFlickStarted: + case EEventPanningStarted: + case KEasyDialingScrollingStarted: + iContactDataManager->Pause( ETrue ); + break; + + case EEventFlickStopped: + case EEventPanningStopped: + case KEasyDialingScrollingStopped: + iContactDataManager->Pause( EFalse ); + + // Touching the listbox always removes the visual focus from any list item. + // Move the focus away from the listbox after panning has ended to + // align our internal state with the visual lack of focus. + if ( IsFocused() ) + { + SetFocus( EFalse ); + DrawDeferred(); + } + break; + + // We are not interested about the other listbox events. + default: + break; + } + } + +// ----------------------------------------------------------------------------- +// From MAknInputBlockCancelHandler. +// Called when input block is cancelled. +// ----------------------------------------------------------------------------- +// + void CEasyDialingPlugin::AknInputBlockCancel() + { + LOGSTRING("EasyDialingPlugin: AknInputBlockCancel"); + + // iInputBlocker will be deleted right after this callback by CAknInputBlock + // cause we are using CAknInputBlock::SetCancelDelete method. + iInputBlocker = NULL; + } + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::DoHandleContactsChangedL +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::DoHandleContactsChangedL() + { + if ( iSearchString.Length() > 0 ) + { + if ( iContactLauncherActive ) + { + // Set the flag to make a search when communication launcher exits. + iNewSearchNeeded = ETrue; + } + else + { + // We get here if user e.g. leaves dialer open and goes to Contacts + // application and does some editing. + iContactDataManager->Reload(); // to update thumbnails + AsyncActionLaunchL( ELaunchSearch ); + } + } + } + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::ShowContactListBoxWithEffect +// Use appear/disappear effects when in foreground and when listbox truly +// changes visiblity. +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::ShowContactListBoxWithEffect() + { + CAknAppUi* appUi = static_cast( iCoeEnv->AppUi() ); + + // Show effect only if listbox is about to come visible. + if ( !iContactListBox->IsVisible() && + appUi && appUi->IsForeground() && + GfxTransEffect::IsRegistered( iContactListBox ) ) + { + GfxTransEffect::Begin( iContactListBox, KGfxContactListBoxOpenEffect ); + iContactListBox->MakeVisible( ETrue ); + GfxTransEffect::SetDemarcation( iContactListBox, iContactListBox->Rect() ); + GfxTransEffect::End( iContactListBox ); + } + else + { + iContactListBox->MakeVisible( ETrue ); + } + } + +// ----------------------------------------------------------------------------- +// CEasyDialingPlugin::HideContactListBoxWithEffect +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::HideContactListBoxWithEffect() + { + CAknAppUi* appUi = static_cast( iCoeEnv->AppUi() ); + + // Show effect only if listbox is about to disappear from the screen. + if ( iContactListBox->IsVisible() && + appUi && appUi->IsForeground() && + GfxTransEffect::IsRegistered( iContactListBox ) ) + { + GfxTransEffect::Begin( iContactListBox, KGfxContactListBoxCloseEffect ); + iContactListBox->MakeVisible( EFalse ); + GfxTransEffect::SetDemarcation( iContactListBox, iContactListBox->Rect() ); + GfxTransEffect::End( iContactListBox ); + } + else + { + iContactListBox->MakeVisible( EFalse ); + } + } + +/* + * ============================================================================== + * + * Local functions + * + * ============================================================================== + */ + + + +// ----------------------------------------------------------------------------- +// CompareTPsMatchLocation +// Compares two TPsMatchLocation objects based on where the match +// is located in the search string. This used in ordering matches +// based on their location. +// ----------------------------------------------------------------------------- +// +TInt CompareTPsMatchLocation( const TPsMatchLocation& a1, const TPsMatchLocation& a2) + { + return a1.index - a2.index; + } + + +// ----------------------------------------------------------------------------- +// AppendStringWithMatchDataL +// Appends a string with match data into a TDes buffer. Match data is a string +// where matching and non-matching parts are separated by matching hightlight separator +// characters. +// ----------------------------------------------------------------------------- +// +void AppendStringWithMatchDataL( + TDes& aBuffer, + const TDesC& aText, + CPSRequestHandler* aPSHandler, + const CPsQuery* aPSQuery ) + { + if ( HighlightingSupportedForText( aText ) ) + { + CDesCArrayFlat* matchingParts = new (ELeave) CDesCArrayFlat(KEasyDialingMaximumMatchingParts); + CleanupStack::PushL( matchingParts ); + + RArray matchIndices; + CleanupClosePushL( matchIndices ); + + aPSHandler->LookupL( *aPSQuery , aText , *matchingParts, matchIndices ); + + // Sort matchIndices array. Later handling assumes it to be sorted according to index field. + TLinearOrder order( CompareTPsMatchLocation ); + matchIndices.Sort( order ); + + TInt numberOfIndices = matchIndices.Count(); + TInt textOffset = 0; + + for ( TInt i = 0; i < numberOfIndices ; i++ ) + { + TInt matchingPartStart = matchIndices[i].index; + TInt matchingPartLength = matchIndices[i].length; + + // Append the non-matching part (if exists) + if ( matchingPartStart > textOffset ) + { + TPtrC notMatchingPart = aText.Mid( textOffset, matchingPartStart - textOffset ); + aBuffer.Append( notMatchingPart ); + } + + // Append matching separator charactes. + aBuffer.Append( KHighlightSeparatorChar ); + + TPtrC matchingPart = aText.Mid( matchingPartStart, matchingPartLength ); + aBuffer.Append( matchingPart ); + + // Append matching separator charactes. + aBuffer.Append( KHighlightSeparatorChar ); + + textOffset = matchingPartStart + matchingPartLength; + } + + CleanupStack::PopAndDestroy( &matchIndices ); + CleanupStack::PopAndDestroy( matchingParts ); + + // Now there still may be one not matching part to be appended. + if ( textOffset < aText.Length() ) + { + TPtrC notMatchingPart = aText.Mid( textOffset, aText.Length() - textOffset ); + aBuffer.Append( notMatchingPart ); + } + } + else // HighlightingSupportedForText( aText ) + { + aBuffer.Append( aText ); + } + } + +// ----------------------------------------------------------------------------- +// HighlightingSupportedForText +// Checks if highlighting of matching text part is supported for the combination +// of scripts used in the given text +// ----------------------------------------------------------------------------- +// +TBool HighlightingSupportedForText( const TDesC& aText ) + { + // Highlighting for text is supported unless it contains one ore more + // characters written with unsupported script. + TBool supported = ETrue; + for ( TInt i = 0 ; i < aText.Length() && supported ; ++i ) + { + supported = HighlightingSupportedForScript( aText[i] ); + } + + // ... or it contains both LTR and RTL blocks + if ( supported ) + { + supported = !IsStrictlyBidirectional( aText ); + } + + return supported; + } + +// ----------------------------------------------------------------------------- +// HighlightingSupportedForScript +// Checks if highlighting of matching text part is supported for the script +// of given character +// ----------------------------------------------------------------------------- +// +TBool HighlightingSupportedForScript( TText aChar ) + { + // For now, we don't support highlighting for any Arabic or South East Asian + // script. This is because many of these scripts use rendering rules + // which cause problems for our simple highlighting logic designed for + // Latin script. + + TBool belongsToUnsupportedRange = + ( aChar >= KArabicAndSouthEastAsianRangeStart && aChar <= KArabicAndSouthEastAsianRangeEnd ) || + ( aChar >= KArabicPresentationFormsARangenStart && aChar <= KArabicPresentationFormsARangeEnd ) || + ( aChar >= KArabicPresentationFormsBRangenStart && aChar <= KArabicPresentationFormsBRangeEnd ); + return !belongsToUnsupportedRange; + } + +// ----------------------------------------------------------------------------- +// IsStrictlyBidirectional +// +// Returns true if argument descriptor contains both left-to-right and +// right-to-left blocks +// ----------------------------------------------------------------------------- +// +TBool IsStrictlyBidirectional( const TDesC& aText ) + { + TBool bothDirectionsFound = EFalse; + + // TRunInfoArray contains information of the directionalities of the different sections of the aText + TBidirectionalState::TRunInfo array[ KMaxRunInfoArrayCount ]; + + // Initialize the TBidiLogicalToVisual converter for making the conversion from logical to visual order + TBidiLogicalToVisual converter( aText, array, KMaxRunInfoArrayCount ); + + // Do the reordering. Amount of different directionality sections is returned. + TInt blockCount = converter.Reorder(); + if ( blockCount > KMaxRunInfoArrayCount ) + { + // If there are more directionality blocks than we are prepared to handle, then we don't + // know the directionality of them all. Report this as bidirectional to be on the safe side. + // This should be an extremely rare special case. + bothDirectionsFound = ETrue; + } + else if ( blockCount > 1 ) + { + // If there are more than one directionality blocks, go through all of them and + // check if the resolved direction changes in any of the blocks. + TUint8 firstDirection = array[0].iDirection; + for ( TInt i = 1 ; i < blockCount && !bothDirectionsFound ; i++ ) + { + if ( array[i].iDirection != firstDirection ) + { + bothDirectionsFound = ETrue; + } + } + } + + return bothDirectionsFound; + } + + +// ----------------------------------------------------------------------------- +// AllocWithoutHighlightSeparatorsLC +// +// Allocates a copy of the parameter descriptor with highlight separators +// removed. +// ----------------------------------------------------------------------------- +// +static HBufC* AllocWithoutHighlightSeparatorsLC( TDesC& aDesc ) + { + HBufC* resultDesc = aDesc.AllocLC(); + TPtr ptr = resultDesc->Des(); + AknTextUtils::StripCharacters( ptr, KHighlightSeparatorCharAsLiteral ); + return resultDesc; + } + + +// ----------------------------------------------------------------------------- +// IsItuTCharacter +// +// Test whether parameter character is a number pad character "0123456789#*+" +// ----------------------------------------------------------------------------- +// +static TBool IsItuTCharacter( TChar aChar ) + { + return aChar.IsDigit() || + aChar.GetCategory() == TChar::EArabicNumber || + aChar == TChar('#') || + aChar == TChar('*') || + aChar == TChar('+'); + } + +// ----------------------------------------------------------------------------- +// Find contact link pointing to the same contact as given link +// ----------------------------------------------------------------------------- +// +static TInt Find( const MVPbkContactLink* aLink, const RPointerArray& aArray ) + { + TInt idx = KErrNotFound; + for ( TInt i = 0 ; i < aArray.Count() ; ++i ) + { + if ( aArray[i]->IsSame( *aLink ) ) + { + idx = i; + i = aArray.Count(); + } + } + return idx; + } + +// ----------------------------------------------------------------------------- +// CleanupStack helpers for item owning RPointerArrays (etc) +// ----------------------------------------------------------------------------- +// +template +class CleanupResetAndDestroy + { +public: + inline static void PushL( T& aRef ) + { CleanupStack::PushL( TCleanupItem(&ResetAndDestroy,&aRef) ); } +private: + inline static void ResetAndDestroy( TAny *aPtr ) + { static_cast(aPtr)->ResetAndDestroy(); } + }; + +template +inline void CleanupResetAndDestroyPushL( T& aRef ) + { CleanupResetAndDestroy::PushL(aRef); } + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/src/easydialingutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/src/easydialingutils.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 2010 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: Helper class for easydialing. +* +*/ + +#include +#include + +#include "easydialingutils.h" + +const TText KNameSeparatorChar = ' '; +const TText KListFieldSeparatorChar = '\t'; + +// ----------------------------------------------------------------------------- +// CreateContactStringLC +// +// ----------------------------------------------------------------------------- +// +HBufC* EasyDialingUtils::CreateContactStringLC( + const TDesC& aFirstName, + const TDesC& aLastName, + const TDesC& aCompanyName, + CEasyDialingContactDataManager::TNameOrder aNameOrder ) + { + // first strip control chars from the names + HBufC* firstName = aFirstName.AllocLC(); + TPtr fPtr = firstName->Des(); + AknTextUtils::StripCharacters( fPtr, KAknStripListControlChars ); + + HBufC* lastName = aLastName.AllocLC(); + TPtr lPtr = lastName->Des(); + AknTextUtils::StripCharacters( lPtr, KAknStripListControlChars ); + + HBufC* companyName = aCompanyName.AllocLC(); + TPtr cPtr = companyName->Des(); + AknTextUtils::StripCharacters( cPtr, KAknStripListControlChars ); + + // Calculate string lenght. If first name and last name are missing, company name is duplicated. + // Add company name lenght twice to make sure there is enough space. + TInt stringLength = firstName->Length() + lastName->Length() + 2 * companyName->Length() + 2; + HBufC* string = HBufC::NewLC( stringLength ); + TPtr ptr = string->Des(); + + // If there is no first name, the last name will be used. + if ( firstName->Length() == 0 ) + { + ptr.Copy( *lastName ); + } + + // If there is no last name, the first name will be used. + else if ( lastName->Length() == 0 ) + { + ptr.Copy( *firstName ); + } + + // If there are both first and last name, the name string is composed of them both. + else + { + if( aNameOrder == CEasyDialingContactDataManager::EFirstnameLastname ) + { + ptr.Copy( *firstName ); + ptr.Append( KNameSeparatorChar ); + ptr.Append( *lastName ); + } + else + { + ptr.Copy( *lastName ); + ptr.Append( KNameSeparatorChar ); + ptr.Append( *firstName ); + } + } + + // If firstname and last name are missing, duplicate company name into name field. + if ( ptr.Length() == 0 ) + { + ptr.Append( *companyName ); + } + + // Append company name using tab as a separator. + ptr.Append( KListFieldSeparatorChar ); + ptr.Append( *companyName ); + + CleanupStack::Pop( string ); + CleanupStack::PopAndDestroy( 3, firstName ); + CleanupStack::PushL( string ); + return string; + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/traces/OstTraceDefinitions.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/traces/OstTraceDefinitions.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,23 @@ +/* +* Copyright (c) 2010 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: OstTraceDefinitions.h +* +*/ +#ifndef __OSTTRACEDEFINITIONS_H__ +#define __OSTTRACEDEFINITIONS_H__ +// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler +// REMOVE BEFORE CHECK-IN TO VERSION CONTROL +// #define OST_TRACE_COMPILER_IN_USE +#include +#endif diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/traces/easydialingpluginTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/traces/easydialingpluginTraces.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,22 @@ +/* +* Copyright (c) 2010 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: easydialingpluginTraces.h +* +*/ +// Created by TraceCompiler1.1.0 +// DO NOT EDIT, CHANGES WILL BE LOST +// CONTENT WILL BE GENERATED AUTOMATICALLY HERE + +// End of file + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/data/edta.rls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/data/edta.rls Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,91 @@ +/* +* Copyright (c) 2009-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: +* +*/ + + +// LOCALISATION STRINGS + + +//d:Caption string for app. +rls_string STRING_r_hewb_caption_string "Easy dialing test application" + +//d:Short caption string for app. +rls_string STRING_r_hewb_short_caption_string "HW" + +//d:Subcaption for options menu +rls_string STRING_r_hewb_command_plugin_functions_menu "ED plugin functions" + +//d:Subcaption for options menu +rls_string STRING_r_hewb_command_test_functions_menu "Testing functions" + +//d:First item in "Options" menu pane, "hello" event. +rls_string STRING_r_hewb_command_set_plugin_input "Set ED plugin input" + +//d:Menu item for show matching contacts. +rls_string STRING_r_hewb_command_search_contacts "Search contacts" + +//d:Menu item for launching the first contact of the previous search. +rls_string STRING_r_hewb_command_launch_first_contact "Launch first" + +//d:Menu item for selecting and launching a contact from the previous search. +rls_string STRING_r_hewb_command_select_and_launch_contact "Select contact and open CL" + +//d:Menu item for checking the PCSserver. +rls_string STRING_r_hewb_command_check_pcsserver "Check PCS Server" + +//d:Menu item for showing phonebooks name order +rls_string STRING_r_hewb_command_show_name_ordering "Phonebook name order" + +//d:Menu item for creating test contact database +rls_string STRING_r_hewb_command_create_contact_base "Create test contacts" + +//d:Menu item for two consequtive searches test. +rls_string STRING_r_hewb_command_two_consequtive_searches "Two consequtive searches" + +//d:Menu item for coverage tests. +rls_string STRING_r_hewb_command_coverage_test "Coverage test" + +//d:Fourth item in "Options" menu pane, "exit" event. +rls_string STRING_r_hewb_exit "Exit" + +//d:When user requests EEdtaSetPluginInput event, text below is shown. +rls_string STRING_r_hewb_command_set_plugin_input_text "Set easy dial input" + +// d: Menu item for thumbnail setting +rls_string STRING_r_hewb_command_thumbnail_settings_menu "Thumbnail cenrep setting" + +// d: Menu item for thumbnail setting item +rls_string STRING_r_hewb_command_show_thumbnails "Show thumbnails" + +// d: Menu item for thumbnail setting item +rls_string STRING_r_hewb_command_hide_thumbnails "Hide thumbnails" + +//d:When user requests EEdtaCommand2 event, text below is shown. +rls_string STRING_r_hewb_file_text "" + +rls_string STRING_r_edta_loc_resource_file_1 "\\resource\\apps\\edta" + +// d: Default document name. Not to be localised. +rls_string STRING_r_default_document_name "EDTA" + +// d: Icon file path. Not to be localised. +rls_string STRING_r_icon_file_path "\\resource\\apps\\edta_aif.mif" + +// d: Application file. Not to be localised. +rls_string STRING_r_app_file "edta" + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/data/edta.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/data/edta.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,279 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +// RESOURCE IDENTIFIER +NAME HEWB // 4 letter ID + + +// INCLUDES +#include +#include +#include +#include +#include + +#include "edta.hrh" +#include "edta.rls" +//#include "easydialingconstants.hrh" + +// RESOURCE DEFINITIONS +// ----------------------------------------------------------------------------- +// +// Define the resource file signature +// This resource should be empty. +// +// ----------------------------------------------------------------------------- +// +RESOURCE RSS_SIGNATURE + { + } + +// ----------------------------------------------------------------------------- +// +// Default Document Name +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_default_document_name + { + buf=STRING_r_default_document_name; + } + +// ----------------------------------------------------------------------------- +// +// Define default menu and CBA key. +// +// ----------------------------------------------------------------------------- +// +RESOURCE EIK_APP_INFO + { + menubar = r_edta_menubar; + cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; + } + + +// ----------------------------------------------------------------------------- +// +// r_edta_menubar +// Menubar for edta example +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_BAR r_edta_menubar + { + titles = + { + MENU_TITLE { menu_pane = r_edta_menu; } + }; + } + + +// ----------------------------------------------------------------------------- +// +// r_edta_menu +// Menu for "Options" +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_edta_menu + { + items = + { + MENU_ITEM + { + txt = STRING_r_hewb_command_plugin_functions_menu; + cascade = r_edta_plugin_functions_menu; + }, + MENU_ITEM + { + command = EEdtaCommandShowContacts; + txt = STRING_r_hewb_command_search_contacts; + }, + MENU_ITEM + { + command = EEdtaSelectAndLaunchContact; + txt = STRING_r_hewb_command_select_and_launch_contact; + }, + MENU_ITEM + { + command = EEdtaCommandCheckPCSServer; + txt = STRING_r_hewb_command_check_pcsserver; + }, + MENU_ITEM + { + command = EEdtaCommandShowNameOrdering; + txt = STRING_r_hewb_command_show_name_ordering; + }, + MENU_ITEM + { + txt = STRING_r_hewb_command_test_functions_menu; + cascade = r_edta_test_functions_menu; + }, + MENU_ITEM + { + command = EAknSoftkeyExit; + txt = STRING_r_hewb_exit; + } + }; + } + +// ----------------------------------------------------------------------------- +// +// r_edta_plugin_functions_menu +// Submenu for "Options" +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_edta_plugin_functions_menu + { + items = + { + MENU_ITEM + { + command = EEdtaSetPluginInput; + txt = STRING_r_hewb_command_set_plugin_input; + }, + MENU_ITEM + { + command = EEdtaCommandTwoConsequtiveSearchesTest; + txt = STRING_r_hewb_command_two_consequtive_searches; + }, + MENU_ITEM + { + txt = STRING_r_hewb_command_thumbnail_settings_menu; + cascade = r_edta_plugin_thumbnail_settings_menu; + } + }; + } + +// ----------------------------------------------------------------------------- +// +// r_edta_plugin_thumbnail_settings_menu +// Submenu for "Thumbnail setting" +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_edta_plugin_thumbnail_settings_menu + { + items = + { + MENU_ITEM + { + command = EEdtaCommandShowThumbnails; + txt = STRING_r_hewb_command_show_thumbnails; + }, + MENU_ITEM + { + command = EEdtaCommandHideThumbnails; + txt = STRING_r_hewb_command_hide_thumbnails; + } + }; + } + + +// ----------------------------------------------------------------------------- +// +// r_edta_test_functions_menu +// Submenu for "Options" +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_edta_test_functions_menu + { + items = + { + MENU_ITEM + { + command = EEdtaCommandCreateTestContactBase; + txt = STRING_r_hewb_command_create_contact_base; + }, + MENU_ITEM + { + command = EEdtaCommandMiscCoverageTest; + txt = STRING_r_hewb_command_coverage_test; + } + }; + } + + +// ----------------------------------------------------------------------------- +// +// Resources for messages. +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF32 r_hewb_command_set_plugin_input_text { buf=STRING_r_hewb_command_set_plugin_input_text; } +RESOURCE TBUF32 r_hewb_file_text { buf=STRING_r_hewb_file_text; } +RESOURCE TBUF32 r_hewb_caption_string { buf=STRING_r_hewb_caption_string; } + +// ---------------------------------------------------------------------------- +// +// r_edta_localisable_app_info +// +// ---------------------------------------------------------------------------- +// +RESOURCE LOCALISABLE_APP_INFO r_edta_localisable_app_info + { + short_caption = STRING_r_hewb_caption_string; + caption_and_icon = + CAPTION_AND_ICON_INFO + { + caption = STRING_r_hewb_caption_string; + + number_of_icons = 1; + icon_file = STRING_r_icon_file_path; + }; + } + +// ---------------------------------------------------------------------------- +// +// r_dialog_text_edit_query +// +// ---------------------------------------------------------------------------- +// +RESOURCE DIALOG r_dialog_text_edit_query + { + flags = EAknGeneralQueryFlags; + buttons = R_AVKON_SOFTKEYS_OK_CANCEL; + items = + { + DLG_LINE + { + type = EAknCtQuery; + id = EGeneralQuery; + control = AVKON_DATA_QUERY + { + layout = EDataLayout; + label = "Enter dial search string ?"; + control = EDWIN + { + allowed_case_modes = EAknEditorAllCaseModes; + default_case = EAknEditorLowerCase; + allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode; + default_input_mode = EAknEditorTextInputMode; + avkon_flags = EAknEditorFlagNoT9; + width = 32; + maxlength = 32; + lines = 1; + }; + }; + } + }; + } + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/data/edta_reg.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/data/edta_reg.rss Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +#include "edta.rls" +#include +#include + +UID2 KUidAppRegistrationResourceFile +UID3 0x2000FDDC +//UID3 0xA000017F + +RESOURCE APP_REGISTRATION_INFO + { + app_file=STRING_r_app_file; + localisable_resource_file = STRING_r_edta_loc_resource_file_1; + localisable_resource_id = R_EDTA_LOCALISABLE_APP_INFO; + + embeddability=KAppNotEmbeddable; + newfile=KAppDoesNotSupportNewFile; + } + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/gfx/qgn_menu_edta.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/gfx/qgn_menu_edta.svg Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/group/Icons_scalable_dc.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/group/Icons_scalable_dc.mk Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,53 @@ +# +# Copyright (c) 2002-2006 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 is file for creating .mif file (scalable icon) +# + +ifeq (WINS,$(findstring WINS, $(PLATFORM))) +ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z +else +ZDIR=$(EPOCROOT)epoc32\data\z +endif + +TARGETDIR=$(ZDIR)\resource\apps +ICONTARGETFILENAME=$(TARGETDIR)\edta_aif.mif + +ICONDIR=..\gfx + +do_nothing : + @rem do_nothing + +MAKMAKE : do_nothing + +BLD : do_nothing + +CLEAN : do_nothing + +LIB : do_nothing + +CLEANLIB : do_nothing + +RESOURCE : + mifconv $(ICONTARGETFILENAME) \ + /c32 $(ICONDIR)\qgn_menu_edta.svg + +FREEZE : do_nothing + +SAVESPACE : do_nothing + +RELEASABLES : + @echo $(ICONTARGETFILENAME) + +FINAL : do_nothing + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +PRJ_MMPFILES + +gnumakefile icons_scalable_dc.mk + +edta.mmp diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/group/edta.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/group/edta.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,87 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +#include + +TARGET edta.exe +TARGETTYPE exe +UID 0x100039CE 0x2000FDDC + +SECUREID 0x2000FDDC +EPOCSTACKSIZE 0x5000 + +SOURCEPATH ..\src +SOURCE edta.cpp +SOURCE edta_application.cpp +SOURCE edta_appview.cpp +SOURCE edta_appui.cpp +SOURCE edta_document.cpp +SOURCE edta_querydialog.cpp +SOURCE edta_screentextbuffer.cpp +SOURCE edta_createtestcontactbase.cpp +SOURCE edta_dummylistener.cpp + + +SOURCEPATH ../data + +START RESOURCE edta.rss +HEADER +TARGETPATH resource/apps +LANG SC 01 09 31 32 +END //RESOURCE + +START RESOURCE edta_reg.rss +TARGETPATH /private/10003a3f/apps +END //RESOURCE + + +APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE ../../../../../inc + +USERINCLUDE ../inc + +LIBRARY euser.lib +LIBRARY apparc.lib +LIBRARY cone.lib +LIBRARY gdi.lib +LIBRARY eikcore.lib +LIBRARY avkon.lib +LIBRARY bafl.lib +LIBRARY commonengine.lib +LIBRARY efsrv.lib +LIBRARY estor.lib +LIBRARY eikcoctl.lib +LIBRARY eikdlg.lib +LIBRARY PcsUtils.lib +LIBRARY PsServerClientAPI.lib +LIBRARY VPbkEng.lib ccaclient.lib +LIBRARY ecom.lib +LIBRARY cntmodel.lib +LIBRARY pbkeng.lib +LIBRARY servicehandler.lib +LIBRARY centralrepository.lib + +DEBUGLIBRARY flogger.lib + + +VENDORID VID_DEFAULT + +CAPABILITY LocalServices Location NetworkServices ReadDeviceData ReadUserData UserEnvironment WriteDeviceData WriteUserData + +// End of File + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,38 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_HRH__ +#define __EDTA_HRH__ + +// Edta enumerate command codes +enum TEdtaIds + { + EEdtaSetPluginInput = 0x6001, // start value must not be 0 + EEdtaCommandShowContacts, + EEdtaLaunchFirstContact, + EEdtaSelectAndLaunchContact, + EEdtaCommandCheckPCSServer, + EEdtaCommandShowNameOrdering, + EEdtaCommandCreateTestContactBase, + EEdtaCommandTwoConsequtiveSearchesTest, + EEdtaCommandMiscCoverageTest, + EEdtaCommandShowThumbnails, + EEdtaCommandHideThumbnails, + EEdtaCommandLast + }; + +#endif // __EDTA_HRH__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta.pan --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta.pan Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_PAN__ +#define __EDTA_PAN__ + +#include "edta_debugprint.h" + +/** Edta application panic codes */ +enum TEdtaPanics + { + EEdtaUi = 1, + EEdtaSkinChangePanic = 2, + EEdtaCalculatePanic = 3, + EEdtaFieldNotInitialized = 4 + // add further panics here + }; + +_LIT(KEdtaApplicationName,"Edta"); + +inline void Panic(TEdtaPanics aReason) + { + DebugPrintF(_L("Panic reason: %d"), (TInt) aReason); + User::Panic(KEdtaApplicationName, aReason); + } + +inline void Panic(TEdtaPanics aReason, TDesC aText) + { + DebugPrintF(_L("Panic reason: %d, '%S'"), (TInt) aReason, &aText ); + User::Panic(KEdtaApplicationName, aReason); + } + +#endif // __EDTA_PAN__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_application.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_application.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,56 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_APPLICATION_H__ +#define __EDTA_APPLICATION_H__ + +// INCLUDES +#include + +// CLASS DECLARATION + +/** +* CEdtaApplication application class. +* Provides factory to create concrete document object. +* An instance of CEdtaApplication is the application part of the +* AVKON application framework for the Edta example application. +*/ +class CEdtaApplication : public CAknApplication + { + public: // Functions from base classes + + /** + * From CApaApplication, AppDllUid. + * @return Application's UID (KUidEdtaApp). + */ + TUid AppDllUid() const; + + protected: // Functions from base classes + + /** + * From CApaApplication, CreateDocumentL. + * Creates document object. The returned + * pointer in not owned by the CEdtaApplication object. + * @return A pointer to the created document object. + */ + CApaDocument* CreateDocumentL(); + }; + +#endif // __EDTA_APPLICATION_H__ + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_appui.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_appui.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,70 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_APPUI_H__ +#define __EDTA_APPUI_H__ + +// INCLUDES +#include +#include "edta_screentextbuffer.h" + +// FORWARD DECLARATIONS +class CEdtaAppView; +class CAiwServiceHandler; +class CRepository; + +// CLASS DECLARATION +/** +* CEdtaAppUi application UI class. +* Interacts with the user through the UI and request message processing +* from the handler class +*/ +class CEdtaAppUi : public CAknAppUi + { + public: // Constructors and destructor + + void ConstructL(); + CEdtaAppUi(); + virtual ~CEdtaAppUi(); + + TBool CheckPluginLoadedAndShowNote(); + + private: // Functions from base classes + + void HandleCommandL( TInt aCommand ); + void HandleStatusPaneSizeChange(); + void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); + + protected: + + private: // Data + + CEdtaAppView* iAppView; + + // Contains query text + TBuf iQueryText; + + // OWN: aiw service handler + CAiwServiceHandler* iServiceHandler; + + // own + CRepository* iRepository; + }; + +#endif // __EDTA_APPUI_H__ + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_appview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_appview.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_APPVIEW_H__ +#define __EDTA_APPVIEW_H__ + +// INCLUDES +#include "edta_screentextbuffer.h" +#include +#include +#include +#include + + +// FORWARD DECLARATIONS +class CPsClientData; +class CPbkContactEngine; +class CPsQuery; +class CVPbkContactManager; +class CVPbkContactStoreUriArray; +class MVPbkContactLink; +class CPSRequestHandler; +class TCCAFactory; +class MCCAParameter; +class CDialingExtensionInterface; +class CDummyListener; + + + +// CLASS DECLARATION +class CEdtaAppView : public CCoeControl, public MPsResultsObserver, public MCCAObserver, public MDialingExtensionObserver + { + public: // New methods + + static CEdtaAppView* NewL( const TRect& aRect ); + static CEdtaAppView* NewLC( const TRect& aRect ); + virtual ~CEdtaAppView(); + + TInt CountComponentControls() const; + CCoeControl* ComponentControl(TInt aIndex) const; + + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + CEdtaScreenTextBuffer* GetScreenBuffer(); + + CDialingExtensionInterface* GetEasyDialer(); + + void ShowMatchingContactsL(const TDesC& aSearchString); + + TBool IsPCSServerLoaded(); + void CheckPCSServerL(); + + void ShowNameOrderL(); + + void LoadPluginL(); + + void LaunchNthContactL(TInt aIx); + + void SelectAndLaunchContactL(); + + void DoMiscellaneousTestsL(); + + public: // Functions from base classes + + virtual void SizeChanged(); + + private: // Constructors + + void ConstructL(const TRect& aRect); + + CEdtaAppView(); + + void Draw( const TRect& aRect ) const; + + void InitContactDataStoreUrisL(); + void InitPredictiveContactSearchL(); + + private: + + //MPsResultsObserver functions + virtual void HandlePsResultsUpdate(RPointerArray& aResults, RPointerArray& aSeqs); + virtual void HandlePsError(TInt aErrorCode); + virtual void CachingStatus(TCachingStatus& aStatus, TInt& aError); + + /** + * Leaving function for Predictive search callback. Call TRAPPED in HandlePsResultsUpdate. + */ + void HandlePredictiveSearchResultL(RPointerArray& aResults, RPointerArray& aSeqs); + + //MCCAObserver functions + void CCASimpleNotifyL( TNotifyType aType, TInt aReason ); + + void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ); + + private: + + CEdtaScreenTextBuffer* iScreenBuffer; + + CPSRequestHandler* iPredictiveContactSearchHandler; + + CVPbkContactManager* iContactManager; + + CVPbkContactStoreUriArray* iContactStoreUriArray; + + RPointerArray iContactDataStores; + + RPointerArray iContactNames; + + RPointerArray iMatchingContactLinks; + + CPsQuery* iPredictiveSearchQuery; + + MCCAConnection* iContactLauncher; + + /* + * Pointer to easy dialing plugin. This may be null, if no plugin present. + * Null-check is a must before use. + */ + CDialingExtensionInterface* iEasyDialer; + + CDummyListener* iDummyListener; + + }; + +#endif // __EDTA_APPVIEW_H__ + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_debugprint.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_debugprint.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,83 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + + +#ifndef __EDTADEBUGPRINT_H__ +#define __EDTADEBUGPRINT_H__ + +// If you want file logging, uncomment the next define. + +#ifdef _DEBUG +// #define USE_FILE_LOGGING +#endif // _DEBUG + +#ifdef USE_FILE_LOGGING +#include +_LIT( KLogDir, "ed" ); +_LIT( KLogFile, "edta.log" ); +#endif + + +// From this point on, internal implementation + +NONSHARABLE_CLASS(TOverflowTruncate) : public TDes16Overflow + { + public: + void Overflow(TDes16& /*aDes*/) {} + }; + +inline void DoDebugPrintF(TRefByValue aFmt, VA_LIST& aList) + { + TBuf<200> buf; + TOverflowTruncate overFlow; + buf.AppendFormatList( aFmt, aList, &overFlow ); + _LIT(KLogPrintFormat,"%S: %S"); // Log printing format + const TDesC& thname = RThread().Name(); // FullName + RDebug::Print( KLogPrintFormat, &thname, &buf ); +#ifdef USE_FILE_LOGGING + RFileLogger::Write(KLogDir, KLogFile, EFileLoggingModeAppend, buf); +#endif + } + +inline void DebugPrintF(const TRefByValue aFmt,...) + { + VA_LIST list; + VA_START(list,aFmt); + DoDebugPrintF(aFmt, list); + } + + +#ifdef _DEBUG + +// These macros are to be used in debug prints +#define DEBUGPRINT(x) DebugPrintF(x) +#define DEBUGPRINT_2(x,y) DebugPrintF(x,y) +#define DEBUGPRINT_3(x,y,z) DebugPrintF(x,y,z) +#define DEBUGPRINT_4(x,y,z,a) DebugPrintF(x,y,z,a) + +#else // _DEBUG + +#define DEBUGPRINT(x) +#define DEBUGPRINT_2(x,y) +#define DEBUGPRINT_3(x,y,z) +#define DEBUGPRINT_4(x,y,z,a) + +#endif // _DEBUG + +#endif // __EDTADEBUGPRINT_H__ + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_document.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_document.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,99 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_DOCUMENT_H__ +#define __EDTA_DOCUMENT_H__ + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CEdtaAppUi; +class CEikApplication; + + +// CLASS DECLARATION + +/** +* CEdtaDocument application class. +* An instance of class CEdtaDocument is the Document part of the +* AVKON application framework for the Edta example application. +*/ +class CEdtaDocument : public CAknDocument + { + public: // Constructors and destructor + + /** + * NewL. + * Two-phased constructor. + * Construct a CEdtaDocument for the AVKON application aApp + * using two phase construction, and return a pointer + * to the created object. + * @param aApp Application creating this document. + * @return A pointer to the created instance of CEdtaDocument. + */ + static CEdtaDocument* NewL( CEikApplication& aApp ); + + /** + * NewLC. + * Two-phased constructor. + * Construct a CEdtaDocument for the AVKON application aApp + * using two phase construction, and return a pointer + * to the created object. + * @param aApp Application creating this document. + * @return A pointer to the created instance of CEdtaDocument. + */ + static CEdtaDocument* NewLC( CEikApplication& aApp ); + + /** + * ~CEdtaDocument + * Virtual Destructor. + */ + virtual ~CEdtaDocument(); + + public: // Functions from base classes + + /** + * CreateAppUiL + * From CEikDocument, CreateAppUiL. + * Create a CEdtaAppUi object and return a pointer to it. + * The object returned is owned by the Uikon framework. + * @return Pointer to created instance of AppUi. + */ + CEikAppUi* CreateAppUiL(); + + private: // Constructors + + /** + * ConstructL + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * CEdtaDocument. + * C++ default constructor. + * @param aApp Application creating this document. + */ + CEdtaDocument( CEikApplication& aApp ); + + }; + +#endif // __EDTA_DOCUMENT_H__ + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_dummylistener.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_dummylistener.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,34 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef EDTA_DUMMYLISTENER_H_ +#define EDTA_DUMMYLISTENER_H_ + +#include +#include + +class CDummyListener : public CBase, public MDialingExtensionObserver + { +public: + + CDummyListener(); + ~CDummyListener(); + + void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ); + }; + +#endif /* EDTA_DUMMYLISTENER_H_ */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_querydialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_querydialog.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef _EDTA_QUERYDIALOG_H +#define _EDTA_QUERYDIALOG_H + + +// INCLUDES +#include + +// CLASS DECLARATION + +/** +* CEdtaQueryDialog class. +* This class is used to query the user for text information +*/ +class CEdtaQueryDialog : public CAknTextQueryDialog + { + public: // Constructors and destructor + + CEdtaQueryDialog( TDes& aBuf, const HBufC *aDefInput ); + virtual ~CEdtaQueryDialog() {}; + + + private: // from CEikDialog + + void PreLayoutDynInitL(); + + private: // Data + + HBufC& iDefInput; + }; + +#endif // _EDTA_QUERYDIALOG_H + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/inc/edta_screentextbuffer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/inc/edta_screentextbuffer.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,96 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#ifndef __EDTA_SCREENTEXTBUFFER_H__ +#define __EDTA_SCREENTEXTBUFFER_H__ + +// INCLUDES +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CEikScrollBarFrame; +class CFont; +class TBidiText; +class CAknsBasicBackgroundControlContext; + +// CONSTANTS +const TInt KEdtaMaxLineWidth = 200; + + +// CLASS DECLARATION +class CEdtaScreenTextBuffer : public CCoeControl, public MEikScrollBarObserver + { + +public: + static CEdtaScreenTextBuffer* NewL( const TRect& aRect ); + static CEdtaScreenTextBuffer* NewLC( const TRect& aRect ); + +public: + CEdtaScreenTextBuffer(); + ~CEdtaScreenTextBuffer(); + + void ConstructL( const TRect& aRect ); + void HandleResourceChange(TInt aType); + void WriteLineL( TRefByValue aText,... ); // text wrapping, was: const TDesC& aText + void DeleteLastLine(TInt aCount = 1); + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aModifiers ); + +protected: + + virtual void FocusChanged(TDrawNow aDrawNow); + +private: + + void SizeChanged(); + + void Draw( const TRect& aRect ) const; + void ActivateL(); + void HandleScrollEventL ( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType); + TTypeUid::Ptr MopSupplyObject(TTypeUid aId); + +private: + void CalculateL(const TRect& aRect); + void UpdateScrollIndicatorL(); + + + +private: // Data + + CArrayPtr* iText; + CArrayFixFlat* iScreenStarts; + TInt iCurrentScreen; + TBool iDoNotShowLastLineAgain; + CGraphicsContext::TTextAlign iTextAlign; + CEikScrollBarFrame* iSBFrame; + const CFont* iFont; // not owned + + TInt iLineWidth; + TInt iBaseLineDelta; + TInt iTopBaseLineX; + TInt iTopBaseLineY; + TInt iLinesPerScreen; + + }; + + +#endif // __EDTA_SCREENTEXTBUFFER_H__ + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/rom/edta.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/rom/edta.iby Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,28 @@ +/* +* Copyright (c) 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: +* +*/ +#ifndef __EDTA_IBY__ +#define __EDTA_IBY__ + +#include + +file=ABI_DIR\BUILD_DIR\edta.exe PROGRAMS_DIR\edta.exe +S60_APP_AIF_ICONS(edta) +S60_UPGRADABLE_APP_REG_RSC(edta) +data=\epoc32\data\z\private\2000FDDC\backup_registration.xml \private\2000FDDC\backup_registration.xml + +#endif // __EDTA_IBY__ + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/rom/edta_resources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/rom/edta_resources.iby Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,25 @@ +/* +* Copyright (c) 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: +* +*/ +#ifndef __EDTA_RESOURCES_IBY__ +#define __EDTA_RESOURCES_IBY__ + +#include + +S60_APP_RESOURCE(edta) + +#endif // __EDTA_RESOURCES_IBY__ + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/sis/backup_registration.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/sis/backup_registration.xml Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,5 @@ + + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/sis/edta_armv5.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/sis/edta_armv5.pkg Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,52 @@ +; +; Copyright (c) 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: +; +; Edta_armv5.pkg +; +;Language - standard language definitions +&EN,FI,ZH,JA + +; standard SIS file header +#{"Easy dialing test application", "Easy dialing test application", "Easy dialing test application", "Easy dialing test application"},(0x2000FDDC),1,0,0 + +;Localised Vendor name +%{"Nokia", "Nokia", "Nokia", "Nokia"} + +;Unique Vendor name +:"Nokia" + +;Supports Series 60 v 3.0 +[0x101F7961], 0, 0, 0, {"S60ProductID", "S60ProductID", "S60ProductID", "S60ProductID"} + +;Supports Series 60 v 5.0 +[0x1028315F], 0, 0, 0, {"Series605thProductID","Series605thProductID","Series605thProductID","Series605thProductID"} + +;ErrRD Support: +"\epoc32\data\z\private\10003a3f\apps\edta_reg.rsc" - "C:\resource\ErrRd" + +;Files to install +"\epoc32\release\armv5\urel\Edta.exe" -"!:\sys\bin\edta.exe" + +"\epoc32\data\z\resource\apps\edta.rsc" -"!:\resource\apps\edta.rsc" +"\epoc32\data\z\resource\apps\edta.r09" -"!:\resource\apps\edta.r09" +"\epoc32\data\z\resource\apps\edta.r31" -"!:\resource\apps\edta.r31" +"\epoc32\data\z\resource\apps\edta.r32" -"!:\resource\apps\edta.r32" + +"\epoc32\data\z\private\10003a3f\apps\edta_reg.rsc" -"!:\private\10003a3f\import\apps\edta_reg.rsc" +"\epoc32\data\z\resource\apps\edta_aif.mif" -"!:\resource\apps\edta_aif.mif" + +;required for application to be covered by backup/restore facility +"backup_registration.xml" -"!:\private\2000FDDC\backup_registration.xml" + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/sis/edta_armv5_udeb.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/sis/edta_armv5_udeb.pkg Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,52 @@ +; +; Copyright (c) 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: +; +; Edta_armv5.pkg +; +;Language - standard language definitions +&EN,FI,ZH,JA + +; standard SIS file header +#{"Easy dialing test application", "Easy dialing test application", "Easy dialing test application", "Easy dialing test application"},(0x2000FDDC),1,0,0 + +;Localised Vendor name +%{"Nokia", "Nokia", "Nokia", "Nokia"} + +;Unique Vendor name +:"Nokia" + +;Supports Series 60 v 3.0 +[0x101F7961], 0, 0, 0, {"S60ProductID", "S60ProductID", "S60ProductID", "S60ProductID"} + +;Supports Series 60 v 5.0 +[0x1028315F], 0, 0, 0, {"Series605thProductID","Series605thProductID","Series605thProductID","Series605thProductID"} + +;ErrRD Support: +"\epoc32\data\z\private\10003a3f\apps\edta_reg.rsc" - "C:\resource\ErrRd" + +;Files to install +"\epoc32\release\armv5\udeb\Edta.exe" -"!:\sys\bin\edta.exe" + +"\epoc32\data\z\resource\apps\edta.rsc" -"!:\resource\apps\edta.rsc" +"\epoc32\data\z\resource\apps\edta.r09" -"!:\resource\apps\edta.r09" +"\epoc32\data\z\resource\apps\edta.r31" -"!:\resource\apps\edta.r31" +"\epoc32\data\z\resource\apps\edta.r32" -"!:\resource\apps\edta.r32" + +"\epoc32\data\z\private\10003a3f\apps\edta_reg.rsc" -"!:\private\10003a3f\import\apps\edta_reg.rsc" +"\epoc32\data\z\resource\apps\edta_aif.mif" -"!:\resource\apps\edta_aif.mif" + +;required for application to be covered by backup/restore facility +"backup_registration.xml" -"!:\private\2000FDDC\backup_registration.xml" + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,38 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES +#include +#include "edta_application.h" + +/** + * factory function to create the Hello World Basic application class + */ +LOCAL_C CApaApplication* NewApplication() + { + return new CEdtaApplication; + } + +/** + * A normal Symbian OS executable provides an E32Main() function which is + * called by the operating system to start the program. + */ +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication( NewApplication ); + } + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_application.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_application.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES +#include "edta_document.h" +#include "edta_application.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// UID for the application. +// this should correspond to the uid defined in the mmp file +const TUid KUidEdtaApp = { 0x2000FDDC }; + +// ----------------------------------------------------------------------------- +// CEdtaApplication::CreateDocumentL() +// Creates CApaDocument object +// ----------------------------------------------------------------------------- +// +CApaDocument* CEdtaApplication::CreateDocumentL() + { + // Create an Edta document, and return a pointer to it + return (static_cast + ( CEdtaDocument::NewL( *this ) ) ); + } + +// ----------------------------------------------------------------------------- +// CEdtaApplication::AppDllUid() +// Returns application UID +// ----------------------------------------------------------------------------- +// +TUid CEdtaApplication::AppDllUid() const + { + // Return the UID for the Edta application + return KUidEdtaApp; + } + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_appui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_appui.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,310 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "edta.pan" +#include "edta_appui.h" +#include "edta_appview.h" +#include "edta.hrh" +#include "edta_querydialog.h" +#include + + + + +// CONSTANTS +const TInt KSearchStringMaxLen = 64; + + +// ============================ MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +// CEdtaAppUi::ConstructL() +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CEdtaAppUi::ConstructL() + { + // Initialise app UI with standard value. + BaseConstructL(CAknAppUi::EAknEnableSkin); + + // Create view object + iAppView = CEdtaAppView::NewL( ClientRect() ); + + // TODO: remove? + iServiceHandler = CAiwServiceHandler::NewL(); + + iRepository = CRepository::NewL( KCRUidEasyDialSettings ); + + AddToStackL(iAppView); + } + +// ----------------------------------------------------------------------------- +// CEdtaAppUi::CEdtaAppUi() +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CEdtaAppUi::CEdtaAppUi() + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CEdtaAppUi::~CEdtaAppUi() +// Destructor. +// ----------------------------------------------------------------------------- +// +CEdtaAppUi::~CEdtaAppUi() + { + if ( iAppView ) + { + RemoveFromStack(iAppView); + delete iAppView; + iAppView = NULL; + } + delete iServiceHandler; + + if ( iRepository ) + { + // default setting + iRepository->Set(KEasyDialingContactThumbnails, 1); + } + delete iRepository; + } + + +TInt CreateTestContactDatabaseL(); // Should be moved into correct place + +// ----------------------------------------------------------------------------- +// CEdtaAppUi::HandleCommandL() +// Takes care of command handling. +// ----------------------------------------------------------------------------- +// +void CEdtaAppUi::HandleCommandL( TInt aCommand ) + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL enter: 0x%X"), aCommand ); + + switch( aCommand ) + { + case EEikCmdExit: + case EAknSoftkeyExit: + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EXIT")); + Exit(); + break; + + case EEdtaSetPluginInput: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaSetPluginInput")); + + if( CheckPluginLoadedAndShowNote() ) + { + CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( iQueryText ); + if( dlg->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY)) + { + if (iAppView->GetEasyDialer()) + { + iAppView->GetEasyDialer()->SetInputL( iQueryText ); + } + } + } + } + break; + + case EEdtaCommandShowContacts: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandShowContacts")); + + if( iAppView->IsPCSServerLoaded() ) + { + CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( iQueryText ); + if( dlg->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY)) + { + iAppView->ShowMatchingContactsL(iQueryText); + } + } + } + break; + + case EEdtaLaunchFirstContact: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaLaunchFirstContact")); + if( iAppView->IsPCSServerLoaded() ) + iAppView->LaunchNthContactL( 0 ); + } + break; + + case EEdtaSelectAndLaunchContact: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaSelectAndLaunchContact")); + iAppView->SelectAndLaunchContactL(); + } + break; + + case EEdtaCommandCheckPCSServer: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandCheckPCSServer")); + if( iAppView->IsPCSServerLoaded() ) + iAppView->CheckPCSServerL(); + } + break; + + case EEdtaCommandShowNameOrdering: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandShowNameOrdering")); + iAppView->ShowNameOrderL(); + } + break; + + case EEdtaCommandCreateTestContactBase: + { + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandCreateTestContactBase")); + TInt newContactsCount = CreateTestContactDatabaseL(); + iAppView->GetScreenBuffer()->WriteLineL(_L("Test contacts updated")); + iAppView->GetScreenBuffer()->WriteLineL(_L("%d new contacts"), newContactsCount ); + } + break; + + case EEdtaCommandTwoConsequtiveSearchesTest: + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: Two search test")); + + if( CheckPluginLoadedAndShowNote() ) + { + CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( iQueryText ); + if( dlg->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY)) + { + HBufC* anotherQueryText = HBufC::NewLC( KSearchStringMaxLen ); + TPtr ptr = anotherQueryText->Des(); + + CAknTextQueryDialog* dlg2 = CAknTextQueryDialog::NewL( ptr ); + + if ( dlg2->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY) ) + { + if (iAppView->GetEasyDialer()) + { + iAppView->GetEasyDialer()->SetInputL( iQueryText ); + iAppView->GetEasyDialer()->SetInputL( ptr ); + } + } + CleanupStack::PopAndDestroy( anotherQueryText ); + } + } + break; + + case EEdtaCommandMiscCoverageTest: + + if (iAppView->GetEasyDialer()) + { + iAppView->DoMiscellaneousTestsL( ); + } + break; + + case EEdtaCommandShowThumbnails: + iRepository->Set(KEasyDialingContactThumbnails, 1); + break; + + case EEdtaCommandHideThumbnails: + iRepository->Set(KEasyDialingContactThumbnails, 0); + break; + + default: + iServiceHandler->ExecuteMenuCmdL( + aCommand, + iServiceHandler->InParamListL(), // No input parameters + iServiceHandler->OutParamListL(), // No output parameters + 0, // No options used. + NULL); // No need for callback + + DebugPrintF(_L("CEdtaAppUi::HandleCommandL: AIW (or unknown) menu command: 0x%X"), aCommand ); + break; + } + + DebugPrintF(_L("CEdtaAppUi::HandleCommandL exit")); + } + + +void CEdtaAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) + { + // First, offer menu pane to AIW framework. It might be the case, that the + // user is opening an AIW submenu. In this case, the AIW handles the menu. + if ( iServiceHandler->HandleSubmenuL( *aMenuPane ) ) + { + return; + } + + // Add your normal (non-AIW) menu initialisation code here... + + // Let AIW provider add its menu items to the menu. + iServiceHandler->InitializeMenuPaneL( + *aMenuPane, + aResourceId, + EEdtaCommandLast, + iServiceHandler->InParamListL()); + } + +// ----------------------------------------------------------------------------- +// Called by the framework when the application status pane +// size is changed. Passes the new client rectangle to the +// AppView +// ----------------------------------------------------------------------------- +// +void CEdtaAppUi::HandleStatusPaneSizeChange() + { + iAppView->SetRect( ClientRect() ); + } + + + +// ----------------------------------------------------------------------------- +// Display note id easydialing plugin is not loaded +// ----------------------------------------------------------------------------- +// +TBool CEdtaAppUi::CheckPluginLoadedAndShowNote() + { + TBool plugin_loaded( ETrue ); + + if( !(iAppView->GetEasyDialer()) ) + { + plugin_loaded = EFalse; + TBuf tempStr; + tempStr.Copy(_L("Easydialing plugin not loaded!")); + + TRAP_IGNORE( + { + CAknErrorNote* myNote = new (ELeave) CAknErrorNote(); + myNote->SetTimeout( CAknNoteDialog::ELongTimeout ); + myNote->ExecuteLD( tempStr ); + } + ); + } + + DebugPrintF(_L("CEdtaAppUi::CheckPluginLoadedAndShowNote: Plugin loaded: %d"), plugin_loaded ); + + return plugin_loaded; + } + +// End of File diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_appview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_appview.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,872 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES +#include +#include +#include "edta_appview.h" +#include "edta_debugprint.h" +#include "edta_dummylistener.h" +#include + +// AVKON components +#include +#include + +// Predictive search header files. +#include +#include +#include +#include +#include +#include + +// Virtual phonebook header files. +#include +#include +#include +// contains virtual phonebook data fields +#include + +// Phonebook engine API +#include + +// CCA Launcher header files. +#include +#include +#include + + +const TInt KEdtaMaximumMatchingCount = 100; +const TInt KEdtaContactCompanyIndex = 2; +const TInt KEdtaContactEmailHomeIndex = 3; +const TInt KEdtaContactEmailWorkIndex = 4; +const TInt KEdtaContactEmailGenIndex = 5; +const TInt KEdtaListBoxGranularity = 5; + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// NewL +// First phase constructor without cleanup stack. +// ----------------------------------------------------------------------------- +// +CEdtaAppView* CEdtaAppView::NewL( const TRect& aRect ) + { + CEdtaAppView* self = CEdtaAppView::NewLC( aRect ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// NewLC +// First phase constructor with cleanup stack. +// ----------------------------------------------------------------------------- +// +CEdtaAppView* CEdtaAppView::NewLC( const TRect& aRect ) + { + CEdtaAppView* self = new ( ELeave ) CEdtaAppView; + CleanupStack::PushL( self ); + self->ConstructL( aRect ); + return self; + } + +// ----------------------------------------------------------------------------- +// ConstructL +// Second phase constructor. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::ConstructL( const TRect& aRect ) + { + DebugPrintF(_L("CEdtaAppView::ConstructL enter, rect: %d, %d - %d, %d"), aRect.iTl.iX, aRect.iTl.iY, aRect.iBr.iX, aRect.iBr.iY ); + + // Create a window for this application view + CreateWindowL(); + + const TDesC& thname = RThread().Name(); + iScreenBuffer = CEdtaScreenTextBuffer::NewL( aRect ); + iScreenBuffer->SetFocus( ETrue ); + iScreenBuffer->WriteLineL(thname); + + LoadPluginL(); + + DebugPrintF(_L("CEdtaAppView::ConstructL: iScreenBuffer: 0x%X, iEasyDialer: 0x%X"), iScreenBuffer, iEasyDialer ); + + if (iEasyDialer) + { + DebugPrintF(_L("CEdtaAppView::ConstructL: Easydialer plugin found, adding observer..") ); + + iEasyDialer->AddObserverL( this ); + iEasyDialer->SetFocus( EFalse ); + + DebugPrintF(_L("CEdtaAppView::ConstructL: Add observer done")); + } + + // Init PCS Server.. + TRAPD( error, InitPredictiveContactSearchL()); + if( error ) + { + DebugPrintF(_L("CEdtaAppView::ConstructL: Failed to load predictive search engine: %d"), error ); + iScreenBuffer->WriteLineL(_L("* PCS Server load fail: %d"), error ); + } + + // Init Communication Launcher.. + TRAP( error, iContactLauncher = TCCAFactory::NewConnectionL()); + if( error ) + { + DebugPrintF(_L("CEdtaAppView::ConstructL: Failed connect communication launcher: %d"), error ); + iScreenBuffer->WriteLineL(_L("* CCA open fail: %d"), error ); + } + + iDummyListener = new ( ELeave ) CDummyListener(); + + // Set the windows size + SetRect( aRect ); + ActivateL(); + + DebugPrintF(_L("CEdtaAppView::ConstructL exit")); + } + +// ----------------------------------------------------------------------------- +// CEdtaAppView +// The C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CEdtaAppView::CEdtaAppView() + { + // No implementation here + } + +// ----------------------------------------------------------------------------- +// ~CEdtaAppView +// The destructor. +// ----------------------------------------------------------------------------- +// +CEdtaAppView::~CEdtaAppView() + { + DebugPrintF(_L("CEdtaAppView::~CEdtaAppView enter, iEasyDialer: 0x%x"), iEasyDialer ); + + delete iDummyListener; + + if (iEasyDialer) + { + iEasyDialer->RemoveObserver( this ); + } + + if (iPredictiveContactSearchHandler) + { + iPredictiveContactSearchHandler->RemoveObserver(this); + } + + delete iEasyDialer; + iContactNames.ResetAndDestroy(); + iMatchingContactLinks.ResetAndDestroy(); + + if (iContactLauncher) + { + iContactLauncher->Close(); + } + + delete iPredictiveSearchQuery; + delete iContactManager; + delete iPredictiveContactSearchHandler; + delete iContactStoreUriArray; + iContactDataStores.ResetAndDestroy(); + + delete iScreenBuffer; + DebugPrintF(_L("CEdtaAppView::~CEdtaAppView exit")); + } + + +// ----------------------------------------------------------------------------- +// Draw +// Draw itself. Clear the canvas. +// ----------------------------------------------------------------------------- +// + +void CEdtaAppView::Draw( const TRect& aRect ) const + { + DebugPrintF(_L("CEdtaAppView::Draw, rect: %d, %d - %d, %d"), aRect.iTl.iX, aRect.iTl.iY, aRect.iBr.iX, aRect.iBr.iY ); + + CWindowGc& gc = SystemGc(); + gc.SetClippingRect( aRect ); + + gc.SetBrushColor( KRgbWhite ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.Clear( aRect ); + } + + +// ----------------------------------------------------------------------------- +// SizeChanged +// Called by framework when the view size is changed. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::SizeChanged() + { + DebugPrintF(_L("CEdtaAppView::SizeChanged: iScreenBuffer: 0x%X, iEasyDialer: 0x%X"), iScreenBuffer, iEasyDialer ); + + // Controls must set rects, otherwise not drawn + // If easy dialer plugin is loaded, the controls are reorganized to screen. + if( iEasyDialer ) + { + // Screen buffer occupies upper half of the view. + TRect screen_buffer_rect = iAvkonAppUi->ClientRect(); + screen_buffer_rect.iBr.iY -= (screen_buffer_rect.Height() / 2 ); + TRect easy_dialer_rect(0, screen_buffer_rect.Height(), screen_buffer_rect.Width(), iAvkonAppUi->ClientRect().Height()); + iEasyDialer->SetRect( easy_dialer_rect ); + iScreenBuffer->SetRect(screen_buffer_rect); + } + else if ( iScreenBuffer ) + { + iScreenBuffer->SetRect(iAvkonAppUi->ClientRect()); + } + } + + +// ----------------------------------------------------------------------------- +// CountComponentControls +// ----------------------------------------------------------------------------- +// +TInt CEdtaAppView::CountComponentControls() const + { + return iEasyDialer ? 2 : 1; + } + + +// ----------------------------------------------------------------------------- +// ComponentControl +// ----------------------------------------------------------------------------- +// +CCoeControl* CEdtaAppView::ComponentControl(TInt aIndex) const + { + switch (aIndex) + { + case 0: return iScreenBuffer; + case 1: return iEasyDialer; // Can be null + default: return NULL; + } + } + +// ----------------------------------------------------------------------------- +// OfferKeyEventL +// ----------------------------------------------------------------------------- +// +TKeyResponse CEdtaAppView::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) + { + TKeyResponse handled = EKeyWasNotConsumed; + + if ( iEasyDialer ) + { + handled = iEasyDialer->OfferKeyEventL(aKeyEvent, aType); + } + + if ( handled == EKeyWasNotConsumed ) + { + handled = iScreenBuffer->OfferKeyEventL(aKeyEvent, aType); + } + else + { + handled = EKeyWasConsumed; + } + + return handled; + } + +// ----------------------------------------------------------------------------- +// GetScreenBuffer +// Returns the pointer to the screen buffer of the view. +// ----------------------------------------------------------------------------- +// +CEdtaScreenTextBuffer* CEdtaAppView::GetScreenBuffer() + { + return iScreenBuffer; + } + + +// ----------------------------------------------------------------------------- +// GetEasyDialer +// Returns the pointer to the easy dialer. +// ----------------------------------------------------------------------------- +// +CDialingExtensionInterface* CEdtaAppView::GetEasyDialer() + { + return iEasyDialer; + } + + + +// ----------------------------------------------------------------------------- +// InitContactDataStoreUrisL +// Initialises user contact data store URIs into field iContactDataStores. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::InitContactDataStoreUrisL() + { + HBufC* default_cdb = VPbkContactStoreUris::DefaultCntDbUri().AllocLC(); + User::LeaveIfError(iContactDataStores.Append( default_cdb )); + CleanupStack::Pop( default_cdb ); + + iContactStoreUriArray = CVPbkContactStoreUriArray::NewL(); + iContactStoreUriArray->AppendL(TVPbkContactStoreUriPtr( VPbkContactStoreUris::DefaultCntDbUri() )); + } + + +// ----------------------------------------------------------------------------- +// InitPredictiveContactSearchL +// Initialises predictive contact search. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::InitPredictiveContactSearchL() + { + DebugPrintF(_L("CEdtaAppView::InitPredictiveContactSearchL enter")); + + iPredictiveContactSearchHandler = CPSRequestHandler::NewL(); + iPredictiveContactSearchHandler->AddObserverL(this); + + DebugPrintF(_L("CEdtaAppView::InitPredictiveContactSearchL => CPSRequestHandler::NewL done")); + + InitContactDataStoreUrisL(); + + DebugPrintF(_L("CEdtaAppView::InitPredictiveContactSearchL => InitContactDataStoreUrisL done")); + + iContactManager = CVPbkContactManager::NewL(*iContactStoreUriArray); + + // Put the searched contact fields into array. + RArray contact_fields; + CleanupClosePushL(contact_fields); + + // All supported fields are searched. The supported fiels are specified in cenrep private\10202BE9\2000B5C6. + contact_fields.Append(R_VPBK_FIELD_TYPE_FIRSTNAME); + contact_fields.Append(R_VPBK_FIELD_TYPE_LASTNAME); + contact_fields.Append(R_VPBK_FIELD_TYPE_COMPANYNAME); + contact_fields.Append(R_VPBK_FIELD_TYPE_EMAILHOME); + contact_fields.Append(R_VPBK_FIELD_TYPE_EMAILWORK); + contact_fields.Append(R_VPBK_FIELD_TYPE_EMAILGEN); + + // Create and fill ps settings object. + CPsSettings* ps_settings = CPsSettings::NewL(); + CleanupStack::PushL(ps_settings); + + ps_settings->SetSearchUrisL(iContactDataStores); + ps_settings->SetMaxResults(KEdtaMaximumMatchingCount); + ps_settings->SetSortType(EAlphabetical); + ps_settings->SetDisplayFieldsL(contact_fields); + + // Set the ps settings. + iPredictiveContactSearchHandler->SetSearchSettingsL(*ps_settings); + + DebugPrintF(_L("CEdtaAppView::InitPredictiveContactSearchL => CPSRequestHandler::SetSearchSettingsL done")); + + CleanupStack::PopAndDestroy(ps_settings); + CleanupStack::PopAndDestroy(&contact_fields); + + iPredictiveSearchQuery = CPsQuery::NewL(); + + DebugPrintF(_L("CEdtaAppView::InitPredictiveContactSearchL => CPsQuery::NewL done")); + + DebugPrintF(_L("CEdtaAppView::InitPredictiveContactSearchL exit")); + } + + +// ----------------------------------------------------------------------------- +// void ShowMatchingContacts(const TDesC& aSearchString) +// Starts an asynchronous search for contacts matching to aSearchString. +// The actual displaying of contact is done in callback HandlePsResultsUpdate +// - Hardcode to use ITU keyboard parameters +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::ShowMatchingContactsL(const TDesC& aSearchString) + { + DebugPrintF(_L("CEdtaAppView::ShowMatchingContactsL: enter '%S'"), &aSearchString ); + + iPredictiveSearchQuery->Reset(); + + for(TInt i = 0; i < aSearchString.Length() ;i++) + { + // Add a query item + CPsQueryItem* item = CPsQueryItem::NewL(); + CleanupStack::PushL(item); + + item->SetCharacter( aSearchString[i] ); + item->SetMode( EItut ); + iPredictiveSearchQuery->AppendL(*item); + + // Previous CPsQuery::AppendL takes the ownership of item. + // Do not delete item. + CleanupStack::Pop(item); + } + + // Issue the search. SearchL is asynchronous function => returns immediately. + iPredictiveContactSearchHandler->SearchL(*iPredictiveSearchQuery); + + DebugPrintF(_L("CEdtaAppView::ShowMatchingContactsL: exit")); + } + + +// ----------------------------------------------------------------------------- +// ShowNameOrderL +// Check the name ordering from phonebook engine by using phonebook engine API. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::ShowNameOrderL() + { + DebugPrintF(_L("CEdtaAppView::ShowNameOrderL: enter")); + + CPbkContactEngine* pbkEngine = CPbkContactEngine::NewL(); + CPbkContactEngine::TPbkNameOrder nameOrder = pbkEngine->NameDisplayOrderL(); + + iScreenBuffer->WriteLineL(_L("Phonebook name order is")); + switch ( nameOrder ) + { + case CPbkContactEngine::EPbkNameOrderLastNameFirstName: + DebugPrintF(_L("CEdtaAppView::ShowNameOrderL: The name order is: %d == LastName -> FirstName"), nameOrder ); + iScreenBuffer->WriteLineL(_L("* Last name, first name")); + break; + case CPbkContactEngine::EPbkNameOrderFirstNameLastName: + DebugPrintF(_L("CEdtaAppView::ShowNameOrderL: The name order is: %d == FirstName -> LastName"), nameOrder ); + iScreenBuffer->WriteLineL(_L("* First name, last name")); + break; + case CPbkContactEngine::EPbkNameOrderNotDefined: + DebugPrintF(_L("CEdtaAppView::ShowNameOrderL: The name order is: %d == Not defined"), nameOrder ); + iScreenBuffer->WriteLineL(_L("* Not defined")); + break; + default: + DebugPrintF(_L("CEdtaAppView::ShowNameOrderL: The name order is: %d == Unknown"), nameOrder ); + iScreenBuffer->WriteLineL(_L("* Unknown value: %d"), nameOrder ); + } + + delete pbkEngine; + + DebugPrintF(_L("CEdtaAppView::ShowNameOrderL: exit")); + } + +// ----------------------------------------------------------------------------- +// IsPCSServerLoaded +// Checks if the PCSServer is loaded properly at constructor +// ----------------------------------------------------------------------------- +// +TBool CEdtaAppView::IsPCSServerLoaded() + { + if( !iPredictiveSearchQuery ) + { + DebugPrintF(_L("CEdtaAppView::CheckPCSServerL: PCS server not loaded properly!")); + + TBuf tempStr; + tempStr.Copy(_L("PCS server not loaded!"));; + + TRAP_IGNORE( + { + CAknErrorNote* myNote = new (ELeave) CAknErrorNote(); + myNote->SetTimeout( CAknNoteDialog::ELongTimeout ); + TRAP_IGNORE( myNote->ExecuteLD( tempStr ) ); + } + ); + return EFalse; + } + return ETrue; + } + +// ----------------------------------------------------------------------------- +// CheckPCSServerL +// Checks the configuration of the PCSServer and prints the sortorder of fields. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::CheckPCSServerL() + { + RArray field_order; + CleanupClosePushL(field_order); + + HBufC* default_cdb = VPbkContactStoreUris::DefaultCntDbUri().AllocLC(); + + _LIT(KEdtaField, "*"); + TBuf line(KEdtaField); + + iPredictiveContactSearchHandler->GetDataOrderL(*default_cdb, field_order); + + DebugPrintF(_L("CEdtaAppView::ShowContactFieldOrderL: Number of fields: %d"), field_order.Count() ); + + TInt requiredFieldsCount = 3; + + for ( TInt i = 0; i < field_order.Count(); i++) + { + line.Append((TChar) ' '); + line.AppendNum(field_order[i]); + + if(( field_order[i] == R_VPBK_FIELD_TYPE_FIRSTNAME) || + ( field_order[i] == R_VPBK_FIELD_TYPE_LASTNAME) || + ( field_order[i] == R_VPBK_FIELD_TYPE_COMPANYNAME )) + { + requiredFieldsCount--; + } + } + + CleanupStack::PopAndDestroy( default_cdb ); + CleanupStack::PopAndDestroy( &field_order ); + + iScreenBuffer->WriteLineL(_L("PCS server fields:")); + iScreenBuffer->WriteLineL(line); + + DebugPrintF(_L("CEdtaAppView::ShowContactFieldOrderL: '%S'"), &line ); + + if( requiredFieldsCount == 0 ) + { + DebugPrintF(_L("CEdtaAppView::ShowContactFieldOrderL: All required fields found from PCSServer, configuration is OK")); + iScreenBuffer->WriteLineL(_L("* All required fields found")); + } + else + { + DebugPrintF(_L("CEdtaAppView::ShowContactFieldOrderL: Not all required fields found from PCSServer, configuration is wrong")); + iScreenBuffer->WriteLineL(_L("* PCS server misconfigured!")); + iScreenBuffer->WriteLineL(_L("* Easydialing may not")); + iScreenBuffer->WriteLineL(_L("* match your queries!")); + } + } + + +// ----------------------------------------------------------------------------- +// void LaunchNthContactL(TInt aIx) +// Launches communication launcher for the first contact in the previous +// search. If not contacts found or no search yet done, function does nothing. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::LaunchNthContactL(TInt aIx) + { + if (aIx < 0 || iMatchingContactLinks.Count() <= aIx) + { + DebugPrintF(_L("CEdtaAppView::LaunchNthContactL: No contacts retrieved yet") ); + return; + } + + DebugPrintF(_L("CEdtaAppView::LaunchNthContactL: enter, index: %d, setting parameters.."), aIx ); + + MCCAParameter* launch_parameters = TCCAFactory::NewParameterL(); + CleanupClosePushL( *launch_parameters ); + + launch_parameters->SetConnectionFlag(MCCAParameter::ENormal); + launch_parameters->SetContactDataFlag(MCCAParameter::EContactLink); + + // Pack the contact link and expand it to 16-bit descriptor. + HBufC8* contact8 = iMatchingContactLinks[aIx]->PackLC(); + HBufC16* contact16 = HBufC16::NewLC( contact8->Length() ); + contact16->Des().Copy( contact8->Des() ); + + launch_parameters->SetContactDataL( contact16->Des() ); + + CleanupStack::PopAndDestroy( contact16 ); + CleanupStack::PopAndDestroy( contact8 ); + + DebugPrintF(_L("CEdtaAppView::LaunchNthContactL: launching CCA..")); + + iContactLauncher->LaunchAppL( *launch_parameters, this ); + + // Ownership of parameter transferred to CCA launcher => pop but do not destroy. + CleanupStack::Pop(launch_parameters); // Close parameter + + DebugPrintF(_L("CEdtaAppView::LaunchNthContactL: exit")); + } + + + +// ----------------------------------------------------------------------------- +// void DoMiscellaneousTestsL() +// Does various tests on easy dialing that are difficult to do through normal +// testing. Mainly for coverage testing purposes. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::DoMiscellaneousTestsL() + { + // Coverage tests for observer handling. + iEasyDialer->AddObserverL( iDummyListener ); + iEasyDialer->AddObserverL( NULL ); + iEasyDialer->RemoveObserver( iDummyListener ); + } + +// ----------------------------------------------------------------------------- +// void HandlePsResultsUpdate(RPointerArray& aResult, RPointerArray& aSeqs) +// Searched matching contacts using PCS and shows them on the screen. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::HandlePsResultsUpdate(RPointerArray& aResults, RPointerArray& aSeqs) + { + TRAP_IGNORE( HandlePredictiveSearchResultL(aResults, aSeqs) ); + } + + +// ----------------------------------------------------------------------------- +// void HandlePsError(TInt aErrorCode) +// Called when search error happens. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::HandlePsError(TInt aErrorCode) + { + DebugPrintF(_L("CEdtaAppView::HandlePsError: %d"), aErrorCode ); + + _LIT(KEdtaCachingError, "*** Caching error %d ***"); + TRAP_IGNORE( iScreenBuffer->WriteLineL(KEdtaCachingError, aErrorCode) ); + + } + + +// ----------------------------------------------------------------------------- +// void CachingStatus(TCachingStatus& aStatus, TInt& aError) +// Called to update caching status. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::CachingStatus(TCachingStatus& aStatus, TInt& aError ) + { + DebugPrintF(_L("CEdtaAppView::CachingStatus: %d"), aError); + + switch (aStatus) + { + case ECachingNotStarted: + { + _LIT(KEdtaCachingStatusStarted, "*** Caching started ***"); + TRAP_IGNORE( iScreenBuffer->WriteLineL(KEdtaCachingStatusStarted) ); + } + break; + case ECachingInProgress: + { + _LIT(KEdtaCachingStatusInProgress, "*** Caching in progress ***"); + TRAP_IGNORE( iScreenBuffer->WriteLineL(KEdtaCachingStatusInProgress) ); + } + break; + case ECachingComplete: + { + _LIT(KEdtaCachingStatusComplete, "*** Caching complete ***"); + TRAP_IGNORE( iScreenBuffer->WriteLineL(KEdtaCachingStatusComplete) ); + } + break; + case ECachingCompleteWithErrors: + { + _LIT(KEdtaCachingStatusCompleteWithErrors, "*** Caching complete with error %d ***"); + TRAP_IGNORE( iScreenBuffer->WriteLineL(KEdtaCachingStatusCompleteWithErrors, aError) ); + } + break; + default: + { + _LIT(KEdtaCachingStatusUnknown, "*** Unknown caching status %d ***"); + TRAP_IGNORE( iScreenBuffer->WriteLineL(KEdtaCachingStatusUnknown, (TInt) aStatus) ); + } + break; + } + } + + + +// ----------------------------------------------------------------------------- +// void HandlePredictiveSearchResultL(RPointerArray& aResult, RPointerArray& aSeqs) +// Handles predictive search results. A leaving version to be trapped in HandlePsResultsUpdate. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::HandlePredictiveSearchResultL(RPointerArray& aResults, RPointerArray& /* aSeqs */) + { + TInt results = aResults.Count(); + DebugPrintF(_L("CEdtaAppView::HandlePredictiveSearchResultL enter, matching contacts found: %d"), results ); + + iContactNames.ResetAndDestroy(); + iMatchingContactLinks.ResetAndDestroy(); + + // map results to old contact match data + for (TInt i = 0; i < aResults.Count(); i ++) + { + TBuf temp; + _LIT(KEdtaContactFormatString, "%S %S"); + + // Store each contact name into iContactNames. + temp.Format(KEdtaContactFormatString, aResults[i]->Data(0), aResults[i]->Data(1)); + + DebugPrintF(_L("CEdtaAppView::HandlePredictiveSearchResultL: Contact #%d: '%S'"), i+1, &temp ); + + HBufC* contact_name = HBufC::NewL(temp.Length()); + *contact_name = temp; + iContactNames.Append( contact_name ); + + + // Each contact link stored to iMatchingContactLinks, to be possible used later by + // CCA launcher functions. + MVPbkContactLink* link = iPredictiveContactSearchHandler->ConvertToVpbkLinkLC(*(aResults[i]), *iContactManager); + iMatchingContactLinks.Append( link ); + CleanupStack::Pop( link ); + + // Write the contact name to screen buffer + iScreenBuffer->WriteLineL( *contact_name ); + + TUint8 match_mask = aResults[i]->FieldMatch(); + + // Show other search fields only if search matches them. + if (match_mask & (1 << KEdtaContactCompanyIndex)) + { + _LIT(KEdtaContactCompany, "* Company: %S"); + iScreenBuffer->WriteLineL(KEdtaContactCompany, aResults[i]->Data(KEdtaContactCompanyIndex)); + } + if (match_mask & (1 << KEdtaContactEmailHomeIndex)) + { + _LIT(KEdtaContactEmailHome, "* Home e-mail: %S"); + iScreenBuffer->WriteLineL(KEdtaContactEmailHome, aResults[i]->Data(KEdtaContactEmailHomeIndex)); + } + if (match_mask & (1 << KEdtaContactEmailWorkIndex)) + { + _LIT(KEdtaContactEmailWork, "* Work e-mail: %S"); + iScreenBuffer->WriteLineL(KEdtaContactEmailWork, aResults[i]->Data(KEdtaContactEmailWorkIndex)); + } + if (match_mask & (1 << KEdtaContactEmailGenIndex)) + { + _LIT(KEdtaContactEmailGen, "* E-mail: %S"); + iScreenBuffer->WriteLineL(KEdtaContactEmailGen, aResults[i]->Data(KEdtaContactEmailGenIndex)); + } + } + _LIT(KEdtaNumberOfMatchingContacts, "*** %d contacts found! ***"); + iScreenBuffer->WriteLineL(KEdtaNumberOfMatchingContacts, aResults.Count()); + + DebugPrintF(_L("CEdtaAppView::HandlePredictiveSearchResultL exit")); + } + + +// ----------------------------------------------------------------------------- +// HandleDialingExtensionEvent +// +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ) + { + DebugPrintF(_L("CEdtaAppView::HandleDialingExtensionEvent")); + + if ( aEvent == MDialingExtensionObserver::EFocusChanged ) + { + if ( iEasyDialer->IsFocused() ) + { + iScreenBuffer->SetFocus( EFalse, EDrawNow ); + } + else + { + iScreenBuffer->SetFocus( ETrue, EDrawNow ); + } + } + } + + +// ----------------------------------------------------------------------------- +// SelectAndLaunchContactL +// Shows a list box, the launches CCA launcher for user selected contact. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::SelectAndLaunchContactL() + { + DebugPrintF(_L("CEdtaAppView::SelectAndLaunchContactL enter")); + + // Create list of matched contacts and show them on the screen + + CAknSingleHeadingPopupMenuStyleListBox* listBox = new(ELeave) CAknSingleHeadingPopupMenuStyleListBox; + CleanupStack::PushL( listBox ); + + CAknPopupList* popupList = CAknPopupList::NewL( listBox, + R_AVKON_SOFTKEYS_SELECT_CANCEL, + AknPopupLayouts::EMenuGraphicHeadingWindow ); + CleanupStack::PushL( popupList ); + + listBox->ConstructL( popupList, EAknListBoxSelectionList ); + listBox->CreateScrollBarFrameL( ETrue ); + listBox->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, + CEikScrollBarFrame::EAuto ); + + _LIT( KMatchedContacts, "Matched contacts:" ); + popupList->SetTitleL( KMatchedContacts ); + + // Add items into list + + CDesCArrayFlat* itemArray = new(ELeave)CDesCArrayFlat(KEdtaListBoxGranularity); + CleanupStack::PushL(itemArray); + + _LIT( KListItemSeparator1, ". \t" ); + + for (TInt listIndex = 0; listIndex < iContactNames.Count(); listIndex++ ) + { + TBuf itemString; + itemString.Zero(); + itemString.AppendNum( listIndex+1 ); + itemString.Append( KListItemSeparator1 ); + itemString.Append( *iContactNames[listIndex] ); + + itemArray->AppendL(itemString); + } + + CTextListBoxModel* model = listBox->Model(); + model->SetItemTextArray( itemArray ); + model->SetOwnershipType( ELbmOwnsItemArray ); + CleanupStack::Pop( itemArray ); // Pop itemArray - the listBox model owns this now + + if( popupList->ExecuteLD() ) // Show the list finally + { + if( listBox->CurrentItemIndex() >= 0 ) + { + // Launch communication launcher for selected contact + LaunchNthContactL( listBox->CurrentItemIndex() ); + } + } + + CleanupStack::Pop( popupList ); + CleanupStack::PopAndDestroy( listBox ); + + DebugPrintF(_L("CEdtaAppView::SelectAndLaunchContactL exit")); + } + + +// ----------------------------------------------------------------------------- +// CCASimpleNotifyL +// Implements MCCAObserver notification interface. +// Nothing better to do but show the parameters. +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::CCASimpleNotifyL( TNotifyType aType, TInt aReason ) + { + DebugPrintF(_L("CEdtaAppView::CCASimpleNotifyL: aType: %d, aReason: %d"), (TInt)aType, aReason ); + + _LIT(KEdtaCCAExitReason, "Launcher exit reason %d, %d"); + iScreenBuffer->WriteLineL(KEdtaCCAExitReason, aType, aReason); + } + + +// ----------------------------------------------------------------------------- +// LoadPluginL +// Load the easydialing ECOM plugin +// ----------------------------------------------------------------------------- +// +void CEdtaAppView::LoadPluginL() + { + TRAPD( error, + { + iEasyDialer = CDialingExtensionInterface::NewL(); + iEasyDialer->InitializeL( *this ); + } ); + + if( error ) + { + DebugPrintF(_L("CEdtaAppView::LoadPluginL FAIL, error: %d"), error ); + iScreenBuffer->WriteLineL(_L("* EasyDialing Plugin load fail: %d"), error ); + iEasyDialer = NULL; + } + else + { + iScreenBuffer->WriteLineL(_L("EasyDialing Plugin loaded")); + DebugPrintF(_L("CEdtaAppView::LoadPluginL OK" )); + } + } + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_createtestcontactbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_createtestcontactbase.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,266 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + + + +#include +#include +#include +#include +#include +#include "edta_debugprint.h" + + +/* + * Number of contacts in contactdata array. + */ +const TInt nbr_of_contacts = 15; + +/* + * Contact data contains contact data as text strings. + * Each contact takes six line: + * - first name + * - last name + * - cell number + * - home number + * - company name + * - e-mail address + */ +const char* contactdata[] = +{ + "Dummy", + "Contact", + "+1056439939", + "035558756", + "Ericsson", + "dummy.contact@ericsson.sw", + + "Jaakko", + "Helanti", + "+358405287761", + "034447611", + "Nokia", + "jaakko.helanti@nokia.com", + + "Stan", + "Laurel", + "+0104438839992", + "+0104438839000", + "MGM", + "stan.laurel@heaven.com", + + "Oliver", + "Hardy", + "+01078398927", + "+10364537882", + "MGM", + "oliver.hardy@heaven.com", + + "Harold", + "Lloyd", + "+102843947", + "+10290503958", + "Universal", + "harold.lloyd@universal.com", + + "Tauno", + "Palo", + "+358405557631", + "014445466", + "Suomi Filmi", + "tauno.palo@gmail.com", + + "Tea", + "Ista", + "+358475554590", + "018723195", + "Helsingin Kaupungin Teatteri", + "tea.ista@cultureclub.com", + + "Ansa", + "Ikonen", + "+358471134099", + "012388192", + "Suomi Filmi", + "ansa.ikonen@gmail.com", + + "Bertil", + "Nystrom", + "+35866377334", + "074500998", + "Rovaniemen Viuluveistämö", + "bertil.nystrom@rvv.com", + + "", + "Onlylastname", + "+3585556743", + "+35835552727", + "", + "", + + "Onlyfirstname", + "", + "+358405559874", + "035553747", + "", + "", + + "", + "Two-Part Lastname", + "+358405557432", + "", + "", + "", + + "", + "", + "+35866377334", + "074500998", + "Just Companyname", + "john.doe@justcompanyname.com", + + "One", + "Number", + "", + "075553266", + "Idaho", + "", + + "No", + "Number", + "", + "", + "Ericsson", + "no.number@ericsson.com", +}; + + +HBufC* CreateFieldStringL(TInt aIx) + { + const char* str = contactdata[aIx]; + TInt len = 0; + + while (str[len] != '\0') + { + len++; + } + + if ( len == 0 ) + { + return NULL; + } + + HBufC *field = HBufC::NewL( len ); + TPtr des = field->Des(); + des.SetLength( len ); + + for (TInt i = 0; i < len; i++) + { + des[i] = (TChar) str[i]; + } + + return field; + } + + +void AddFieldStringL( CPbkContactItem* aContact, TInt aIx, TInt aFieldId ) + { + HBufC* fieldName = CreateFieldStringL( aIx ); + + if ( fieldName ) + { + CleanupStack::PushL( fieldName ); + aContact->FindField( aFieldId )->TextStorage()->SetTextL( *fieldName ); + CleanupStack::PopAndDestroy(fieldName); + } + } + + +void AddContactL(CPbkContactEngine* engine, TInt aIx) + { + CPbkContactItem* contact = engine->CreateEmptyContactL(); + CleanupStack::PushL( contact ); + + AddFieldStringL( contact, aIx * 6 + 0, EPbkFieldIdFirstName ); + AddFieldStringL( contact, aIx * 6 + 1, EPbkFieldIdLastName ); + AddFieldStringL( contact, aIx * 6 + 2, EPbkFieldIdPhoneNumberMobile ); + AddFieldStringL( contact, aIx * 6 + 3, EPbkFieldIdPhoneNumberGeneral ); + AddFieldStringL( contact, aIx * 6 + 4, EPbkFieldIdCompanyName ); + AddFieldStringL( contact, aIx * 6 + 5, EPbkFieldIdEmailAddress ); + + engine->AddNewContactL( *contact ); + + CleanupStack::PopAndDestroy( contact ); + } + + + +// --------------------------------------------------------- +// CreateTestContactDatabaseL +// +// Creates a test contact database if it hasn't been created yet. +// The existence of test base is done through testing if there +// is a contact matching with word "Dummy". Test data base has +// a contact for Mr Dummy Contact. +// This is the primary function of this file. +// --------------------------------------------------------- +// +TInt CreateTestContactDatabaseL() + { + DebugPrintF(_L("CreateTestContactDatabaseL: Contacts creation started..")); + + CPbkContactEngine* engine = CPbkContactEngine::NewL(); + CleanupStack::PushL( engine ); + + _LIT(KDummyContact, "Dummy"); + + CContactIdArray* findings = engine->FindLC( KDummyContact ); + + // If dummy contact is found, the test database has already been created. + if (findings->Count() > 0) + { + CleanupStack::PopAndDestroy( findings ); + CleanupStack::PopAndDestroy( engine ); + DebugPrintF(_L("CreateTestContactDatabaseL: Database already set up")); + return 0; + } + + CleanupStack::PopAndDestroy( findings ); + + for (TInt i = 0; i < nbr_of_contacts; i++ ) + { + AddContactL( engine, i ); + } + + CleanupStack::PopAndDestroy(engine); + + DebugPrintF(_L("CreateTestContactDatabaseL: Contacts creation completed, number of contacts: %d"), nbr_of_contacts ); + + return nbr_of_contacts; + } + + + + + + + + + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_document.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_document.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,83 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES +#include "edta_appui.h" +#include "edta_document.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CEdtaDocument::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CEdtaDocument* CEdtaDocument::NewL( CEikApplication& aApp ) + { + CEdtaDocument* self = NewLC( aApp ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CEdtaDocument::NewLC() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CEdtaDocument* CEdtaDocument::NewLC( CEikApplication& aApp ) + { + CEdtaDocument* self = new ( ELeave ) CEdtaDocument( aApp ); + + CleanupStack::PushL( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CEdtaDocument::CEdtaDocument() +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CEdtaDocument::CEdtaDocument( CEikApplication& aApp ) + : CAknDocument( aApp ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CEdtaDocument::~CEdtaDocument() +// Destructor. +// --------------------------------------------------------------------------- +// +CEdtaDocument::~CEdtaDocument() + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CEdtaDocument::CreateAppUiL() +// Constructs CreateAppUi. +// --------------------------------------------------------------------------- +// +CEikAppUi* CEdtaDocument::CreateAppUiL() + { + // Create the application user interface, and return a pointer to it. + // The framework takes ownership of this object. + return ( static_cast ( new ( ELeave ) CEdtaAppUi ) ); + } + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_dummylistener.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_dummylistener.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +#include "edta_dummylistener.h" + + +CDummyListener::CDummyListener() + { + } + +CDummyListener::~CDummyListener() + { + } + +void CDummyListener::HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent /* aEvent */ ) + { + + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_querydialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_querydialog.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES + +#include +#include "edta_querydialog.h" + +// ================= MEMBER FUNCTIONS ======================= + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CEdtaQueryDialog::CEdtaQueryDialog( TDes& aBuf, const HBufC *aDefInput ) + : CAknTextQueryDialog( aBuf ) + , iDefInput(*(const_cast (aDefInput))) + { + } + + + +// --------------------------------------------------------- +// CEdtaQueryDialog::PreLayoutDynInitL +// --------------------------------------------------------- +// +void CEdtaQueryDialog::PreLayoutDynInitL() + { + // first we have to execute PreLayoutDynInitL() of the base-class + CAknTextQueryDialog::PreLayoutDynInitL(); + + // acquire pointer to editor-control and set the default input. + CAknQueryControl* control = QueryControl(); + control->SetTextL(iDefInput); + + // enable OK-button, so that default text can be accepted as it is + // without modifying the text + MakeLeftSoftkeyVisible( ETrue ); + } + +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/edta/src/edta_screentextbuffer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/edta/src/edta_screentextbuffer.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,500 @@ +/* +* Copyright (c) 2010 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: Easy dialing test application. +* +*/ + +// INCLUDE FILES +#include "edta_screentextbuffer.h" +#include "edta_debugprint.h" +#include "edta.pan" + +#include +#include +#include +#include +#include +#include +#include + + +const TInt KLineWidthCent = 90; // Percent of total screen width +const TInt KHeightMarginCent = 7; // Percent of total height +const TInt KBottomMarginCent = 3; // Percent of total height +const TInt KLineHeightCent = 135; // How many percent is the line height of font height +const TInt KCent = 100; +const TInt KInitialScreenBufferSize = 20; // This many lines is initially allocated to the screen buffer. +const TInt KInitialScreenStartAmount = 5; // This many screen starts are initially allocated to screen buffer. + + +CEdtaScreenTextBuffer* CEdtaScreenTextBuffer::NewL( const TRect& aRect ) + { + CEdtaScreenTextBuffer* self = CEdtaScreenTextBuffer::NewLC( aRect ); + CleanupStack::Pop( self ); + return self; + } + +CEdtaScreenTextBuffer* CEdtaScreenTextBuffer::NewLC( const TRect& aRect ) + { + CEdtaScreenTextBuffer* self = new ( ELeave ) CEdtaScreenTextBuffer; + CleanupStack::PushL( self ); + self->ConstructL( aRect ); + return self; + } + +// constructors +CEdtaScreenTextBuffer::CEdtaScreenTextBuffer() + { + } + +void CEdtaScreenTextBuffer::ConstructL( const TRect& aRect ) + { + CreateWindowL(); + CalculateL(aRect); + ActivateL(); + } + +// destructor +CEdtaScreenTextBuffer::~CEdtaScreenTextBuffer() + { + delete iSBFrame; + delete iScreenStarts; + + if ( iText ) + { + iText->ResetAndDestroy(); + delete iText; + } + } + +void CEdtaScreenTextBuffer::SizeChanged() + { + // TRAP_IGNORE( CalculateL( Rect() ) ); + // DrawDeferred(); + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::Draw() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::Draw( const TRect& aRect ) const + { + // DebugPrintF(_L("CEdtaScreenTextBuffer::Draw, rect: %d, %d - %d, %d"), aRect.iTl.iX, aRect.iTl.iY, aRect.iBr.iX, aRect.iBr.iY ); + + __ASSERT_DEBUG( iText, Panic(EEdtaFieldNotInitialized,_L("CEdtaScreenTextBuffer::Draw: iText == NULL") )); + __ASSERT_DEBUG( iScreenStarts, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::Draw: iScreenStarts == NULL") )); + __ASSERT_DEBUG( iScreenStarts->Count() > 0, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::Draw: iScreenStarts has zero elements") )); + + CWindowGc& gc = SystemGc(); + + gc.SetBrushColor( KRgbWhite ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.Clear( aRect ); + + if ( IsFocused() ) + { + TRect frame( aRect ); + frame.Shrink(3,3); + frame.iBr.iX -= 10; + gc.SetPenColor(KRgbBlack); + gc.SetPenSize( TSize(2,2) ); + TSize cornerRounding(8,8); + gc.DrawRoundRect( frame, cornerRounding ); + } + + gc.UseFont( iFont ); + + // index of the first line on the screen in the text array + TInt firstLine = 0 ; + if((iScreenStarts ) && (iScreenStarts->Count() > iCurrentScreen)) + { + firstLine = ( (*iScreenStarts)[ iCurrentScreen ] ); + } + else + { + firstLine = (*iScreenStarts)[ iScreenStarts->Count() - 1 ]; + } + + // index of the last line on the screen in the text array + TInt lastLine( firstLine + iLinesPerScreen - 1 ); + + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + + TPoint position( iTopBaseLineX, iTopBaseLineY ); + TPoint topLeft; + TSize rectSize( iLineWidth, iBaseLineDelta +iFont->DescentInPixels() ); + + for ( TInt index = firstLine; index < iText->Count() && index <= lastLine; index++, position.iY += iBaseLineDelta ) + { + HBufC* text = (*iText)[ index ]; + + if ( text ) + { + topLeft = TPoint( position.iX, position.iY-iBaseLineDelta ); + gc.SetPenColor(KRgbBlack); + gc.DrawText( *text, TRect( topLeft, rectSize ), iBaseLineDelta, iTextAlign ); + } + } + + gc.DiscardFont(); + + // DebugPrintF(_L("CEdtaScreenTextBuffer::Draw exit")); + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::ActivateL() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::ActivateL() + { + CCoeControl::ActivateL(); + UpdateScrollIndicatorL(); + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::SetTextL() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::WriteLineL(TRefByValue aText,... ) + { + TBuf bufLine; + VA_LIST list; + VA_START(list,aText); + bufLine.FormatList(aText,list); + + if(!bufLine.Length()) + { + iText->AppendL( NULL ); + } + else + { + HBufC* line = HBufC::NewLC(bufLine.Length()); + *line = bufLine; + iText->AppendL( line ); + CleanupStack::Pop(line); + } + + // Updating scrollbars and screen starts etc are moved to UpdateScrollIndicatorL() + + // if text, last line is shown again in next screen + iDoNotShowLastLineAgain = EFalse; + + DrawDeferred(); //New + UpdateScrollIndicatorL(); + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::DeleteLastLine() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::DeleteLastLine(TInt aCount) + { + __ASSERT_DEBUG( iText, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::DeleteLastLine: iText == NULL") )); + __ASSERT_DEBUG( iText->Count() > 0, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::DeleteLastLine: iText has zero elements") )); + + while (aCount > 0) + { + // Avoiding memory leaks + TInt lastIndex = iText->Count() - 1; + + // The first item in iText cannot be deleted, since UpdateScrollIndicatorL + // relies on there being at least one item. + if (lastIndex > 0) + { + HBufC* text = (*iText)[ lastIndex ]; + delete text; + iText->Delete(lastIndex); + } + --aCount; + } + } + + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::OfferKeyEventL() +// ----------------------------------------------------------------------------- +TKeyResponse CEdtaScreenTextBuffer::OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + __ASSERT_DEBUG(iScreenStarts, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::OfferKeyEventL: iScreenStarts == NULL") )); + __ASSERT_DEBUG(iScreenStarts->Count() > 0, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::OfferKeyEventL: iScreenStarts has zero elements") )); + + if ( aType == EEventKey && iScreenStarts->Count() > 1 ) + { + switch ( aKeyEvent.iCode ) + { + case EKeyUpArrow: + if ( iCurrentScreen > 0 ) + { + iCurrentScreen--; + DrawNow(); + UpdateScrollIndicatorL(); + } + break; + + case EKeyDownArrow: + if ( iCurrentScreen < iScreenStarts->Count() - 1 ) + { + iCurrentScreen++; + DrawNow(); + UpdateScrollIndicatorL(); + } + break; + + default: + return EKeyWasNotConsumed; + } + } + + return EKeyWasConsumed; + } + + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::FocusChanged() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::FocusChanged(TDrawNow aDrawNow) + { + if ( aDrawNow == EDrawNow ) + { + DrawNow(); + } + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::HandleScrollEventL() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::HandleScrollEventL ( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType) + { + //Only on page up/down,scroll up/down and drag events + switch (aEventType) + { + case EEikScrollPageDown: + case EEikScrollPageUp: + case EEikScrollThumbDragVert: + case EEikScrollUp: + case EEikScrollDown: + + iCurrentScreen = aScrollBar->ThumbPosition(); + + //Refresh now + DrawNow(); + UpdateScrollIndicatorL(); + break; + } + } + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::UpdateScrollIndicatorL() +// +// This function assumes that +// - iText exists and has at least one element. +// - iScreenStarts exist and has at least one element. +// These conditions are met if CalculateL / ConstructL has been called. +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::UpdateScrollIndicatorL() + { + __ASSERT_DEBUG( iText, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::UpdateScrollIndicatorL: iText == NULL") )); + __ASSERT_DEBUG( iText->Count() > 0, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::UpdateScrollIndicatorL: iText has zero elements") )); + __ASSERT_DEBUG( iScreenStarts, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::UpdateScrollIndicatorL: iScreenStarts == NULL") )); + __ASSERT_DEBUG( iScreenStarts->Count() > 0, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::UpdateScrollIndicatorL: iScreenStarts has zero elements") )); + + TInt lastLine( iText->Count() - 1 ); + TInt screenStart( (*iScreenStarts)[ iScreenStarts->Count() - 1 ] ); + + TBool firstNewScreenHandled( EFalse ); + + while ( lastLine >= screenStart + iLinesPerScreen ) + { + if ( !firstNewScreenHandled && iDoNotShowLastLineAgain ) + { + screenStart++; + firstNewScreenHandled = ETrue; + } + + // If the shows screen is the last on, scroll the view along with new lines. + if (iCurrentScreen == iScreenStarts->Count() - 1) + { + iCurrentScreen++; + } + + screenStart += iLinesPerScreen - 1; + iScreenStarts->AppendL( screenStart ); + } + + if ( !iSBFrame ) + { + iSBFrame = new( ELeave ) CEikScrollBarFrame( this, NULL, ETrue ); + + iSBFrame->CreateDoubleSpanScrollBarsL(ETrue, EFalse); // non-window owning scrollbar + iSBFrame->SetTypeOfVScrollBar(CEikScrollBarFrame::EDoubleSpan); + + iSBFrame->SetScrollBarFrameObserver(this); + iSBFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto); + } + + TEikScrollBarModel vSbarModel; + vSbarModel.iThumbPosition = iCurrentScreen; + vSbarModel.iScrollSpan = iScreenStarts->Count(); + vSbarModel.iThumbSpan = 1; + + TRect rect(Rect()); + TEikScrollBarFrameLayout layout; + layout.iTilingMode = TEikScrollBarFrameLayout::EInclusiveRectConstant; + + // For EDoubleSpan type scrollbar + if (vSbarModel.iThumbPosition + vSbarModel.iThumbSpan > vSbarModel.iScrollSpan) + { + // Not let scrollbar values overflow + vSbarModel.iThumbPosition = vSbarModel.iScrollSpan - vSbarModel.iThumbSpan; + } + + TAknDoubleSpanScrollBarModel vDsSbarModel(vSbarModel); + iSBFrame->TileL(NULL, &vDsSbarModel, rect, rect, layout); + iSBFrame->SetVFocusPosToThumbPos(vDsSbarModel.FocusPosition()); + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::CalculateL() +// Needs to be called in construction, and whenever layout changes. +// Screen orientation change, etc. +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::CalculateL(const TRect& aRect) + { + // DebugPrintF(_L("CEdtaScreenTextBuffer::CalculateL, rect: %d, %d - %d, %d"), aRect.iTl.iX, aRect.iTl.iY, aRect.iBr.iX, aRect.iBr.iY ); + + TRect rect(0,0,0,0); + + iCurrentScreen = 0; + + iFont = AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont); + + // Calculate various text positioning parameters + iBaseLineDelta = iFont->HeightInPixels() * KLineHeightCent / KCent; + + TInt mainPaneWidth( aRect.iBr.iX - aRect.iTl.iX ); + TInt mainPaneHeight( aRect.iBr.iY - aRect.iTl.iY ); + // Line width is 90% (by default) of client rect, and horizontal margins 10% + iLineWidth = mainPaneWidth * KLineWidthCent / KCent; + + iTopBaseLineX = ( mainPaneWidth - iLineWidth ) / 2; + + // top margin is 7% (by default) of the client rect + TInt topMargin = mainPaneHeight * KHeightMarginCent / KCent; + iTopBaseLineY = topMargin + iFont->AscentInPixels(); + + // minimum bottom margin is 3% (by default) of the client rect + TInt bottomMargin = mainPaneHeight * KBottomMarginCent / KCent; + iLinesPerScreen = + ( mainPaneHeight - topMargin - bottomMargin ) / iBaseLineDelta; + + iTextAlign = CGraphicsContext::ELeft; + + // Text must not be deleted, otherwise all accumulated data will be lost. + if ( !iText ) + { + // Every text line on screen is one entry in this array + iText = new( ELeave ) CArrayPtrFlat( KInitialScreenBufferSize ); + iText->AppendL(NULL); // Extra newline for visual reasons + } + + if ( iScreenStarts ) + { + delete iScreenStarts; + iScreenStarts = NULL; + } + + + // This array contains indices for lines that start the subsequent + // screens, for custom scrolling + iScreenStarts = new( ELeave ) CArrayFixFlat( KInitialScreenStartAmount ); + // Initialisation: first screen starts at line 0. + iScreenStarts->AppendL( 0 ); + + if ( iSBFrame ) + { + delete iSBFrame; + iSBFrame = NULL; + } + + UpdateScrollIndicatorL(); + } + + +// ----------------------------------------------------------------------------- +// CEdtaScreenTextBuffer::HandleResourceChange() +// ----------------------------------------------------------------------------- +void CEdtaScreenTextBuffer::HandleResourceChange(TInt aType) + { + switch ( aType ) + { + case KEikDynamicLayoutVariantSwitch : + { + TRAPD( error, CalculateL( iAvkonAppUi->ClientRect() )); + + if( error != KErrNone ) + { + DebugPrintF(_L("CEdtaScreenTextBuffer::HandleResourceChange: CalculateL -method failed: %d"), error ); + } + else + { + DrawNow(); + } + } + break; + + case KAknsMessageSkinChange : + { + __ASSERT_DEBUG(iSBFrame, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::HandleResourceChange: iSBFrame == NULL") )); + + TRAPD( error, + { + iSBFrame->CreateDoubleSpanScrollBarsL(ETrue, EFalse); // window owning scrollbar + iSBFrame->SetTypeOfVScrollBar(CEikScrollBarFrame::EDoubleSpan); + iSBFrame->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EOn); + UpdateScrollIndicatorL(); + } + ); + + if( error != KErrNone ) + { + DebugPrintF(_L("CEdtaScreenTextBuffer::HandleResourceChange: Create ScrollBars failed: %d"), error ); + __ASSERT_DEBUG( error == KErrNone, Panic(EEdtaFieldNotInitialized, _L("CEdtaScreenTextBuffer::HandleResourceChange => Skin change caused panic") )); + } + } + + default: + { + CCoeControl::HandleResourceChange(aType); + } + break; + } + } + + +// --------------------------------------------------------- +// CEdtaScreenTextBuffer::MopSupplyObject() +// Pass skin information if need. +// --------------------------------------------------------- +TTypeUid::Ptr CEdtaScreenTextBuffer::MopSupplyObject(TTypeUid aId) + { + return CCoeControl::MopSupplyObject(aId); + } + + +// End of file diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/group/UT_easydialingplugin.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/group/UT_easydialingplugin.mmp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,153 @@ +/* +* Copyright (c) 2010 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: Project file +* +*/ + + +#include +#include "data_caging_paths.hrh" +#include "../../../inc/easydialingconstants.hrh" + +// DEFINES +#define KMyUniqueUid3 0x200212A2 +#define KEUnitTestDllUid2 0x1000af5a + +// Build target +TARGET UT_easydialingplugin.dll +TARGETTYPE dll +UID KEUnitTestDllUid2 KMyUniqueUid3 + +CAPABILITY ALL -TCB +VENDORID 0x101FB657 + +// Source files +SOURCEPATH ../src +SOURCE DllMain.cpp // Test code +SOURCE CEasyDialingPlugin_Test.cpp +SOURCE createtestcontactbase.cpp +SOURCE dummyparentcontrol.cpp + +SOURCEPATH ../../../src +SOURCE easydialingplugin.cpp +SOURCE easydialinglistbox.cpp +SOURCE easydialinglistboxdata.cpp +SOURCE easydialinglistboxitemdrawer.cpp +SOURCE easydialinglistboxview.cpp +SOURCE easydialingcenreplistener.cpp +SOURCE easydialingcontactdata.cpp +SOURCE easydialingcontactdatamanager.cpp +SOURCE easydialingutils.cpp + +// Code under test + +// Include paths +USERINCLUDE ../inc +USERINCLUDE ../../../inc +USERINCLUDE ../../../traces +USERINCLUDE ../../../edcontactor/inc + +APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE /epoc32/include/Digia/EUnit +SYSTEMINCLUDE /epoc32/include/internal +SYSTEMINCLUDE /epoc32/include/ecom + +SOURCEPATH ../../../data + +START RESOURCE 200212A0.rss + LANG SC + TARGET easydialingplugin.rsc +END + +START RESOURCE easydialingpluginresources.rss + HEADER + TARGETPATH \resource + TARGET easydialingpluginresources.rsc + LANGUAGE_IDS +END + + +// Symbian framework libraries + +LIBRARY euser.lib +LIBRARY ECom.lib +LIBRARY cone.lib +LIBRARY ws32.lib +LIBRARY eikctl.lib +LIBRARY eikcore.lib +LIBRARY eikcoctl.lib +LIBRARY bafl.lib +LIBRARY gdi.lib +LIBRARY egul.lib +LIBRARY apgrfx.lib +LIBRARY fbscli.lib +LIBRARY efsrv.lib +LIBRARY cntmodel.lib +LIBRARY bitgdi.lib +LIBRARY etext.lib + +// Avkon, Avkon skin and Avkon layout libraries. +LIBRARY avkon.lib +LIBRARY aknicon.lib +LIBRARY aknlistloadertfx.lib +LIBRARY aknskins.lib +LIBRARY aknskinsrv.lib +LIBRARY aknswallpaperutils.lib +LIBRARY aknlayout2scalable.lib +LIBRARY cdlengine.lib +LIBRARY aknlayout2.lib + +// AIW library +LIBRARY servicehandler.lib + +// Predictive search libraries +LIBRARY PcsUtils.lib +LIBRARY PsServerClientAPI.lib + +// Virtual phonebook library +LIBRARY VPbkEng.lib + +// Phonebook engine +LIBRARY pbkeng.lib + +// ECE Communication launcher library +LIBRARY ccaclient.lib + +// Central repository +LIBRARY centralrepository.lib +LIBRARY commonengine.lib +LIBRARY cenrepnotifhandler.lib + +// CPbk2ImageManager +LIBRARY pbk2presentation.lib + +// bitmap handling +LIBRARY bitmaptransforms.lib + +// Easy dialing own contactor module. +LIBRARY edcontactor.lib + +// CMS library used for getting information about contacts. +//LIBRARY cmsclient.lib + +// Service provider settings api +LIBRARY serviceprovidersettings.lib + +// Libraries used for R&D purposes only +DEBUGLIBRARY flogger.lib + +// EasyDialing Eunit Test libarary +LIBRARY eunit.lib +// End of File + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,29 @@ +/* +* Copyright (c) 2010 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: Bld.inf +* +*/ + + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +PRJ_TESTMMPFILES +UT_easydialingplugin.mmp + +//PRJ_MMPFILES + +//UT_easydialingplugin.mmp diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/inc/CEasyDialingPlugin_Test.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/inc/CEasyDialingPlugin_Test.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,84 @@ +/* +* Copyright (c) 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 file has been generated with EUnit Pro +http://www.digia.com/eunit +----------------------------------------------------------------------------- +*/ +#ifndef __CEASYDIALINGPLUGIN_TEST_H__ +#define __CEASYDIALINGPLUGIN_TEST_H__ + +// INCLUDES +#include +#include +#include "easydialingplugin.h" + +// FORWARD DECLARATIONS + +class CDummyParentControl; + +/** + * Generated EUnit test suite class. + */ +NONSHARABLE_CLASS( CEasyDialingPlugin_Test ) : public CEUnitTestSuiteClass, public MDialingExtensionObserver + { + public: // Constructors and destructor + + static CEasyDialingPlugin_Test* NewL(); + static CEasyDialingPlugin_Test* NewLC(); + ~CEasyDialingPlugin_Test(); + + void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ); + + private: // Constructors + + CEasyDialingPlugin_Test(); + void ConstructL(); + + private: // New methods + + void SetupL(); + + void Teardown(); + + void T_Global_OfferKeyEventLL(); + + void T_Global_Search1(); + void T_Global_Search2(); + void T_Global_Search3(); + void T_Global_Search4(); + void T_Global_Search5(); + void T_Global_Search6(); + void T_Global_Search7(); + void T_Global_Search8(); + + void T_Global__CEasyDialingPluginL(); + + private: // Data + + CEasyDialingPlugin* iCEasyDialingPlugin; + + CActiveSchedulerWait* iWait; + + CDummyParentControl* iDummyParentControl; + + EUNIT_DECLARE_TEST_TABLE; + + }; + +#endif // __CEASYDIALINGPLUGIN_TEST_H__ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/inc/dummyparentcontrol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/inc/dummyparentcontrol.h Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2010 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: EUnit test file. +* +*/ + +#ifndef DUMMYPARENTCONTROL_H_ +#define DUMMYPARENTCONTROL_H_ + +#include + +class CDummyParentControl : public CCoeControl + { +public: + + static CDummyParentControl* NewL(); + + ~CDummyParentControl(); + +private: + + CDummyParentControl(); + + void ConstructL(); + + }; + +#endif /* DUMMYPARENTCONTROL_H_ */ diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/src/CEasyDialingPlugin_Test.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/src/CEasyDialingPlugin_Test.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,314 @@ +/* +* Copyright (c) 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 file has been generated with EUnit Pro +http://www.digia.com/eunit +----------------------------------------------------------------------------- +*/ +#include "CEasyDialingPlugin_Test.h" +#include +#include +#include +#include + +#include "easydialingplugin.h" +#include "dummyparentcontrol.h" + +#include +#include +#include +#include + + +// - Construction ----------------------------------------------------------- + +CEasyDialingPlugin_Test* CEasyDialingPlugin_Test::NewL() + { + CEasyDialingPlugin_Test* self = CEasyDialingPlugin_Test::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +CEasyDialingPlugin_Test* CEasyDialingPlugin_Test::NewLC() + { + CEasyDialingPlugin_Test* self = new( ELeave ) CEasyDialingPlugin_Test(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +CEasyDialingPlugin_Test::~CEasyDialingPlugin_Test() + { + RDebug::Print(_L("EDTest: enter desctructor")); + + if (iCEasyDialingPlugin) + { + iCEasyDialingPlugin->RemoveObserver( this ); + } + delete iWait; + delete iCEasyDialingPlugin; + delete iDummyParentControl; + RDebug::Print(_L("EDTest: exit desctructor")); + } + +CEasyDialingPlugin_Test::CEasyDialingPlugin_Test() + { + } + + +TInt CreateTestContactDatabaseL(); + +void CEasyDialingPlugin_Test::ConstructL() + { + CEUnitTestSuiteClass::ConstructL(); + CreateTestContactDatabaseL(); + iWait = new( ELeave )CActiveSchedulerWait(); + iDummyParentControl = CDummyParentControl::NewL(); + + iCEasyDialingPlugin = CEasyDialingPlugin::NewL(); + iCEasyDialingPlugin->InitializeL( *iDummyParentControl ); + iCEasyDialingPlugin->AddObserverL( this ); + + + RDebug::Print(_L("EDTest:Construct plugin exit")); + } + + +void CEasyDialingPlugin_Test::HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ) + { + if ( aEvent == MDialingExtensionObserver::ESearchComplete ) + { + iWait->AsyncStop(); + } + } + +// - Test methods ----------------------------------------------------------- + + + +void CEasyDialingPlugin_Test::SetupL( ) + { + } + + +void CEasyDialingPlugin_Test::Teardown( ) + { + } + + +void CEasyDialingPlugin_Test::T_Global_OfferKeyEventLL( ) + { + + TKeyEvent ke; + ke.iCode = 32; + ke.iModifiers = 0; + ke.iRepeats = 0; + ke.iScanCode = 32; + + iCEasyDialingPlugin->OfferKeyEventL( ke, EEventKey ); + EUNIT_ASSERT_DESC( iCEasyDialingPlugin, "OfferKeyEventL general assert"); + + } + + +// ----------------------------------------------------------------------------- +// T_Global_Search* +// These functions do all kind of searches with easy dialing and check that +// the count of matching contacts is right. These tests require that a specific +// test contact data base has been created with CreateTestContactDatabaseL(). +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin_Test::T_Global_Search1( ) + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("A") )); + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 1 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search2() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("b") )); + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 1 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search3() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("C") )); + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 2 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search4() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("2") )); + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 4 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search5() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("3") )); + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 4 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search6() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("8286607") )); // should match to alo + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 1 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search7() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("5569304") )); // should match to arold + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 1 ); + } + +void CEasyDialingPlugin_Test::T_Global_Search8() + { + TRAP_IGNORE( iCEasyDialingPlugin->SetInputL( _L("3456407") )); // should match to uomi + iWait->Start(); + // Now execution stops here until HandleDialingExtensionEvent has been called. + + TInt count = iCEasyDialingPlugin->MatchingContactCount(); + EUNIT_ASSERT_EQUALS( count, 2 ); + } + + + +// ----------------------------------------------------------------------------- +// T_Global__CEasyDialingPluginL +// Destructor test +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin_Test::T_Global__CEasyDialingPluginL( ) + { + iCEasyDialingPlugin->~CEasyDialingPlugin(); + iCEasyDialingPlugin = NULL; + iCEasyDialingPlugin = CEasyDialingPlugin::NewL(); + EUNIT_ASSERT_DESC( ETrue, "Generated assert, replace with real"); + } + + + + + + + +// - EUnit test table ------------------------------------------------------- + +EUNIT_BEGIN_TEST_TABLE( + CEasyDialingPlugin_Test, + "Easy dialing plugin test", + "UNIT" ) + +EUNIT_TEST( + "OfferKeyEventL", + "CEasyDialingPlugin", + "OfferKeyEventL", + "FUNCTIONALITY", + SetupL, T_Global_OfferKeyEventLL, Teardown) + +EUNIT_TEST( + "SetInputLL", + "CEasyDialingPlugin", + "SetInputLL", + "FUNCTIONALITY", + SetupL, T_Global_Search1, Teardown) + +EUNIT_TEST( + "Tests matching contact count function.", + "CEasyDialingPlugin_Test", + "MatchingContactCount", + "FUNCTIONALITY", + SetupL, T_Global_Search2, Teardown ) + +EUNIT_TEST( + "PCS search test function", + "CEasyDialingPlugin_Test", + "", + "FUNCTIONALITY", + SetupL, T_Global_Search3, Teardown ) + +EUNIT_TEST( + "PCS search test function", + "CEasyDialingPlugin_Test", + "", + "FUNCTIONALITY", + SetupL, T_Global_Search4, Teardown ) + +EUNIT_TEST( + "PCS search test function", + "CEasyDialingPlugin_Test", + "", + "FUNCTIONALITY", + SetupL, T_Global_Search5, Teardown ) + +EUNIT_TEST( + "PCS search test function", + "CEasyDialingPlugin_Test", + "", + "FUNCTIONALITY", + SetupL, T_Global_Search6, Teardown ) + +EUNIT_TEST( + "PCS search test function", + "CEasyDialingPlugin_Test", + "", + "FUNCTIONALITY", + SetupL, T_Global_Search7, Teardown ) + +EUNIT_TEST( + "PCS search test function", + "CEasyDialingPlugin_Test", + "", + "FUNCTIONALITY", + SetupL, T_Global_Search8, Teardown ) + +EUNIT_TEST( + "~CEasyDialingPlugin", + "CEasyDialingPlugin", + "~CEasyDialingPlugin", + "FUNCTIONALITY", + SetupL, T_Global__CEasyDialingPluginL, Teardown) + +EUNIT_END_TEST_TABLE diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/src/DllMain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/src/DllMain.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,34 @@ +/* +* Copyright (c) 2010 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: EUnit test file. +* +*/ +// EXTERNAL INCLUDES +#include +#include "CEasyDialingPlugin_Test.h" + +/** +* T_HelloWorld.dll test suite factory function. +*/ +EXPORT_C MEUnitTest* CreateTestSuiteL() + { + CEasyDialingPlugin_Test* rootSuite = CEasyDialingPlugin_Test::NewL(); + + if (rootSuite == NULL) + { + User::Panic(_L("Koe"), 3); + } + + return rootSuite; + } diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/src/createtestcontactbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/src/createtestcontactbase.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,260 @@ +/* +* Copyright (c) 2010 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: EUnit test file. +* +*/ + + + +#include +#include +#include +#include +#include + + +HBufC* CreateFieldStringL(char* contactdata[], TInt aIx) + { + char* str = contactdata[aIx]; + TInt len = 0; + + while (str[len] != '\0') + { + len++; + } + + if ( len == 0 ) + { + return NULL; + } + + HBufC *field = HBufC::NewL( len ); + TPtr des = field->Des(); + des.SetLength( len ); + + for (TInt i = 0; i < len; i++) + { + des[i] = (TChar) str[i]; + } + + return field; + } + + +void AddFieldStringL( char* contactdata[], CPbkContactItem* aContact, TInt aIx, TInt aFieldId ) + { + HBufC* fieldName = CreateFieldStringL( contactdata, aIx ); + + if ( fieldName ) + { + CleanupStack::PushL( fieldName ); + aContact->FindField( aFieldId )->TextStorage()->SetTextL( *fieldName ); + CleanupStack::PopAndDestroy(fieldName); + } + } + + +void AddContactL( char* contactdata[], CPbkContactEngine* engine, TInt aIx) + { + CPbkContactItem* contact = engine->CreateEmptyContactL(); + CleanupStack::PushL( contact ); + + AddFieldStringL( contactdata, contact, aIx * 6 + 0, EPbkFieldIdFirstName ); + AddFieldStringL( contactdata, contact, aIx * 6 + 1, EPbkFieldIdLastName ); + AddFieldStringL( contactdata, contact, aIx * 6 + 2, EPbkFieldIdPhoneNumberMobile ); + AddFieldStringL( contactdata, contact, aIx * 6 + 3, EPbkFieldIdPhoneNumberGeneral ); + AddFieldStringL( contactdata, contact, aIx * 6 + 4, EPbkFieldIdCompanyName ); + AddFieldStringL( contactdata, contact, aIx * 6 + 5, EPbkFieldIdEmailAddress ); + + engine->AddNewContactL( *contact ); + + CleanupStack::PopAndDestroy( contact ); + } + + + +// --------------------------------------------------------- +// CreateTestContactDatabaseL +// +// Creates a test contact database if it hasn't been created yet. +// The existence of test base is done through testing if there +// is a contact matching with word "Dummy". Test data base has +// a contact for Mr Dummy Contact. +// This is the primary function of this file. +// --------------------------------------------------------- +// +TInt CreateTestContactDatabaseL() + { + + TInt nbr_of_contacts = 15; + + /* + * Contact data contains contact data as text strings. + * Each contact takes six lines: + * - first name + * - last name + * - cell number + * - home number + * - company name + * - e-mail address + * Empty string means that field is not set. + */ + + char* contactdata[] = + { + "Dummy", + "Contact", + "+1056439939", + "035558756", + "Ericsson", + "dummy.contact@ericsson.sw", + + "Jaakko", + "Helanti", + "+358405557631", + "034447611", + "Nokia", + "jaakko.helanti@helanti.com", + + "Stan", + "Laurel", + "+0104438839992", + "+0104438839000", + "MGM", + "stan.laurel@heaven.com", + + "Oliver", + "Hardy", + "+01078398927", + "+10364537882", + "MGM", + "oliver.hardy@heaven.com", + + "Harold", + "Lloyd", + "+102843947", + "+10290503958", + "Universal", + "harold.lloyd@universal.com", + + "Tauno", + "Palo", + "+358405557631", + "014445466", + "Suomi Filmi", + "tauno.palo@gmail.com", + + "Tea", + "Ista", + "+358475554590", + "018723195", + "Helsingin Kaupungin Teatteri", + "tea.ista@cultureclub.com", + + "Ansa", + "Ikonen", + "+358471134099", + "012388192", + "Suomi Filmi", + "ansa.ikonen@gmail.com", + + "Bertil", + "Nystrom", + "+35866377334", + "074500998", + "Rovaniemen Viuluveistämö", + "bertil.nystrom@rvv.com", + + "", + "Onlylastname", + "+3585556743", + "+35835552727", + "", + "", + + "Onlyfirstname", + "", + "+358405559874", + "035553747", + "", + "", + + "", + "Two-Part Lastname", + "+358405557432", + "", + "", + "", + + "", + "", + "+35866377334", + "074500998", + "Just Companyname", + "john.doe@justcompanyname.com", + + "One", + "Number", + "", + "075553266", + "Idaho", + "", + + "No", + "Number", + "", + "", + "Ericsson", + "no.number@ericsson.com", + }; + + + CPbkContactEngine* engine = CPbkContactEngine::NewL(); + CleanupStack::PushL( engine ); + + _LIT(KDummyContact, "Dummy"); + + CContactIdArray* findings = engine->FindLC( KDummyContact ); + + // If dummy contact is found, the test database has already been created. + if (findings->Count() > 0) + { + CleanupStack::PopAndDestroy( findings ); + CleanupStack::PopAndDestroy( engine ); + return 0; + } + + CleanupStack::PopAndDestroy( findings ); + + for (TInt i = 0; i < nbr_of_contacts; i++ ) + { + AddContactL( contactdata, engine, i ); + } + + CleanupStack::PopAndDestroy(engine); + + return nbr_of_contacts; + } + + + + + + + + + + + + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/easydialing/tsrc/t_easydialingplugin/src/dummyparentcontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneuis/easydialing/tsrc/t_easydialingplugin/src/dummyparentcontrol.cpp Fri Apr 23 14:59:43 2010 +0100 @@ -0,0 +1,61 @@ +/* +* Copyright (c) 2010 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: EUnit test file. +* +*/ + +// INCLUDE FILES +#include "dummyparentcontrol.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +CDummyParentControl* CDummyParentControl::NewL() + { + + CDummyParentControl* self = new (ELeave) CDummyParentControl(); + + self->ConstructL(); + + return self; + } + + +CDummyParentControl::CDummyParentControl() : CCoeControl() + { + + } + +CDummyParentControl::~CDummyParentControl() + { + } + +void CDummyParentControl::ConstructL() + { + CreateWindowL(); + } + diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/group/bld.inf --- a/phoneuis/group/bld.inf Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/group/bld.inf Fri Apr 23 14:59:43 2010 +0100 @@ -15,6 +15,7 @@ * */ +#include "../easydialing/group/bld.inf" #include "../dialer/group/bld.inf" #include "../BubbleManager/Group/bld.inf" #include "../ConnectUtil/group/bld.inf" diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/vmbx/help/data/xhtml.zip Binary file phoneuis/vmbx/help/data/xhtml.zip has changed diff -r d398543c5fb7 -r 5d467ea4b3e5 phoneuis/vmbx/help/inc/smsvo.hlp.hrh --- a/phoneuis/vmbx/help/inc/smsvo.hlp.hrh Mon Apr 19 16:39:38 2010 +0300 +++ b/phoneuis/vmbx/help/inc/smsvo.hlp.hrh Fri Apr 23 14:59:43 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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"