Merge fix for bug 2360.
--- 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"
--- 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
- <package id="phone" name="Phone Apps" levels="engine plugin ui app">
- <collection id="phoneapp" name="Phone Application" level="app">
- <component id="blacklist" filter="s60" name="Phone Blacklist Clearing" class="plugin">
- <unit bldFile="phoneapp/blacklist/group"/>
- </component>
- <component id="phoneui" filter="s60" name="Phone UI">
- <unit bldFile="phoneapp/phoneui/group"/>
- <!-- should these be separate components? #included? -->
- <!-- <unit bldFile="phoneapp/phoneui/tsrc/public/basic/3dringingtoneinterface_tests/group"/> -->
- <!-- <unit bldFile="phoneapp/phoneui/tsrc/public/basic/group"/> -->
- </component>
- <component id="phoneuicontrol" filter="s60" name="Phone UI Control">
- <unit bldFile="phoneapp/phoneuicontrol/group"/>
- </component>
- <component id="phoneuistates" filter="s60" name="Phone UI States">
- <unit bldFile="phoneapp/phoneuistates/group"/>
- </component>
- <component id="phoneuiutils" filter="s60" name="Phone UI Utils">
- <unit bldFile="phoneapp/phoneuiutils/group"/>
- </component>
- <component id="phoneuiview" filter="s60" name="Phone UI View">
- <unit bldFile="phoneapp/phoneuiview/group"/>
- </component>
- <component id="phoneuivoipextension" filter="s60" name="Phone UI VOIP Extension">
- <unit bldFile="phoneapp/phoneuivoipextension/group"/>
- </component>
- <component id="silenceactionplugin" filter="s60" name="Silence Action Plugin" class="plugin">
- <unit bldFile="phoneapp/silenceactionplugin/group"/>
- </component>
- <component id="phonemediatorcenter" filter="s60" name="Phone Mediator Center">
- <unit bldFile="phoneapp/phonemediatorcenter/group"/>
- </component>
- </collection>
- <collection id="phoneengine" name="Phone Engine" level="engine">
- <component id="phonecntfinder" filter="s60" name="Phone Contact Finder">
- <unit bldFile="phoneengine/phonecntfinder/group"/>
- </component>
- <component id="audiohandling" filter="s60" name="Phone Audio Handling">
- <unit bldFile="phoneengine/audiohandling/group"/>
- </component>
- <component id="callhandling" filter="s60" name="Call Handling">
- <unit bldFile="phoneengine/callhandling/group"/>
- </component>
- <component id="contacthandling" filter="s60" name="Phone Contact Handling">
- <unit bldFile="phoneengine/contacthandling/group"/>
- </component>
- <component id="loghandling" filter="s60" name="Phone Log Handling">
- <unit bldFile="phoneengine/loghandling/group"/>
- </component>
- <component id="engineinfo" filter="s60" name="Phone Engine Info">
- <unit bldFile="phoneengine/engineinfo/group"/>
- </component>
- <component id="phonemodel" filter="s60" name="Phone Model">
- <unit bldFile="phoneengine/phonemodel/group"/>
- </component>
- <component id="servicehandling" filter="s60" name="Phone Service Handling">
- <unit bldFile="phoneengine/servicehandling/group"/>
- </component>
- </collection>
- <collection id="phonesettings" name="Phone Settings" level="plugin">
- <component id="aiwcallimageplugin" filter="s60" name="Call Image AIW Plugin" class="plugin">
- <unit bldFile="phonesettings/aiwcallimageplugin/group"/>
- </component>
- <component id="pslncallimageplugin" filter="s60" name="Call Image Personalization Plugin" class="plugin">
- <unit bldFile="phonesettings/pslncallimageplugin/group"/>
- </component>
- </collection>
- <collection id="phoneuis" name="Phone UIs" level="ui">
- <component id="dialer" filter="s60" name="Dialer">
- <unit bldFile="phoneuis/dialer/group"/>
- <!-- what to do about this test unit? -->
- <!-- <unit bldFile="phoneuis/dialer/tsrc/public/basic/group"/> -->
- </component>
- <component id="bubblemanager" filter="s60" name="Phone Bubble Manager">
- <unit bldFile="phoneuis/bubblemanager/group"/>
- </component>
- <component id="connectutil" filter="s60" name="Connection Utility" class="plugin">
- <unit bldFile="phoneuis/connectutil/group"/>
- </component>
- <component id="sfiutils" filter="s60" name="Send File In Call Utilities" class="plugin">
- <unit bldFile="phoneuis/sfiutils/group"/>
- <!-- what to do about this test unit? -->
- <!-- <unit bldFile="phoneuis/sfiutils/tsrc/public/basic/group"/> -->
- </component>
- <component id="ussd" filter="s60" name="Unstructured Supplementary Services Data">
- <unit bldFile="phoneuis/ussd/group"/>
- </component>
- <component id="vmbx" filter="s60" name="Voice Mailbox">
- <unit bldFile="phoneuis/vmbx/group"/>
- </component>
- <component id="telephonydevicemode" filter="s60" name="Telephony Device Mode">
- <unit bldFile="phoneuis/telephonydevicemode/group"/>
- </component>
- </collection>
- <collection id="phone_info" name="Phone Apps Info" level="app">
- <component id="phone_plat" filter="s60" name="Phone Apps Platform Interfaces" class="api">
- <unit bldFile="phone_plat/group"/>
- </component>
- </collection>
- <collection id="phoneplugins" name="Phone Plugins" level="plugin">
- <component id="telbranding" filter="s60" name="Tel Branding" class="plugin" introduced="^2">
- <unit bldFile="phoneplugins/telbranding/group"/>
- </component>
- </collection>
- </package>
-</SystemDefinition>
--- 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
};
--- 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
--- 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 <cntdef.h>
-#include <phclttypes.h>
+#include <PhCltTypes.h>
// CONSTANTS
--- 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
--- 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
Binary file phoneapp/phoneui/help/data/xhtml.zip has changed
--- 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"
--- 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;
--- 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
--- 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
--- 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 <f32file.h>
@@ -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<CEikCba*>( 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 );
}
--- 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
--- 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 <uikon.hrh>
#include <AiwCommon.hrh>
#include <AiwCommon.rh>
-#include <aknnotifyplugin.loc>
#include <phone.loc>
@@ -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
--- 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<int> 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)
--- 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
--- 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
--- 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 <e32base.h>
#include <pevirtualengine.h>
-#include <mphoneneclearedhandler.h>
-#include <mphonestatemachine.h>
-#include <mphoneviewcommandhandle.h>
+#include "mphoneneclearedhandler.h"
+#include "mphonestatemachine.h"
+#include "mphoneviewcommandhandle.h"
// CLASS DECLARATION
--- 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:
/**
--- 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
--- /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 <e32base.h>
+#include <pevirtualengine.h>
+#include <startupdomainpskeys.h>
+#include <coreapplicationuisdomainpskeys.h>
+#include <e32cmn.h>
+
+// 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
--- 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<TInt>& lsit of blocked keys
- */
- IMPORT_C const RArray<TInt>& 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.
--- 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:
--- 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:
/**
--- 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:
/**
--- 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
--- 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;
--- 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
/**
--- 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
--- /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
--- /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 <e32def.h>
+
+/**
+ * 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
--- /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 <e32def.h>
+
+// 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
--- 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
--- 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;
};
--- 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
--- 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.
--- 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;
}
--- 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 ========
--- 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
--- 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<CDialer*>( 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<TInt>& 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
--- 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 );
}
--- /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 <mpeengineinfo.h>
+#include <featmgr.h>
+#include <e32cmn.h>
+
+// -----------------------------------------------------------
+// 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
--- 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 <wlaninternalpskeys.h>
#include <btengdomainpskeys.h>
#include <btengdomaincrkeys.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
#include <starterclient.h>
#include <RSSSettings.h>
#include <UikonInternalPSKeys.h>
@@ -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<TInt>& 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
--- 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
--- 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 <easydialingcommands.hrh>
+#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<TPhoneCommandParam*>( &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
--- 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 <videotelcontrolmediatorapi.h>
#include <MediatorDomainUIDs.h>
#include <bldvariant.hrh>
+#include <coreapplicationuisdomainpskeys.h>
#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
--- 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
--- 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
--- 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
--- 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 <UikonInternalPSKeys.h>
#include <startupdomainpskeys.h>
#include <hwrmdomainpskeys.h>
+#include <oem/simlockuikeys.h>
+#include <featmgr.h>
+#include <coreapplicationuisdomainpskeys.h>
#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 );
}
// -----------------------------------------------------------
--- 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 <featmgr.h> // for FeatureManager
#include <settingsinternalcrkeys.h>
+#include <phoneappcommands.hrh>
#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 );
}
--- 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)
--- 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
--- 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
--- 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:
/**
--- 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:
--- 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:
--- 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:
--- 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:
--- 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:
--- 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
*/
--- 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:
/**
--- 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.
*/
--- /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
--- 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
--- 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
--- 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 );
--- 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:
--- 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
// -----------------------------------------------------------
//
--- 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
--- 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
--- 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
--- 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 <TelephonyVariant.hrh>
// ================= 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 );
}
--- 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 <StringLoader.h>
#include <cpephonemodelif.h>
-#include <featmgr.h>
-#include <TelephonyVariant.hrh>
#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 );
--- 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
// -----------------------------------------------------------
//
--- 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 );
--- 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(
--- 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 );
--- 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 <featmgr.h>
-#include <telephonyvariant.hrh>
#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
--- 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 );
--- 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 );
--- 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
--- 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 <connect/sbdefs.h>
#include <videotelcontrolmediatorapi.h>
#include <MediatorDomainUIDs.h>
-#include <TelephonyVariant.hrh>
#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
--- 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
--- /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 <startupdomainpskeys.h>
+#include <oem/simlockuikeys.h>
+
+
+// ================= 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
--- 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 <startupdomainpskeys.h>
+#include "phoneconstants.h"
+#include <featmgr.h>
// ================= 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
--- 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
--- 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 <pevirtualengine.h>
#include <StringLoader.h>
#include <mpeengineinfo.h>
-#include <FeatMgr.h>
+#include <featmgr.h>
#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
--- 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<int> 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<unsigned long> &) 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<unsigned long> &) 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 &)
--- 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
--- 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
--- 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:
/**
--- 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 <e32base.h>
-
-
-// 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<TInt>& 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<TInt> 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
--- 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 <e32base.h>
-#include <e32keys.h>
-
-// CLASS DECLARATION
-
-class MPhoneStorage
- {
- public:
-
- /**
- * Destructor.
- */
- virtual ~MPhoneStorage() {};
-
- virtual void AppendBlockedKeysListL( TStdScanCode aScanCode ) = 0;
-
- virtual const RArray<TInt>& 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
--- 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;
--- 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
};
--- 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
};
--- 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
};
--- 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;
- }
- }
}
}
}
--- 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
--- 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;
--- 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;
--- 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 <eikappui.h>
-#include <eikenv.h>
-#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<TInt>& 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
--- 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();
}
--- 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 <e32std.h>
#include <stringpool.h>
@@ -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};
--- 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.
--- 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<class MPhoneDialerController::CButtonData> &) 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)
--- 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
--- 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
--- 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
--- 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 <e32base.h>
-#include <akntoolbarobserver.h>
-#include <mnumberentry.h>
+#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<CButtonData>& 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
--- 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 <AknsUtils.h>
-#include <phoneui.mbg>
-
-// ---------------------------------------------------------------------------
-// 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_*/
--- 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
--- /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 <e32std.h>
+#include <e32base.h>
+#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<CButtonData>& 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
--- /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 <e32base.h>
+#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
--- 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.
--- 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 );
--- 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
{
--- 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 <e32base.h>
#include <Profile.hrh>
-#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<CPhoneAudioPlayer> 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
--- 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;
};
--- 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
--- 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();
--- 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
--- 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 <e32cmn.h>
+#include <gulicon.h>
+
/**
- * 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<CButtonData>& 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_*/
--- /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
--- /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 <Profile.hrh>
+
+// 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
--- /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 <f32file.h>
+#include <Profile.hrh>
+#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
--- /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
--- /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 <e32base.h>
+#include <Profile.hrh>
+
+#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<CPhoneAudioPlayer> 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
--- /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
--- /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 <e32svr.h>
+
+// CONSTANTS
+
+const TInt KPhoneUiViewDebugBufferSize = 100;
+
+// MACROS
+
+typedef TBuf<KPhoneUiViewDebugBufferSize> 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
--- 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.
};
--- 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
--- 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
{
--- 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;
--- 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 <eikapp.h>
#include <eikcolib.h>
#include <gulicon.h>
-#include <akntoolbar.h>
-#include <aknbutton.h>
#include <StringLoader.h>
+#include <AknsUtils.h>
#include <phoneui.rsg>
+#include <phoneui.mbg>
#include <pevirtualengine.h>
#include <data_caging_path_literals.hrh>
#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<CEikAppUiFactory*>( CEikonEnv::Static()->AppUiFactory() );
- appUiFactory->SetViewFixedToolbar( iToolbar );
-
- if( iToolbar )
- {
- iToolbar->SetToolbarObserver(
- static_cast<MAknToolbarObserver*>( 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<MEikCommandObserver*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
- // Sanity check
- if( serviceCodeFlag->Boolean() == iServiceCodeFlag )
- {
- return;
- }
- // Get the toolbar button control
- CAknButton* button = static_cast<CAknButton*>
- ( 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<CButtonData>& 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
--- 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
--- /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 <StringLoader.h>
+#include <phoneui.rsg>
+#include <phoneui.mbg>
+#include <AknsUtils.h>
+#include <data_caging_path_literals.hrh>
+#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<CButtonData>& 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
--- /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<TPhoneCmdParamInteger*>( aCommandParam );
+ paramInt->SetInteger( iEasyDialing->MenuResourceId() );
+ }
+ break;
+
+ case EPhoneViewGetEasyDialingCbaId:
+ {
+ TPhoneCmdParamInteger* paramInt =
+ static_cast<TPhoneCmdParamInteger*>( 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<TPhoneCmdParamDynMenu*>( aCommandParam );
+
+ // TInt resourceId = menu->ResourceId();
+ CEikMenuPane* menuPane = reinterpret_cast<CEikMenuPane*>( menu->DynMenu() );
+
+ retVal = iEasyDialing->InitializeMenuPaneL( *menuPane, menu->ResourceId() );
+ }
+ return retVal;
+ }
--- 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<TPhoneCmdParamBoolean*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
+
+ __PHONELOG1(
+ EBasic,
+ EPhonePhoneapp,
+ "CPhoneMenuController::GetInvalidCsPhoneNumberFlag() - Boolean return value = %d)",
+ boolParam->Boolean() );
+
+ boolParam->SetBoolean( iInvalidCsPhoneNumber );
+ }
+ }
+
// End of File
--- 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 <featmgr.h>
+#include <eikcba.h>
+
// ================= 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
// ---------------------------------------------------------
//
--- 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<CEikDialog**>( &iNote ), *iEikEnv.EikAppUi() );
}
- else if( noteParam->Type() == EPhoneNoteUIDisabled )
- {
- iNote = new ( ELeave ) CPhoneUIDisabledNote( reinterpret_cast<CEikDialog**>( &iNote ), *iEikEnv.EikAppUi() );
- }
else
{
iNote = new ( ELeave ) CPhoneNote( reinterpret_cast<CEikDialog**>( &iNote ), *iEikEnv.EikAppUi() );
--- 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 <cntdef.h>
#include <f32file.h>
#include <featmgr.h>
@@ -33,6 +31,7 @@
#include <DRMHelper.h>
#include <activeidle2domainpskeys.h>
+#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<KMaxFileName> 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<TPhoneCmdParamRingTone*>( aCommandParam );
+ // Get volume and ringing tone type
const TInt volume = ringToneParam->Volume();
TProfileRingingType ringingType =
static_cast<TProfileRingingType>( 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<CPhoneRingingTonePlayerAO*>( 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:
- //<TUint8 aTimes><TUint8 aExpirationMark>
- //<TUint8 aPermissionType>
- //<TUint8 aAutomatedContentType><TDesC8 aContentID>
- 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:
+ //<TUint8 aTimes><TUint8 aExpirationMark>
+ //<TUint8 aPermissionType>
+ //<TUint8 aAutomatedContentType><TDesC8 aContentID>
+ 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
--- 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 <stringloader.h>
+#include <StringLoader.h>
// CONSTANTS
--- 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 <phoneappcommands.hrh>
#include <phoneui.mbg>
+#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<TPhoneCmdParamBoolean*>( aCommandParam );
+
+ iWiredAccFlag = accFlag->Boolean();
+ if ( iCallInProgress )
+ {
+ SetToolbarButtonDimmed( EPhoneInCallCmdActivateIhf, iWiredAccFlag );
+ UpdateToolbar();
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CPhoneToolbarController::SetCallInProgressFlag
+// ---------------------------------------------------------
+//
+void CPhoneToolbarController::SetCallInProgressFlag( TPhoneCommandParam* aCommandParam )
+ {
+ TPhoneCmdParamIncallIndicatorData* param =
+ static_cast<TPhoneCmdParamIncallIndicatorData*>( 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 );
+ }
}
// ---------------------------------------------------------
--- 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 <featmgr.h>
-#include <aknnotedialog.h>
-#include <eikdialg.h>
-#include <aknnotecontrol.h>
-
-
-// ================= 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
--- 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 <layoutmetadata.cdl.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknstatuspaneutils.h>
+#include <AknStatuspaneUtils.h>
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<MEikCommandObserver*>( 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
// -----------------------------------------------------------------------------
//
--- 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 <apgtask.h>
#include <apgwgnam.h>
#include <apacmdln.h>
@@ -106,7 +109,7 @@
#include <cphcntcontactid.h>
#include <AknUtils.h>
#include <AknSgcc.h>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
#include <UikonInternalPSKeys.h>
#include <startupdomainpskeys.h>
#include <utf.h>
@@ -128,11 +131,14 @@
#include <gfxtranseffect/gfxtranseffect.h>
#include <akntranseffect.h>
-#include <GSLauncher.h> // Call Settings launch.
+#include <gslauncher.h> // Call Settings launch.
+
+#include <dialingextensioninterface.h>
+#include <easydialingcommands.hrh>
// 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<CCoeControl*>(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<TPhoneCmdParamBoolean*>( aCommandParam );
- iDialerController->SetDtmfDialerVisibleL(
- booleanParam->Boolean() );
+ if ( booleanParam->Boolean() )
+ {
+ iDialer->SetControllerL( iDtmfDialerController );
+ }
+ else
+ {
+ iDialer->SetControllerL( iDialerController );
+ }
}
break;
}
- case EPhoneViewSetRetrictedDialer:
- {
- if ( iDialer )
- {
- TPhoneCmdParamBoolean* booleanParam =
- static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
- iDialerController->SetRestrictedDialer(
- booleanParam->Boolean() );
- }
- break;
- }
- case EPhoneViewSetDtmfOptionsFlag:
+ case EPhoneViewSetDtmfOptionsFlag:
{
TPhoneCmdParamBoolean* booleanParam =
static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
@@ -1106,10 +1113,12 @@
case EPhoneViewShowCustomizedDialer:
{
- TPhoneCmdParamCustomDialer* customDialerParam =
- static_cast<TPhoneCmdParamCustomDialer*>( aCommandParam );
- iDialerController->ShowCustomizedDialerL(
- customDialerParam->DialerController() );
+ if ( iDialer )
+ {
+ TPhoneCmdParamCustomDialer* customDialerParam =
+ static_cast<TPhoneCmdParamCustomDialer*>( 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<TPhoneCmdParamBoolean*>( aCommandParam );
+ iMenuController->SetConferenceAndWaitingVideoFlag( booleanParam->Boolean() );
+ }
+ break;
default:
__PHONELOG( EBasic, EPhonePhoneapp,
"CPhoneViewController::ExecuteCommandL -> UnKnownMessage !!! " );
@@ -1372,14 +1402,24 @@
static_cast<TPhoneCmdParamTransEffect*>( 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<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( SingleItemFetchType() );
break;
-
+ }
case EPhoneViewSetPhoneCustomization:
{
TPhoneCmdParamPointer* pointerParam =
@@ -1447,9 +1487,18 @@
break;
case EPhoneViewEnableToolbarButton:
+ {
TPhoneCmdParamInteger* integerParam =
static_cast<TPhoneCmdParamInteger*>( aCommandParam );
iToolbarController->SetToolbarButtonDimmed( integerParam->Integer(), EFalse );
+ }
+ break;
+
+ case EPhoneViewGetQwertyModeObserver:
+ {
+ TPhoneCmdParamPointer* ptrParam = static_cast<TPhoneCmdParamPointer*>( aCommandParam );
+ ptrParam->SetPointer( static_cast<TAny*>( 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<MEikCommandObserver*>( 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<TPhoneCmdParamInteger*>( aCommandParam )->SetInteger( resId );
viewResponse = EPhoneViewResponseSuccess;
}
break;
case EPhoneViewGetCustomizedDialerCbaResourceId:
{
- TInt resId = iDialerController->CustomizedCbaResourceId();
+ TInt resId = iDialer->Controller()->CbaResourceId(); // easydialing change
static_cast<TPhoneCmdParamInteger*>( 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<CCoeControl*>(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<TPhoneCmdParamBoolean*>( aCommandParam );
- booleanValue->SetBoolean( iPhoneView->IsSecurityMode() );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPhoneViewController::SetNeedToSendToBackground
-// ---------------------------------------------------------------------------
-//
-void CPhoneViewController::SetNeedToSendToBackground(
- TPhoneCommandParam* aCommandParam )
- {
- TPhoneCmdParamBoolean* booleanParam = static_cast<TPhoneCmdParamBoolean*>(
- 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<TPhoneCmdParamBoolean*>(
- 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<TPhoneCmdParamBoolean*>(
+ aCommandParam );
+
+ iNeedToReturnToForegroundAppAfterCall = booleanParam->Boolean();
+ __PHONELOG1( EBasic, EPhoneUIView,
+ "CPhoneViewController::SetNeedToReturnToForegroundAppAfterCall(%d)",
+ iNeedToReturnToForegroundAppAfterCall );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneViewController::GetNeedToReturnToForegroundAppAfterCall
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneViewController::GetNeedToReturnToForegroundAppAfterCall() const
+ {
+ return iNeedToReturnToForegroundAppAfterCall;
}
// End of File
--- /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 <e32base.h>
+#include <e32std.h>
+#include <e32svr.h>
+
+#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 );
+ }
--- /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 <e32base.h>
+#include <e32svr.h>
+
+#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<CPhoneRingingToneServer*>(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();
+ }
+
--- /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 <e32base.h>
+#include <f32file.h>
+#include <utility.h>
+#include <AudioPreference.h>
+
+#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 <data_caging_path_literals.hrh>
+#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<CPhoneRingingToneSrvPlayerAO*>( 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
--- /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 <e32base.h>
+#include <e32svr.h>
+
+#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 );
+ }
+ }
--- 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
--- 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 <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
#include <telmenuextension.h>
#include <spdefinitions.h>
#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
--- 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 <aknbutton.h>
-#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<CButtonData>& 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;
};
--- 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:
--- 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<CTelMenuExtension::TCallInfo>& 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
--- 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 <phoneuivoip.rsg>
#include <StringLoader.h>
#include <featmgr.h>
+#include <centralrepository.h>
+#include <easydialingcrkeys.h>
#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 ||
--- 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;
--- 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();
}
--- 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() );
}
}
--- 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 <e32base.h>
-#include <akntoolbar.h>
#include <AknsItemID.h>
+#include <AknsUtils.h>
#include <StringLoader.h>
#include <phoneui.mbg>
@@ -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<CButtonData>& 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;
}
--- 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 <featmgr.h>
#include <mpeengineinfo.h>
+#include <StringLoader.h>
+
#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<CPhoneStateMachineVoIP&>(
+ 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 );
+ }
--- 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;
--- 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
--- 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 @@
<script xmlns="http://www.nokia.com/ns/cep/script/1.0/"
xmlns:cep="http://www.nokia.com/ns/cep/1.0/">
- <!-- Must have sensor interaction active -->
+
+ <!-- Check if we have incoming call and we receive display down orientation event -->
<if>
- <equals>
- <contextRef source='Sensor' type='Setting.Active'/>
- <string>Off</string>
- </equals>
- <actions>
- </actions>
- </if>
- <!-- Check if we have incoming call and we receive a double tap event -->
- <elseIf>
<and>
- <!-- Must have a ringin call and receive new double tap event or orientation event from sensor -->
+ <!-- Must have a ringin call and receive orientation event from sensor -->
<equals>
<contextRef source='Call' type='State'/>
<string>Ringing</string>
</equals>
- <or>
- <and>
- <!-- Check that double tap interaction is set -->
- <equals>
- <contextRef source='Sensor' type='Setting.TappingInteraction.SilenceCalls'/>
- <string>On</string>
- </equals>
- <contextUpdated>
- <contextRef source='Sensor' type='Event.DoubleTap'/>
- </contextUpdated>
- </and>
- <and>
- <!-- Check that turning interaction is set -->
- <equals>
- <contextRef source='Sensor' type='Setting.TurningInteraction.SilenceCalls'/>
- <string>On</string>
- </equals>
- <!-- ...and previous orientation is not 'Undefined' ... -->
- <notEqual>
- <contextRef source='Sensor' type='Event.Orientation.Previous'/>
- <string>Undefined</string>
- </notEqual>
- <contextChanged>
- <contextRef source='Sensor' type='Event.Orientation'/>
- </contextChanged>
- <equals>
- <contextRef source='Sensor' type='Event.Orientation'/>
- <string>DisplayDownwards</string>
- </equals>
- </and>
- </or>
+ <equals>
+ <contextRef source='Sensor' type='Setting.Active'/>
+ <string>On</string>
+ </equals>
+ <!-- Check that turning interaction is set -->
+ <equals>
+ <contextRef source='Sensor' type='Setting.TurningInteraction.SilenceCalls'/>
+ <string>On</string>
+ </equals>
+ <!-- ...and previous orientation is not 'Undefined' ... -->
+ <notEqual>
+ <contextRef source='Sensor' type='Event.Orientation.Previous'/>
+ <string>Undefined</string>
+ </notEqual>
+ <contextChanged>
+ <contextRef source='Sensor' type='Event.Orientation'/>
+ </contextChanged>
+ <equals>
+ <contextRef source='Sensor' type='Event.Orientation'/>
+ <string>DisplayDownwards</string>
+ </equals>
</and>
<actions>
+ <!-- DEBUG -->
+ <!-- <publishContext><contextRef source="Test" type="Log" value="silence.rul - 01 silence call only"/></publishContext> -->
+
<!-- Silence ringing tone -->
<Phone Command='Silence'/>
<!-- Vibra feedback -->
<Vibra Mode='Start' Delay='0' Repeats='2' RepeatInterval='200' Duration='50' Intensity='50'/>
</actions>
- </elseIf>
- <!-- Check if we just have incoming call -->
- <elseIf>
- <and>
- <!-- Check that the feature has not yet been enabled -->
- <notEqual>
- <contextRef source='Sensor' type='Event.AutoRotateAndDoubleTap'/>
- <string>Enabled</string>
- </notEqual>
- <equals>
- <contextRef source='Call' type='State'/>
- <string>Ringing</string>
- </equals>
- </and>
- <actions>
- <!-- Activate double tap events from sensor -->
- <publishContext>
- <contextRef source='Sensor'
- type='Event'
- value='DoubleTap.Activate'/>
- </publishContext>
- <!-- Activate orientation events from sensor -->
- <publishContext>
- <contextRef source='Sensor'
- type='Event'
- value='Orientation.Activate'/>
- </publishContext>
-
- <!-- Mark feature as 'Enabled' -->
- <publishContext>
- <contextRef source="Sensor" type="Event.AutoRotateAndDoubleTap" value="Enabled"/>
- </publishContext>
-
- </actions>
- </elseIf>
- <!-- If we have call in 'Connected' or 'Disconnected' state -->
- <elseIf>
- <!-- Check that the feature has not already been disabled -->
- <and>
- <notEqual>
- <contextRef source='Sensor' type='Event.AutoRotateAndDoubleTap'/>
- <string>Disabled</string>
- </notEqual>
- <or>
- <equals>
- <contextRef source='Call' type='State'/>
- <string>Connected</string>
- </equals>
- <equals>
- <contextRef source='Call' type='State'/>
- <string>Disconnected</string>
- </equals>
- </or>
- </and>
- <actions>
- <!-- Deactivate double tap events from sensor -->
- <publishContext>
- <contextRef source='Sensor'
- type='Event'
- value='DoubleTap.Deactivate'/>
- </publishContext>
- <!-- Deactivate orientation events from sensor -->
- <publishContext>
- <contextRef source='Sensor'
- type='Event'
- value='Orientation.Deactivate'/>
- </publishContext>
-
- <!-- Mark feature as 'Disabled' -->
- <publishContext>
- <contextRef source="Sensor" type="Event.AutoRotateAndDoubleTap" value="Disabled"/>
- </publishContext>
-
- </actions>
- </elseIf>
+ </if>
+
</script>
\ No newline at end of file
--- 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 <e32base.h>
-#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
--- 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 <e32base.h>
-#include "MPhCntMatch.h"
+#include "mphcntmatch.h"
NONSHARABLE_CLASS( CPhCntSelectedData ) : public CBase
{
--- 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;
--- 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 <e32base.h>
#include "tphcntcontactfield.h"
-#include "MPhCntMatch.h"
+#include "mphcntmatch.h"
#include "mphcntcontactfields.h"
class MVPbkContactLink;
--- 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 <e32std.h>
-#include "MPhCntMatch.h"
+#include "mphcntmatch.h"
#include "tphcntnumber.h"
class MVPbkContactLinkArray;
--- 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 <e32base.h>
#include <TVPbkFieldVersitProperty.h>
-#include "MPhCntMatch.h"
+#include "mphcntmatch.h"
#include "tphcntnumber.h"
class MPhCntContactManager;
--- 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 <e32std.h>
-#include "MPhCntMatch.h"
+#include "mphcntmatch.h"
/**
* Represents phone number.
--- 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 );
}
--- 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"
--- 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
--- 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;
--- 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 <CNTDEF.H> // TContactItemId
#include "CPhCntMatcher.h" // TFieldId
-#include "MPhCntMatch.h" // TPhCCliType
+#include "mphcntmatch.h" // TPhCCliType
// CONSTANTS
--- 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
--- 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 <e32base.h>
-#include "CPhCntThumbnailLoader.h"
+#include "cphcntthumbnailloader.h"
// FORWARD DECLARATIONS
class CFbsBitmap;
--- 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 <coemain.h> // CONE
-#include <SecUi.h> // For TSecUi
+#include <secui.h> // For TSecUi
#include <featmgr.h> // Feature Manager
#include <talogger.h>
--- 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};
--- 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
--- 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 <barsread.h>
#include <data_caging_path_literals.hrh>
#include <defaultbeep.rsg>
+#include <featmgr.h>
#include <pepanic.pan>
#include <talogger.h>
@@ -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 );
--- 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)
--- 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
--- 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.
--- 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
/**
--- 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<CPESingleCall*>( 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
--- 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
--- 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:
/**
--- 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;
};
--- 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
--- 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
--- 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.
--- 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;
--- 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;
--- 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 );
}
}
--- 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
Binary file phoneengine/phonemodel/conf/s60telephony.confml has changed
Binary file phoneengine/phonemodel/conf/s60telephony_102828F8.crml has changed
--- 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.
*/
--- 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,
--- 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
--- 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
{
--- 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 <ctsydomainpskeys.h>
#include <mpedatastore.h>
#include <pepanic.pan>
-#include <SettingsInternalCRKeys.h>
+#include <settingsinternalcrkeys.h>
#include <talogger.h>
#include <telephonyvariant.hrh>
#include <telinternalcrkeys.h>
--- 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 );
- }
+
}
--- 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 );
--- 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 <mpecontacthandling.h>
#include <mpedatastore.h>
#include <pepanic.pan>
-#include <SecUi.h>
-#include <SecUiManualSecuritySettings.h>
+#include <secui.h>
+#include <secuimanualsecuritysettings.h>
#include <talogger.h>
--- 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 );
--- 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 <mpedatastore.h>
-#include <SecUi.h>
-#include <SecUiManualSecuritySettings.h>
+#include <secui.h>
+#include <secuimanualsecuritysettings.h>
#include <talogger.h>
--- 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;
}
--- 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 );
}
}
--- 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
--- 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 <pslnfwviewuids.h>
#include <psln.hrh>
-#include <pslncommon.rsg>
+#include <PslnCommon.rsg>
// General services
#include <MGFetch.h>
// Resources
-#include <psln.rsg>
+#include <Psln.rsg>
// Logging
#include "PslnCallImagePluginLogger.h"
--- 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 <DRMHelper.h>
#include <coemain.h>
#include <aknnotewrappers.h>
-#include <psln.rsg>
+#include <Psln.rsg>
#include <drmutility.h>
// Logging
--- 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.
--- 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<MBubbleTouchPaneInterface*> (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();
}
// ---------------------------------------------------------------------------
--- 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:
--- 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:
--- 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:
--- 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;
}
--- 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:
--- 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();
}
--- 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(
--- 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(
--- 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 <barsread.h>
-#include <Bubblemanager.rsg>
+#include <BubbleManager.rsg>
// CONSTANTS
const TUint8 KBubbleNE1LongLineFormat = 0;
--- 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();
}
--- 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();
}
--- 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:
--- 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:
--- 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();
}
--- 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 <eikenv.h>
#include <AknsUtils.h>
#include <AknsDrawUtils.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <layoutmetadata.cdl.h>
--- 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 <eikenv.h>
#include <AknsUtils.h>
#include <AknsDrawUtils.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <layoutmetadata.cdl.h>
--- 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 <AknBidiTextUtils.h>
-#include <aknsdrawutils.h>
+#include <AknsDrawUtils.h>
#include <aknlayoutscalable_avkon.cdl.h>
#include <gulicon.h>
#include <barsread.h>
#include <AknsFrameBackgroundControlContext.h>
-#include <aknsconstants.h>
+#include <AknsConstants.h>
+#include <phoneappcommands.hrh>
-#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 );
+ }
--- 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 <AknBidiTextUtils.h>
#include <featmgr.h>
#include <aknlayoutscalable_apps.cdl.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <applayout.cdl.h>
#include <layoutmetadata.cdl.h>
@@ -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
--- 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 <aknenv.h>
#include <applayout.cdl.h>
#include <AknUtils.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.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 <calslbs.h>
#include <bldvariant.hrh>
-#include <AknLayoutDef.h>
+#include <aknlayoutdef.h>
/**
* Layout coordinates from Application LAF
--- 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 <aknenv.h>
#include <applayout.cdl.h>
#include <AknUtils.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.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 <calslbs.h>
#include <bldvariant.hrh>
-#include <AknLayoutDef.h>
+#include <aknlayoutdef.h>
/**
* Layout coordinates from Application LAF
--- 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 <aknenv.h>
#include <applayout.cdl.h>
#include <AknUtils.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.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 <calslbs.h>
#include <bldvariant.hrh>
-#include <AknLayoutDef.h>
+#include <aknlayoutdef.h>
/**
* Call3 (video cli) layout coordinates from Application LAF
--- 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 <aknenv.h>
#include <applayout.cdl.h>
#include <AknUtils.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.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 <calslbs.h>
#include <bldvariant.hrh>
-#include <AknLayoutDef.h>
+#include <aknlayoutdef.h>
/**
* Layout coordinates from Application LAF
--- 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 <aknenv.h>
#include <applayout.cdl.h>
-#include <aknutils.h>
+#include <AknUtils.h>
#include <aknlayout2scalabledef.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.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 <CCoUtlInterface.h>
+#include <ccoutlinterface.h>
#include <etel.h>
#include <etelmm.h>
#include <etelpckt.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 <CCoUtlInterface.h>
+#include <ccoutlinterface.h>
#include <ConeResLoader.h>
// FORWARD DECLARATION
--- 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 <CCoUtlInterface.inl>
+#include <ccoutlinterface.inl>
#endif // CCOUTLINTERFACE_H
--- 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 <ecom/ecom.h>
-#include <CoUtlInterface.hrh>
+#include <coutlinterface.hrh>
// CONSTANTS
_LIT8( KCoUtlResolverData, "default" );
--- 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 <AknGlobalConfirmationQuery.h>
#include <AknUtils.h>
#include <StringLoader.h>
-#include <ConnectUtilRsc.rsg>
+#include <connectutilrsc.rsg>
#include <avkon.hrh>
#include <e32property.h>
#include <PSVariables.h>
--- 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 <ecom.h>
#include <implementationproxy.h>
-#include <CoUtlInterface.hrh>
+#include <coutlinterface.hrh>
#include "CCoUtlImplementation.h"
// CONSTANTS
--- 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
--- /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 <flogger.h>
+ _LIT(KCbsLogFolder, "ussdui");
+ _LIT(KCbsLogFile, "ussdui.txt");
+
+#elif USSDUI_LOGGING_METHOD == 2 // RDebug
+
+ #include <e32svr.h>
+
+#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<const TDesC>(tempLogDes()),BBB); } /*lint -restore */
+#define _LOGSTRING3(AAA,BBB,CCC) /*lint -save -e960 */ { _LIT(tempLogDes,AAA); RFileLogger::WriteFormat(KCbsLogFolder(),KCbsLogFile(),EFileLoggingModeAppend,TRefByValue<const TDesC>(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
--- 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 <coecntrl.h>
+#include <peninputclient.h>
// FORWARD DECLARATIONS
@@ -132,7 +133,8 @@
// The navipane control container.
CAknNavigationControlContainer* iNaviPane;
-
+ // Client for accessing pen editor (virtual keyboard)
+ RPeninputServer iPeninputServer;
};
--- 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 <ussd.rsg>
#include <avkon.rsg>
-#include "ussd.hrh"
#include <eikmenub.h>
#include <eikedwin.h>
#include <avkon.hrh>
#include <bldvariant.hrh>
#include <featmgr.h>
-
#include <AknDef.h>
#include <hlplch.h> // 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.
--- 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 <ussd.rsg>
-#include "UssdLayout.h"
#include <aknkeys.h>
-#include "ussd.hrh"
#include <eikedwin.h>
#include <bldvariant.hrh>
#include <featmgr.h>
-
#include <centralrepository.h>
#include <telinternalcrkeys.h>
-#include "telephonyvariant.hrh"
-
#include <csxhelp/ussd.hlp.hrh> // for help context
-#include "UssdApp.h" // for applicationUID
-#include <AknUtils.h>
// For skinning.
#include <AknsBasicBackgroundControlContext.h>
@@ -45,7 +34,16 @@
#include <AknsUtils.h>
#include <txtglobl.h>
-
+#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
--- 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 );
--- 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 <AknIndicatorContainer.h>
#include <aknnavilabel.h>
#include "UssdComms.h"
-
#include "UssdAppUi.h"
#include "UssdNaviPane.h"
+#include "UssdLogger.h"
#include <AknUtils.h>
// 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;
}
--- 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)
--- 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"
+
--- 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 <avkon.loc>
#include <data_caging_paths_strings.hrh>
-
-
// CONSTANTS
// RESOURCE DEFINITIONS
@@ -100,6 +98,5 @@
};
}
-
// End of File
--- 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"
+
Binary file phoneuis/dialer/data/dialer_stub.sis has changed
--- /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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- /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 <eikon.rh>
+#include <eikon.hrh>
+
+#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
--- 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 ; #<thunk>#
+ _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
--- 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
--- 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
--- 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
--- 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
--- 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 <coemain.h>
#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
--- /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 <e32std.h>
+#include <e32base.h>
+#include <cenrepnotifyhandler.h>
+
+// 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
--- 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 <e32base.h>
#include <aknbutton.h>
+#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
--- 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 <coemain.h>
#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<CDialerKeyPadButton> iButtons;
+ RPointerArray<CDialerKeyPadButton> 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
--- /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 <e32std.h>
+#include <e32base.h>
+#include <badesca.h>
+#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
+
--- 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 <AknPhoneNumberEditor.h>
#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<KDialerPhoneNumberEntryBufferSize> iPreviousNumberEntryContent;
+
+ // NOT OWN
+ CDialingExtensionInterface* iEasyDialer;
+
+ TDialerOperationMode iOperationMode;
+
+ // NOT OWNED.
+ CEikAppUi* iAppUi;
};
#endif // CDIALERNUMBERENTRY_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 <mphonedialercontroller.h>
+#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<TInt> > iButtonCommands;
+
+ /** The last received pointer event. */
+ TPointerEvent iLatestPointerEvent;
+ };
+
+#endif /* CDIALERTOOLBAR_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 <dialingextensioninterface.h>
+
+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
+
--- 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
--- 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
--- 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
--- /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 <data_caging_paths_for_iby.hrh>
+
+// 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
--- 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 <data_caging_path_literals.hrh> // for KDC_APP_RESOURCE_DIR
#include <bautils.h> // for BaflUtils
#include <aknedsts.h>
+#include <spsettings.h>
+#include <dialingextensioninterface.h>
+#include <easydialingcommands.hrh>
+#include <dialer.rsg>
#include "cdialer.h"
#include "dialercommon.h"
-#include <dialer.rsg>
#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<CCoeControl*>(&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<MCoeFepAwareTextEditor_Extension1*>
@@ -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
--- /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 <centralrepository.h>
+#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
+
--- 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 <aknbutton.h>
#include <AknsUtils.h>
#include <AknsDrawUtils.h>
-#include <AknLayout2Def.h>
+#include <aknlayout2def.h>
#include <AknsSkinInstance.h>
#include <AknsControlContext.h>
#include <aknlayoutscalable_apps.cdl.h>
--- /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 <gulicon.h>
+#include <AknUtils.h>
+#include <aknbutton.h>
+#include <AknControl.h>
+#include <AknsUtils.h>
+#include <AknsSkinInstance.h>
+#include <AknsDrawUtils.h>
+#include <data_caging_path_literals.hrh> // for KDC_APP_RESOURCE_DIR
+#include <touchfeedback.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <AknsFrameBackgroundControlContext.h>
+
+#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<MCoeControlObserver::TCoeEvent>(
+ 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
--- 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 <e32event.h>
#include <gulicon.h>
#include <eikapp.h>
-#include <AknUtils.h>
#include <aknbutton.h>
#include <AknControl.h>
#include <AknsUtils.h>
#include <AknsSkinInstance.h>
#include <AknsDrawUtils.h>
#include <AknsConstants.h>
-#include <AknLayout2Def.h>
+#include <aknlayout2def.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.h>
#include <data_caging_path_literals.hrh> // for KDC_APP_RESOURCE_DIR
#include <touchfeedback.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <AknsFrameBackgroundControlContext.h>
#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<CCoeControl&>(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 );
}
}
--- /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 <AknUtils.h>
+#include <bautils.h>
+#include <barsread.h>
+#include <avkon.rsg>
+#include <dialer.rsg>
+#include <dialerkeypad.rsg>
+#include <e32const.h>
+#include <e32lang.h>
+#include <PtiEngine.h>
+#include <AknFepInternalCRKeys.h>
+#include <AvkonInternalCRKeys.h>
+#include <bacntf.h>
+
+#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<TUint16*>( 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<TScript>(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<TLanguage>(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<TInt> 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<TLanguage>( 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
+
--- 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 <AknsDrawUtils.h>
#include <applayout.cdl.h>
#include <AknLayoutFont.h>
-#include <AknLayout2Def.h>
+#include <aknlayout2def.h>
#include <AknPhoneNumberEditor.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <AknsBasicBackgroundControlContext.h>
#include <AknsFrameBackgroundControlContext.h>
#include <aknlayoutscalable_apps.cdl.h>
@@ -44,10 +44,13 @@
#include "dialertrace.h"
#include "dialer.hrh"
#include "mnumberentry.h"
-
+#include <dialingextensioninterface.h>
+#include <phoneappcommands.hrh>
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
--- 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<CCoeControl*>(&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
}
--- /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 <aknbutton.h>
+#include <aknappui.h>
+#include <AknsUtils.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <phoneui.rsg>
+#include <phoneappcommands.hrh>
+#include <StringLoader.h>
+#include <data_caging_path_literals.hrh>
+
+#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<CAknButton*>( 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<CAknAppUi*>( 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<TInt>() );
+ }
+
+ // 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
--- 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 <AknUtils.h>
#include <AknsDrawUtils.h>
#include <AknLayoutFont.h>
-#include <AknLayout2Def.h>
+#include <aknlayout2def.h>
#include <layoutmetadata.cdl.h>
-#include <AknLayout2ScalableDef.h>
+#include <aknlayout2scalabledef.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <AknsBasicBackgroundControlContext.h>
#include <AknsFrameBackgroundControlContext.h>
--- /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 <eikenv.h>
+#include <eikappui.h>
+#include <phoneappcommands.hrh>
+
+// 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
Binary file phoneuis/easydialing/cenrep/200212A0.txt has changed
Binary file phoneuis/easydialing/conf/easydialing.confml has changed
Binary file phoneuis/easydialing/conf/easydialing_200212A0.crml has changed
--- /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 <registryinfov2.rh>
+#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
--- /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
Binary file phoneuis/easydialing/data/easydialing_stub.sis has changed
--- /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 <eikon.rh>
+#include <avkon.rh>
+
+#include <avkon.loc>
+#include <numberentry.loc>
+#include <callui.loc>
+#include "easydialing.loc"
+
+#include <phoneappcommands.hrh>
+#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
--- /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)
+
--- /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 <bldvariant.hrh>
+#include <data_caging_paths_strings.hrh>
+#include <eikon.rh>
+#include <avkon.rh>
+
+
+#include <AiwCommon.rh>
+#include <AiwGenericParam.hrh>
+
+// 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
--- /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
+
--- /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 <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+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 <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+
+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
+
+
+
+
--- /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 <e32std.h>
+#include <VPbkFieldTypeSelectorFactory.h>
+// 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
--- /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 <e32std.h>
+#include <e32base.h>
+
+// 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
--- /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 <e32std.h>
+#include <e32base.h>
+
+// 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
--- /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 <e32cons.h>
+_LIT( KColon, ":" );
+
+// system
+#include <e32base.h>
+#include <bautils.h>
+#include <coeutils.h>
+#include <coemain.h>
+#include <apgcli.h>
+#include <apgtask.h>
+#include <eikenv.h>
+
+//Phbk
+#include <VPbkFieldTypeSelectorFactory.h>
+
+// AIW
+#include <AiwCommon.h>
+#include <AiwServiceHandler.h>
+#include <AiwGenericParam.h>
+#include <AiwContactSelectionDataTypes.h>
+#include <AiwVariant.h>
+#include <AiwGenericParam.hrh>
+#include <aiwdialdataext.h>
+
+
+//SPSettings
+#include <spsettings.h>
+#include <spproperty.h>
+
+//Sendui
+#include <SenduiMtmUids.h>
+#include <sendui.h>
+#include <CMessageData.h>
+#include <commonphoneparser.h>
+#include <CSendingServiceInfo.h>
+
+//IM plugin
+#include <cmscontactorimpluginbase.h>
+
+//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__
--- /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 <e32std.h>
+#include <e32base.h>
+
+
+// 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
--- /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 <e32std.h>
+#include <e32base.h>
+
+// 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
--- /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 <e32base.h>
+
+//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
--- /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 <e32std.h>
+#include <f32file.h>
+#include <VPbkFieldTypeSelectorFactory.h>
+
+//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
--- /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 <e32cons.h>
+#define KEDContactorServiceLoggerFile CCA_L("ccacontactorservice.txt")
+_LIT( KEDContactorServiceResourceFileName, "\\resource\\ccacontactorservicersc.rsc" );
+_LIT( KColon, ":" );
+
+
+// system
+#include <e32base.h>
+#include <bautils.h>
+#include <coeutils.h>
+#include <coemain.h>
+
+//Phbk
+#include <VPbkFieldTypeSelectorFactory.h>
+
+// AIW
+#include <AiwCommon.h>
+#include <AiwServiceHandler.h>
+#include <AiwGenericParam.h>
+#include <AiwContactSelectionDataTypes.h>
+
+//SPSettings
+#include <spsettings.h>
+#include <spproperty.h>
+
+//own
+#include "edcontactorservice.h"
+#include "edcontactorserviceoperator.h"
+#include "medcontactorobserver.h"
+#include "edcontactorpopuphandler.h"
+#include <edcontactor.rsg>
+
+#include "edcontactor.h"
+
+#include "easydialinglogger.h"
+
+#endif // __EDCONTACTORSERVICEHEADERS_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 <e32std.h>
+#include <e32base.h>
+
+//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
--- /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 <e32std.h>
+#include <e32base.h>
+
+// 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
--- /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 <e32std.h>
+#include <e32base.h>
+
+// 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
--- /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 <e32std.h>
+#include <e32base.h>
+
+// 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
--- /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 <e32base.h>
+
+/**
+ * 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
--- /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 <e32base.h>
+
+// 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
--- /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_ */
--- /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
+
--- /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
--- /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
--- /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
--- /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
--- /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 <e32std.h>
+#include <s32mem.h>
+#include <aknappui.h>
+#include <coemain.h>
+#include <phoneappcommands.hrh>
+
+#include "edcontactorserviceheaders.h"
+
+#include <edcontactor.rsg>
+
+// ================= 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<CAknAppUi*>( 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
--- /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 <e32std.h>
+
+#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
--- /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 <e32std.h>
+#include <s32mem.h>
+
+#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
--- /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
--- /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
--- /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
--- /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 <SendUiConsts.h>
+
+#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<CSendingServiceInfo> 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<TUid>* servicesToDim = new (ELeave) CArrayFixFlat<TUid>(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
--- /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
--- /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 <platform_paths.hrh>
+
+#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
+
--- /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 <platform_paths.hrh>
+#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
+
--- /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
--- /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 <ecom/ecom.h>
+#include <coecntrl.h>
+#include <eikmenup.h>
+
+
+/** 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
--- /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 <e32base.h>
+#include <cenrepnotifyhandler.h> // 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
--- /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__
--- /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
+
--- /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__
--- /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 <MPbk2ImageOperationObservers.h>
+#include <MVPbkSingleContactOperationObserver.h>
+#include <MVPbkContactStoreObserver.h>
+#include <MVPbkOperationObserver.h>
+#include <MVPbkContactViewBase.h>
+#include <TPbk2ImageManagerParams.h>
+#include <MPbkGlobalSetting.h> // For name order setting
+#include <MVPbkContactViewObserver.h>
+#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<MVPbkContactViewBase*>,
+ 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<CEasyDialingContactData> iContactDataArray;
+
+ /** Array that contains indexes of thumbnails that are waiting to be loaded. Owned. */
+ RArray<TInt> 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__
--- /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 <e32cmn.h>
+
+/**
+* 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__
+
--- /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 <aknlists.h>
+#include <aknlongtapdetector.h>
+
+// 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
--- /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 <aknlists.h>
+
+// 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
+
--- /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 <aknlists.h>
+
+// 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
--- /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 <aknlists.h>
+
+// 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
+
+
+
+
+
+
+
+
+
--- /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 <e32svr.h> // for RDebug::Print
+
+#ifdef USE_FILE_LOGGING
+#include <flogger.h>
+_LIT( KLogDir, "ed" );
+_LIT( KLogFile, "easydialing.log" );
+#endif
+
+
+NONSHARABLE_CLASS(TOverflowTruncate) : public TDes16Overflow
+ {
+ public:
+ void Overflow(TDes16& /*aDes*/) {}
+ };
+
+inline void DoDebugPrintF(TRefByValue<const TDesC> 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<const TDesC> 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
+
--- /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_ */
--- /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 <MPsResultsObserver.h>
+#include <mccaconnection.h>
+#include <mccaconnectionext.h>
+#include "measydialingcenreplistenerobserver.h"
+#include "mcontactdatamanagerobserver.h"
+#include "medcontactorobserver.h"
+#include "easydialingcontactdatamanager.h" // for TNameOrder
+
+// Phonebook engine API
+#include <MVPbkContactStoreListObserver.h>
+
+// ListBox Observer API
+#include <eiklbo.h>
+
+// MAknInputBlockCancelHandler
+#include <akninputblock.h>
+
+
+// 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<CPsClientData>& aResults, RPointerArray<CPsPattern>& 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<CPsClientData>& aResults, RPointerArray<CPsPattern>& 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<KEDMaxSearchStringLength> 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<TDesC> 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<MDialingExtensionObserver> 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<KEDMaxContactStringLength> 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
--- /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__
+
+
--- /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__
--- /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__
--- /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 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+ <!ENTITY layer_real_source_path "addon/custom_sw_tre/easydialing" >
+]>
+
+<SystemDefinition name="easydialing" schema="1.4.0">
+ <systemModel>
+ <layer name="addon_layer">
+ <module name="easydialing">
+ <unit unitID="cusw.easydialing" mrp="" bldFile="&layer_real_source_path;\group" name="easydialing" />
+ </module>
+ </layer>
+ <layer name="api_test_layer">
+ <module name="easydialing_api_tests">
+ <unit unitID="easydialing.test" mrp="" bldFile="&layer_real_source_path;\tsrc\t_easydialingplugin\group" name="easydialing_test" />
+ </module>
+ </layer>
+ </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- /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
--- /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 <bldvariant.hrh>
+
+// 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
--- /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 <bldvariant.hrh>
+
+// 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
--- /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 <e32std.h>
+#include <implementationproxy.h>
+#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
--- /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 <centralrepository.h>
+#include <cenrepnotifyhandler.h>
+#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
--- /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 <e32std.h>
+#include <MVPbkContactLink.h>
+#include <fbs.h>
+
+#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;
+ }
+
+
+
+
+
--- /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 <e32std.h>
+#include <fbs.h>
+#include <CPbk2ImageManager.h>
+#include <CVPbkContactManager.h>
+#include <MVPbkContactStoreList.h>
+#include <MVPbkContactLink.h>
+#include <VPbkContactStoreUris.h>
+#include <TVPbkContactStoreUriPtr.h>
+#include <CVPbkTopContactManager.h>
+#include <MVPbkContactOperationBase.h>
+#include <TVPbkStoreContactAnalyzer.h>
+#include <MVPbkFieldType.h>
+#include <VPbkEng.rsg>
+
+#include <MVPbkContactViewBase.h>
+#include <MVPbkBaseContactFieldCollection.h>
+#include <MVPbkContactFieldTextData.h>
+#include <MVPbkContactFieldData.h>
+
+#include <CVPbkContactLinkArray.h>
+#include <MVPbkContactLink.h>
+#include <MVPbkContactOperationBase.h>
+#include <MVPbkOperationObserver.h>
+#include <MVPbkContactStore.h> // MVPbkContactStore
+#include <MVPbkStoreContact.h>
+#include <centralrepository.h>
+
+#include <PbkGlobalSettingFactory.h>
+
+#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
+
--- /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 <easydialingpluginresources.rsg>
+
+#include <phoneappcommands.hrh>
+#include <phonebook2.mbg>
+#include <phonebook2ece.mbg>
+
+#include <ccappcommlauncherpluginrsc.rsg>
+
+#include <aknlongtapdetector.h> // Required for touch
+#include <AknsFrameBackgroundControlContext.h>
+
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <gulicon.h>
+#include <centralrepository.h>
+#include <bautils.h> // for BaflUtils
+
+#include <aknlistloadertfx.h>
+#include <aknlistboxtfxinternal.h>
+#include <aknlistboxtfx.h>
+
+// 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<CEasyDialingListBoxItemDrawer*> (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<CEasyDialingListBoxView*>( 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 <CAknDoubleSpanScrollBar*>( 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<MEikListBoxObserver::TListBoxEvent>
+ ( 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<MEikListBoxObserver::TListBoxEvent>( scrollEvent ) );
+ }
+
+ // Base class(es) might be also interested about the scrollbar events
+ CEikFormattedCellListBox::HandleScrollEventL( aScrollBar, aEventType );
+ }
+
+// end of file
+
--- /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 <easydialing.mbg>
+#include <phonebook2.mbg>
+#include <phonebook2ece.mbg>
+
+// AvKON and drawing header files
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <akniconconfig.h>
+#include <gulicon.h>
+#include <AknBidiTextUtils.h>
+#include <bidivisual.h>
+
+#include <aknlistloadertfx.h>
+#include <aknlistboxtfxinternal.h>
+#include <aknlistboxtfx.h>
+
+#include <akntransitionutils.h>
+#include <avkon.rsg>
+
+
+// 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.
+
--- /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 <aknlistloadertfx.h>
+#include <aknlistboxtfxinternal.h>
+#include <aknlistboxtfx.h>
+#include <akntransitionutils.h>
+#include <AknUtils.h>
+
+// 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
--- /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 <phonebook2.mbg>
+#include <phonebook2ece.mbg>
+
+#include <ccappcommlauncherpluginrsc.rsg>
+
+// AvKON and drawing header files
+#include <aknlayoutscalable_avkon.cdl.h>
+
+#include <aknlistloadertfx.h>
+#include <aknlistboxtfxinternal.h>
+#include <aknlistboxtfx.h>
+
+#include <akntransitionutils.h>
+
+// 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.
+
--- /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 <easydialingpluginresources.rsg>
+
+// AVKON and drawing header files
+#include <gdi.h>
+#include <aknlists.h>
+#include <AknUtils.h>
+#include <e32cmn.h>
+#include <bidivisual.h>
+
+// Predictive search header files
+#include <CPsSettings.h>
+#include <CPsQuery.h>
+#include <CPsQueryItem.h>
+#include <CPsClientData.h>
+#include <CPsPattern.h>
+#include <CPsRequestHandler.h>
+
+// Virtual phonebook header files
+#include <VPbkContactStoreUris.h>
+#include <CVPbkContactStoreUriArray.h>
+#include <TVPbkContactStoreUriPtr.h>
+#include <CVPbkContactLinkArray.h>
+#include <VPbkEng.rsg> // contains virtual phonebook data fields
+#include <phoneui.rsg>
+
+// CCA Launcher header files.
+#include <ccafactory.h>
+#include <mccaparameter.h>
+#include <mccaconnection.h>
+#include <mccaconnectionext.h>
+
+// Service provider settings api
+#include <spsettingsvoiputils.h>
+
+// AIW header files
+#include <AiwContactAssignDataTypes.h>
+#include <AiwContactSelectionDataTypes.h>
+
+// CCA contactor service.
+#include "edcontactorservice.h"
+
+// Open system trace
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "easydialingpluginTraces.h"
+#endif
+
+#include <phoneappcommands.hrh>
+#include <bautils.h> // for BaflUtils
+
+// Transition effects
+#include <gfxtranseffect/gfxtranseffect.h>
+
+// 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<MVPbkContactLink>& aArray );
+
+template <class T>
+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<MCCAConnectionExt*>( 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<TInt> 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<TInt> 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<CPsClientData>& aResults, RPointerArray<CPsPattern>& 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<TInt> 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<CPsClientData>& aResults, RPointerArray<CPsPattern>& /*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<MVPbkContactLink> 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<KBufferMaxLen> 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<CAknAppUi*>( 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<CAknAppUi*>( 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<CEasyDialingPlugin*>( 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<CAknAppUi*>( 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<CAknAppUi*>( 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<TPsMatchLocation> matchIndices;
+ CleanupClosePushL( matchIndices );
+
+ aPSHandler->LookupL( *aPSQuery , aText , *matchingParts, matchIndices );
+
+ // Sort matchIndices array. Later handling assumes it to be sorted according to index field.
+ TLinearOrder<TPsMatchLocation> 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<MVPbkContactLink>& 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 T>
+class CleanupResetAndDestroy
+ {
+public:
+ inline static void PushL( T& aRef )
+ { CleanupStack::PushL( TCleanupItem(&ResetAndDestroy,&aRef) ); }
+private:
+ inline static void ResetAndDestroy( TAny *aPtr )
+ { static_cast<T*>(aPtr)->ResetAndDestroy(); }
+ };
+
+template <class T>
+inline void CleanupResetAndDestroyPushL( T& aRef )
+ { CleanupResetAndDestroy<T>::PushL(aRef); }
+
+// End of File
+
--- /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 <e32std.h>
+#include <AknUtils.h>
+
+#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;
+ }
--- /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 <opensystemtrace.h>
+#endif
--- /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
+
--- /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"
+
+
+
--- /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 <eikon.rh>
+#include <avkon.rh>
+#include <avkon.rsg>
+#include <appinfo.rh>
+#include <AiwCommon.rh>
+
+#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
+
--- /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 <appinfo.rh>
+#include <edta.rsg>
+
+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;
+ }
+
--- /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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 88 87.999">
+<g>
+<g>
+<g>
+<g>
+<rect fill="none" width="88" height="87.999"/>
+</g>
+</g>
+<g>
+<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="12.3042" y1="18.3799" x2="63.4113" y2="79.287">
+<stop offset="0" style="stop-color:#B3DDFF"/>
+<stop offset="0.8146" style="stop-color:#084296"/>
+<stop offset="1" style="stop-color:#084296"/>
+</linearGradient>
+<path fill="url(#XMLID_7_)" d="M32.135,7.415L14.363,17.432v23.167c0,0,8.926,15.351,10.468,18.001 c-2.386,1.704-15.44,11.03-15.44,11.03l21.613,12.652c0,0,12.907-9.85,14.71-11.226c1.979,1.109,16.231,9.101,16.231,9.101 l16.664-15.132c0,0-14.066-6.929-16.888-8.318c1.467-3.01,10.531-21.604,10.531-21.604l-22.298-9.59 c0,0-1.486,3.173-2.093,4.467c-2.046-0.88-6.573-2.826-6.573-2.826s-3.713,2.463-5.696,3.778 c-0.327-0.744-0.542-1.233-0.657-1.495c0.007-0.824,0.213-23.72,0.213-23.72L32.135,7.415z"/>
+<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="40.8276" y1="52.1914" x2="16.1997" y2="21.1353">
+<stop offset="0" style="stop-color:#5AA7E0"/>
+<stop offset="1" style="stop-color:#3366CC"/>
+</linearGradient>
+<polygon fill="url(#XMLID_8_)" points="59.051,57.621 69.536,36.111 50.944,28.115 48.852,32.581 41.493,29.418 34.719,33.911 32.932,29.849 33.117,9.157 16.363,18.601 16.363,40.06 27.476,59.169 13.064,69.463 30.856,79.879 45.546,68.669 61.667,77.708 75.089,65.521 "/>
+<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="60.585" y1="31.876" x2="53.8582" y2="45.1125">
+<stop offset="0" style="stop-color:#5AA7E0"/>
+<stop offset="1" style="stop-color:#3366CC"/>
+</linearGradient>
+<polygon fill="url(#XMLID_9_)" points="41.26,48.783 50.944,28.115 69.536,36.111 59.051,57.621 "/>
+<polygon fill="#0046B7" points="16.363,40.06 27.476,59.169 41.26,48.783 32.932,29.849 "/>
+<polygon fill="#3366CC" points="16.363,40.06 16.363,18.601 33.117,9.157 32.932,29.849 "/>
+<polygon fill="#CFECFF" points="26.696,39.23 41.493,29.418 59.523,37.168 45.546,47.954 "/>
+<path fill="#5AA7E0" d="M41.954,55.286"/>
+<polygon fill="#3366CC" points="26.696,39.23 27.476,59.169 45.546,68.669 45.546,47.954 "/>
+<polygon fill="#5AA7E0" points="13.064,69.463 27.476,59.169 45.546,68.669 30.856,79.879 "/>
+<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="29.2085" y1="63.6836" x2="48.7102" y2="56.1976">
+<stop offset="0" style="stop-color:#5AA7E0"/>
+<stop offset="0.0056" style="stop-color:#5AA7E0"/>
+<stop offset="0.85" style="stop-color:#3366CC"/>
+<stop offset="1" style="stop-color:#3366CC"/>
+</linearGradient>
+<polygon fill="url(#XMLID_10_)" points="43.423,46.971 27.476,59.169 45.546,68.669 45.546,47.954 "/>
+<polygon fill="#0046B7" points="45.546,47.954 45.546,68.669 59.051,57.621 59.523,37.168 "/>
+<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="45.3936" y1="59.5186" x2="59.0508" y2="59.5186">
+<stop offset="0" style="stop-color:#0046B7"/>
+<stop offset="1" style="stop-color:#3366CC"/>
+</linearGradient>
+<polygon fill="url(#XMLID_11_)" points="45.394,50.368 45.546,68.669 59.051,57.621 "/>
+<linearGradient id="XMLID_12_" gradientUnits="userSpaceOnUse" x1="60.8945" y1="68.6807" x2="57.2953" y2="58.792">
+<stop offset="0" style="stop-color:#5AA7E0"/>
+<stop offset="0.4101" style="stop-color:#5AA7E0"/>
+<stop offset="1" style="stop-color:#3366CC"/>
+</linearGradient>
+<polygon fill="url(#XMLID_12_)" points="61.667,77.708 45.546,68.669 59.051,57.621 75.089,65.521 "/>
+</g>
+</g>
+</g>
+</svg>
--- /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
+
--- /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
--- /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 <platform_paths.hrh>
+
+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
+
+
--- /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__
--- /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__
--- /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 <aknapp.h>
+
+// 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
+
--- /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 <aknappui.h>
+#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<KEdtaMaxLineWidth> iQueryText;
+
+ // OWN: aiw service handler
+ CAiwServiceHandler* iServiceHandler;
+
+ // own
+ CRepository* iRepository;
+ };
+
+#endif // __EDTA_APPUI_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 <coecntrl.h>
+#include <MPsResultsObserver.h>
+#include <mccaconnection.h>
+#include <dialingextensioninterface.h>
+
+
+// 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<CPsClientData>& aResults, RPointerArray<CPsPattern>& 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<CPsClientData>& aResults, RPointerArray<CPsPattern>& aSeqs);
+
+ //MCCAObserver functions
+ void CCASimpleNotifyL( TNotifyType aType, TInt aReason );
+
+ void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent );
+
+ private:
+
+ CEdtaScreenTextBuffer* iScreenBuffer;
+
+ CPSRequestHandler* iPredictiveContactSearchHandler;
+
+ CVPbkContactManager* iContactManager;
+
+ CVPbkContactStoreUriArray* iContactStoreUriArray;
+
+ RPointerArray<TDesC> iContactDataStores;
+
+ RPointerArray<TDesC> iContactNames;
+
+ RPointerArray<MVPbkContactLink> 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
+
--- /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 <flogger.h>
+_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<const TDesC> 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<const TDesC> 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
--- /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 <akndoc.h>
+
+// 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
+
--- /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 <coecntrl.h>
+#include <dialingextensioninterface.h>
+
+class CDummyListener : public CBase, public MDialingExtensionObserver
+ {
+public:
+
+ CDummyListener();
+ ~CDummyListener();
+
+ void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent );
+ };
+
+#endif /* EDTA_DUMMYLISTENER_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 <aknquerydialog.h>
+
+// 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
+
--- /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 <coecntrl.h>
+#include <eiklabel.h>
+#include <coecntrl.h>
+#include <gdi.h>
+#include <eiksbobs.h>
+
+// 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<const TDesC> 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<HBufC>* iText;
+ CArrayFixFlat<TInt>* 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
--- /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 <bldvariant.hrh>
+
+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__
+
--- /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 <bldvariant.hrh>
+
+S60_APP_RESOURCE(edta)
+
+#endif // __EDTA_RESOURCES_IBY__
+
--- /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 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+ <system_backup/>
+ <restore requires_reboot = "no"/>
+</backup_registration>
--- /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"
+
--- /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"
+
--- /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 <eikstart.h>
+#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 );
+ }
+
--- /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<CApaDocument*>
+ ( CEdtaDocument::NewL( *this ) ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CEdtaApplication::AppDllUid()
+// Returns application UID
+// -----------------------------------------------------------------------------
+//
+TUid CEdtaApplication::AppDllUid() const
+ {
+ // Return the UID for the Edta application
+ return KUidEdtaApp;
+ }
+
+// End of File
+
--- /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 <avkon.hrh>
+#include <aknnotewrappers.h>
+#include <stringloader.h>
+#include <Edta.rsg>
+#include <f32file.h>
+#include <s32file.h>
+#include <aiwservicehandler.h>
+#include <centralrepository.h>
+#include <easydialingcrkeys.h>
+
+#include "edta.pan"
+#include "edta_appui.h"
+#include "edta_appview.h"
+#include "edta.hrh"
+#include "edta_querydialog.h"
+#include <AknQueryDialog.h>
+
+
+
+
+// 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<KEdtaMaxLineWidth> 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
--- /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 <coemain.h>
+#include <aknutils.h>
+#include "edta_appview.h"
+#include "edta_debugprint.h"
+#include "edta_dummylistener.h"
+#include <aknnotewrappers.h>
+
+// AVKON components
+#include <aknlists.h>
+#include <aknpopup.h>
+
+// Predictive search header files.
+#include <CPsSettings.h>
+#include <CPsQuery.h>
+#include <CPsQueryItem.h>
+#include <CPsClientData.h>
+#include <CPsPattern.h>
+#include <CPsRequestHandler.h>
+
+// Virtual phonebook header files.
+#include <VPbkContactStoreUris.h>
+#include <CVPbkContactStoreUriArray.h>
+#include <TVPbkContactStoreUriPtr.h>
+// contains virtual phonebook data fields
+#include <vpbkeng.rsg>
+
+// Phonebook engine API
+#include <CPbkContactEngine.h>
+
+// CCA Launcher header files.
+#include <ccafactory.h>
+#include <mccaparameter.h>
+#include <mccaconnection.h>
+
+
+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<TInt> 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<KEdtaMaxLineWidth> 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<TInt> field_order;
+ CleanupClosePushL(field_order);
+
+ HBufC* default_cdb = VPbkContactStoreUris::DefaultCntDbUri().AllocLC();
+
+ _LIT(KEdtaField, "*");
+ TBuf<KEdtaMaxLineWidth> 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<CPsClientData>& aResult, RPointerArray<CPsPattern>& aSeqs)
+// Searched matching contacts using PCS and shows them on the screen.
+// -----------------------------------------------------------------------------
+//
+void CEdtaAppView::HandlePsResultsUpdate(RPointerArray<CPsClientData>& aResults, RPointerArray<CPsPattern>& 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<CPsClientData>& aResult, RPointerArray<CPsPattern>& aSeqs)
+// Handles predictive search results. A leaving version to be trapped in HandlePsResultsUpdate.
+// -----------------------------------------------------------------------------
+//
+void CEdtaAppView::HandlePredictiveSearchResultL(RPointerArray<CPsClientData>& aResults, RPointerArray<CPsPattern>& /* 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<KEdtaMaxLineWidth> 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<KEdtaMaxLineWidth> 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
+
--- /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 <cntdb.h>
+#include <cntitem.h>
+#include <cntfldst.h>
+#include <cpbkcontactitem.h>
+#include <cpbkcontactengine.h>
+#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;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
--- /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 <CEikAppUi*> ( new ( ELeave ) CEdtaAppUi ) );
+ }
+
+// End of File
+
--- /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 */ )
+ {
+
+ }
--- /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 <avkon.hrh>
+#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<HBufC*> (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
+
--- /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 <coemain.h>
+#include <aknsbasicbackgroundcontrolcontext.h>
+#include <eiksbfrm.h>
+#include <eikenv.h>
+#include <eikdef.h>
+#include <aknappui.h>
+#include <aknutils.h>
+
+
+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<const TDesC> aText,... )
+ {
+ TBuf<KEdtaMaxLineWidth> 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<HBufC>( 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<TInt>( 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
--- /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 <platform_paths.hrh>
+#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
+
--- /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
--- /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 <CEUnitTestSuiteClass.h>
+#include <EUnitDecorators.h>
+#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__
--- /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 <coecntrl.h>
+
+class CDummyParentControl : public CCoeControl
+ {
+public:
+
+ static CDummyParentControl* NewL();
+
+ ~CDummyParentControl();
+
+private:
+
+ CDummyParentControl();
+
+ void ConstructL();
+
+ };
+
+#endif /* DUMMYPARENTCONTROL_H_ */
--- /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 <EUnitMacros.h>
+#include <EUnitDecorators.h>
+#include <f32file.h>
+#include <bautils.h>
+
+#include "easydialingplugin.h"
+#include "dummyparentcontrol.h"
+
+#include <cntdb.h>
+#include <cntitem.h>
+#include <cntfldst.h>
+#include <bautils.h>
+
+
+// - 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 <Tauno P>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 <Lloyd H>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 <Filmi S>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
--- /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 <CEUnitTestSuite.h>
+#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;
+ }
--- /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 <cntdb.h>
+#include <cntitem.h>
+#include <cntfldst.h>
+#include <cpbkcontactitem.h>
+#include <cpbkcontactengine.h>
+
+
+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;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
--- /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();
+ }
+
--- 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"
Binary file phoneuis/vmbx/help/data/xhtml.zip has changed
--- 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"