--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/phone_application_commands_api/phone_application_commands_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="f8b5e8c2d5c658824216fea358937375" dataversion="2.0">
+ <name>phone_application_commands_api</name>
+ <description>List of phoneapp UI commands. This API is related to telephony_menu_extension_api.</description>
+ <type>c++</type>
+ <collection>phoneapp</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/phone_application_voip_commands_api/phone_application_voip_commands_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="86ebac75a121d58fad9a44aafb0092a4" dataversion="2.0">
+ <name>phone_application_voip_commands_api</name>
+ <description>List of phoneapp VoIP related UI commands. This API is related to telephony_menu_extension_api.</description>
+ <type>c++</type>
+ <collection>phoneapp</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/telephony_bubble_extension_api/telephony_bubble_extension_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="c883bcedfe2b2b72959090b59f8a33a2" dataversion="2.0">
+ <name>telephony_bubble_extension_api</name>
+ <description>This API enables customization of call handling UI (call bubbles). Certain indicators and caller image can be replaced with plug-in based implementation.</description>
+ <type>c++</type>
+ <collection>phoneuis</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.2"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/telephony_logging_extension_api/telephony_logging_extension_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="824866f4d6444f7c1413ddb7c446fff2" dataversion="2.0">
+ <name>telephony_logging_extension_api</name>
+ <description>This plug-in API enables manipulation of telephony event logging.</description>
+ <type>c++</type>
+ <collection>phoneengine</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/telephony_matching_extension_api/telephony_matching_extension_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="97e5b7b32efc3e749f51b863ac60acc0" dataversion="2.0">
+ <name>telephony_matching_extension_api</name>
+ <description>This plug-in API enables manipulation of telephony contact matching.</description>
+ <type>c++</type>
+ <collection>phoneengine</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/telephony_mediator_api/telephony_mediator_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="d195ea66b9998dedd678827e31db6bcd" dataversion="2.0">
+ <name>telephony_mediator_api</name>
+ <description>This mediator API can be used to: end calls, mute/unmute microphone and get call status information.</description>
+ <type>c++</type>
+ <collection>phoneapp</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/telephony_menu_extension_api/telephony_menu_extension_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="1bc03b12f63ce66ce85a12aa6418f5fe" dataversion="2.0">
+ <name>telephony_menu_extension_api</name>
+ <description>This plug-in API enables customization of phoneapp menus.</description>
+ <type>c++</type>
+ <collection>phoneapp</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phone_plat/video_telephony_mediator_api/video_telephony_mediator_api.metaxml Wed Jun 09 09:41:11 2010 +0300
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="48cd1f332053377c8039bd5aec60154d" dataversion="2.0">
+ <name>video_telephony_mediator_api</name>
+ <description>Video telephony specific mediator service. Used by video telephony.</description>
+ <type>c++</type>
+ <collection>phoneapp</collection>
+ <libs/>
+ <release category="platform" sinceversion="5.0"/>
+ <attributes>
+ <htmldocprovided>no</htmldocprovided>
+ <adaptation>no</adaptation>
+ </attributes>
+</api>
--- a/phoneapp/phoneuicontrol/group/phoneuicontrol.mmp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuicontrol/group/phoneuicontrol.mmp Wed Jun 09 09:41:11 2010 +0300
@@ -102,3 +102,5 @@
LIBRARY starterclient.lib
LIBRARY phonemediatorcenter.lib
+
+LIBRARY peninputclient.lib
--- a/phoneapp/phoneuicontrol/inc/cphonekeyeventforwarder.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuicontrol/inc/cphonekeyeventforwarder.h Wed Jun 09 09:41:11 2010 +0300
@@ -22,6 +22,8 @@
// INCLUDES
#include <bldvariant.hrh> //Feature flags
#include <coecntrl.h>
+#include <peninputsrveventhandler.h>
+#include <peninputclient.h>
// FORWARD DECLARATIONS
class MPhoneStateMachine;
@@ -38,7 +40,8 @@
*
*/
class CPhoneKeyEventForwarder
- : public CCoeControl
+ : public CCoeControl,
+ public MPenUiActivationHandler
{
public: // Constructors and destructor
@@ -115,6 +118,17 @@
const TKeyEvent& aKeyEvent,
TEventCode aType );
+ /**
+ * @see MPenUiActivationHandler
+ */
+ void OnPeninputUiDeactivated();
+
+ /**
+ * @see MPenUiActivationHandler
+ */
+ void OnPeninputUiActivated();
+
+
private:
/**
@@ -271,6 +285,16 @@
* Needed to detect situations where key up event is handled before key event.
*/
TBool iExpectKeyUpEvent;
+
+ /**
+ * Server that sends events via callback when the virtual keyboard is opened/closed.
+ */
+ RPeninputServer iPeninputServer;
+
+ /**
+ * Status of virtual keyboard.
+ */
+ TBool iVirtualKeyBoardOpen;
};
#endif // CPHONEKEYEVENTFORWARDER_H
--- a/phoneapp/phoneuicontrol/src/cphonekeyeventforwarder.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonekeyeventforwarder.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -22,6 +22,7 @@
#include <bldvariant.hrh>
#include <featmgr.h>
#include <PtiDefs.h>
+#include <AknUtils.h>
#include "mphonestatemachine.h"
#include "mphonekeyeventhandler.h"
@@ -79,6 +80,13 @@
{
__LOGMETHODSTARTEND( EPhoneControl, "CPhoneKeyEventForwarder::~CPhoneKeyEventForwarder");
+ if ( AknLayoutUtils::PenEnabled() )
+ {
+ iPeninputServer.RemovePenUiActivationHandler( this );
+ }
+
+ iPeninputServer.Close();
+
if ( iEikonEnv )
{
iEikonEnv->EikAppUi()->RemoveFromStack( this );
@@ -227,6 +235,13 @@
static_cast<CDialer*>( ptrParam.Pointer() );
iQwertyHandler->AddQwertyModeObserverL( *qwertyObserver );
+
+ if ( AknLayoutUtils::PenEnabled() )
+ {
+ User::LeaveIfError( iPeninputServer.Connect() );
+ iPeninputServer.AddPenUiActivationHandler( this, EPluginInputModeAll );
+ iVirtualKeyBoardOpen = iPeninputServer.IsVisible();
+ }
}
// -----------------------------------------------------------------------------
@@ -419,6 +434,32 @@
return EKeyWasNotConsumed;
}
+// ---------------------------------------------------------------------------
+// CPhoneKeyEventForwarder::OnPeninputUiDeactivated
+//
+// Gets called when the virtual keyboard editor is closed.
+// ---------------------------------------------------------------------------
+//
+void CPhoneKeyEventForwarder::OnPeninputUiDeactivated()
+ {
+ __LOGMETHODSTARTEND( EPhoneControl,
+ "CPhoneKeyEventForwarder::OnPeninputUiDeactivated");
+ iVirtualKeyBoardOpen = EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneKeyEventForwarder::OnPeninputUiActivated
+//
+// Gets called when the virtual keyboard editor is opened.
+// ---------------------------------------------------------------------------
+//
+void CPhoneKeyEventForwarder::OnPeninputUiActivated()
+ {
+ __LOGMETHODSTARTEND( EPhoneControl,
+ "CPhoneKeyEventForwarder::OnPeninputUiActivated");
+ iVirtualKeyBoardOpen = ETrue;
+ }
+
// -----------------------------------------------------------
// CPhoneKeyEventForwarder::HandleEventKeyDownBeforeControlStackL
// -----------------------------------------------------------
@@ -457,6 +498,11 @@
!IsKeySimulatedByTouchDialer( aKeyEvent ) &&
iQwertyHandler->IsQwertyInput() &&
iViewCommandHandle->HandleCommandL( EPhoneViewIsNumberEntryNumericMode ) != EPhoneViewResponseSuccess;
+
+ // Prevent long tap functionality for key events coming from virtual touch keyboard.
+ // Virtual touch keyboard has own editing functionality for long presses, and telephony
+ // should not add conflicting behaviour on top of that.
+ preventLongTap = preventLongTap || iVirtualKeyBoardOpen;
if ( !preventLongTap )
{
--- a/phoneapp/phoneuicontrol/src/cphonestate.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestate.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -1359,6 +1359,14 @@
}
}
+ if( NumberEntryManagerL()->IsNumberEntryUsedL() )
+ {
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetIncallBubbleTrue );
+ }
+ else
+ {
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetIncallBubbleFalse );
+ }
}
// -----------------------------------------------------------
@@ -1380,6 +1388,8 @@
{
CloseCustomizedDialerL();
}
+
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewSetIncallBubbleTrue );
}
// ---------------------------------------------------------
// CPhoneState::HandleIdleForegroundEventL
--- a/phoneapp/phoneuicontrol/src/cphonestateidle.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestateidle.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -301,7 +301,16 @@
}
else
{
- HandleCommandL( EPhoneCmdOptions );
+ TPhoneCmdParamInteger numberEntryCountParam;
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewGetNumberEntryCount,
+ &numberEntryCountParam );
+
+ TInt neLength( numberEntryCountParam.Integer() );
+ if ( neLength > 0 )
+ {
+ HandleSendCommandL();
+ }
}
}
break;
--- a/phoneapp/phoneuicontrol/src/cphonestateincall.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestateincall.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -154,8 +154,17 @@
}
else
{
- HandleCommandL( EPhoneCmdOptions );
- }
+ TPhoneCmdParamInteger numberEntryCountParam;
+ iViewCommandHandle->ExecuteCommandL(
+ EPhoneViewGetNumberEntryCount,
+ &numberEntryCountParam );
+
+ TInt neLength( numberEntryCountParam.Integer() );
+ if ( neLength > 0 )
+ {
+ HandleCommandL( EPhoneNumberAcqCmdSendCommand );
+ }
+ }
}
break;
#endif
--- a/phoneapp/phoneuistates/inc/cphoneerrormessageshandler.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuistates/inc/cphoneerrormessageshandler.h Wed Jun 09 09:41:11 2010 +0300
@@ -109,6 +109,11 @@
* Return ETrue if video call.
*/
TBool IsVideoCall( const TInt aCallId ) const;
+
+ /**
+ * Return ETrue if voice call.
+ */
+ TBool IsVoiceCall( const TInt aCallId ) const;
protected:
--- a/phoneapp/phoneuistates/src/cphoneconference.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphoneconference.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -17,6 +17,7 @@
// INCLUDES
+#include <ScreensaverInternalPSKeys.h>
#include <eikmenub.h>
#include <eikenv.h>
#include <StringLoader.h>
@@ -41,6 +42,7 @@
#include "tphonecmdparamcallstatedata.h"
#include "cphonekeys.h"
#include "phonelogger.h"
+#include "cphonepubsubproxy.h"
// ================= MEMBER FUNCTIONS =======================
@@ -81,6 +83,10 @@
iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
&globalNotifierParam );
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverAllowed );
DefineAndSetHoldFlagL();
@@ -461,7 +467,12 @@
EPhoneViewGetCallIdByState, &callStateData );
if( callStateData.CallId() > KErrNotFound )
- {
+ {
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverNotAllowed );
+
UpdateCbaL( EPhoneCallHandlingCallWaitingCBA );
iStateMachine->ChangeState( EPhoneStateWaitingInSingle );
}
@@ -839,6 +850,11 @@
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneConference::HandleDiallingL()");
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverNotAllowed );
+
BeginUiUpdateLC();
CloseSelectionListL();
@@ -922,6 +938,11 @@
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneConference::HandleIncomingL()");
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverNotAllowed );
+
BeginUiUpdateLC();
// Hide the number entry if it exists
--- a/phoneapp/phoneuistates/src/cphoneemergency.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphoneemergency.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -172,11 +172,11 @@
CPhoneGsmInCall::HandlePhoneEngineMessageL( aMessage, aCallId );
if ( iStateMachine->PhoneEngineInfo()->CallState( KPEEmergencyCallId ) == EPEStateDialing )
{
- TPhoneCmdParamBoolean isProgressNoteVisible;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsProgressNoteVisible,
- &isProgressNoteVisible );
+ TPhoneCmdParamBoolean isNoteVisible;
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsNoteVisible,
+ &isNoteVisible );
- if ( !isProgressNoteVisible.Boolean() )
+ if ( !isNoteVisible.Boolean() )
{
ShowNoteL( EPhoneEmergencyConnectWaitNote );
UpdateSetupCbaL();
@@ -667,15 +667,6 @@
switch( aCommand )
{
- case EPhoneInCallCmdDtmfManualQuery:
- if ( iStateMachine->PhoneEngineInfo()->CallState( KPEEmergencyCallId ) == EPEStateDialing )
- {
- // Remove emergency connecting note
- iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
- }
- commandStatus = CPhoneGsmInCall::HandleCommandL( aCommand );
- break;
-
case EPhoneDtmfDialerExit: // fall through
case EPhoneDtmfDialerCancel:
{
@@ -683,11 +674,11 @@
{
CloseDTMFEditorL();
- TPhoneCmdParamBoolean isProgressNoteVisible;
- iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsProgressNoteVisible,
- &isProgressNoteVisible );
+ TPhoneCmdParamBoolean isNoteVisible;
+ iViewCommandHandle->ExecuteCommandL( EPhoneViewGetIsNoteVisible,
+ &isNoteVisible );
- if ( !isProgressNoteVisible.Boolean() )
+ if ( !isNoteVisible.Boolean() )
{
ShowNoteL( EPhoneEmergencyConnectWaitNote );
UpdateSetupCbaL();
--- a/phoneapp/phoneuistates/src/cphoneerrormessageshandler.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphoneerrormessageshandler.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -383,6 +383,10 @@
{
SendGlobalInfoNoteL( EPhoneNoteCalledNumberHasBarredIncomingCalls );
}
+ else if ( IsVoiceCall( aErrorInfo.iCallId ))
+ {
+ SendGlobalWarningNoteL( EPhoneNoteCallInfoCauseValue21 );
+ }
break;
case ECCPErrorMovedPermanently:
@@ -578,4 +582,23 @@
->CallType( aCallId )== EPECallTypeVideo );
}
+// -----------------------------------------------------------
+// CPhoneErrorMessagesHandler::IsVoiceCall
+// -----------------------------------------------------------
+//
+TBool CPhoneErrorMessagesHandler::IsVoiceCall( const TInt aCallId ) const
+ {
+ __LOGMETHODSTARTEND( EPhoneControl, "CPhoneErrorMessagesHandler::IsVoiceCall() ");
+
+ if( aCallId == KErrNotFound )
+ {
+ // Illegal call id, check call type command
+ return ( iStateMachine->PhoneEngineInfo()->CallTypeCommand()
+ == EPECallTypeCSVoice );
+ }
+
+ return ( iStateMachine->PhoneEngineInfo()
+ ->CallType( aCallId )== EPECallTypeCSVoice );
+ }
+
// End of File
--- a/phoneapp/phoneuistates/src/cphonesinglecall.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonesinglecall.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -27,6 +27,7 @@
#include <connect/sbdefs.h>
#include <videotelcontrolmediatorapi.h>
#include <MediatorDomainUIDs.h>
+#include <ScreensaverInternalPSKeys.h>
#include "cphonesinglecall.h"
#include "tphonecmdparamstring.h"
@@ -114,6 +115,10 @@
iCallId = callStateData.CallId();
iViewCommandHandle->ExecuteCommandL( EPhoneViewSetHoldFlag, &holdFlag );
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverAllowed );
// Update phone number availability for menu use
PhoneNumberAvailableInPhoneEngineL( callStateData.CallId() );
@@ -494,6 +499,11 @@
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleCall::HandleIncomingL()");
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverNotAllowed );
+
BeginUiUpdateLC();
// Hide the number entry if it exists
@@ -608,6 +618,11 @@
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneSingleCall::HandleDiallingL()");
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverNotAllowed );
+
BeginUiUpdateLC();
SetNumberEntryVisibilityL(EFalse);
--- a/phoneapp/phoneuistates/src/cphonetwosingles.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphonetwosingles.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -17,6 +17,7 @@
// INCLUDES
+#include <ScreensaverInternalPSKeys.h>
#include <eikmenub.h>
#include <eikenv.h>
#include <StringLoader.h>
@@ -39,6 +40,7 @@
#include "tphonecmdparamcallstatedata.h"
#include "phonestatedefinitionsgsm.h"
#include "phonelogger.h"
+#include "cphonepubsubproxy.h"
// ================= MEMBER FUNCTIONS =======================
@@ -78,6 +80,11 @@
globalNotifierParam.SetBoolean( EFalse );
iViewCommandHandle->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
&globalNotifierParam );
+
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverAllowed );
}
// -----------------------------------------------------------
@@ -389,6 +396,11 @@
__LOGMETHODSTARTEND( EPhoneUIStates,
"CPhoneTwoSingles::HandleIncomingL()");
+ CPhonePubSubProxy::Instance()->ChangePropertyValue(
+ KPSUidScreenSaver,
+ KScreenSaverAllowScreenSaver,
+ EPhoneScreensaverNotAllowed );
+
BeginUiUpdateLC();
// Hide the number entry if it exists
--- a/phoneapp/phoneuiutils/inc/phonerssbase.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiutils/inc/phonerssbase.h Wed Jun 09 09:41:11 2010 +0300
@@ -347,6 +347,7 @@
EPhoneNoteNoService,
EPhoneNoteCallInfoCauseValue16,
EPhoneNoteCallInfoCauseValue18,
+ EPhoneNoteCallInfoCauseValue21,
EPhoneNoteCallInfoCauseValue22,
EPhoneNoteCallInfoCauseValue34,
EPhoneNoteCallInfoCauseValue38,
--- a/phoneapp/phoneuiutils/src/cphoneresourceresolverbase.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiutils/src/cphoneresourceresolverbase.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -1443,7 +1443,11 @@
case EPhoneNoteCalledNumberHasBarredIncomingCalls:
retVal = R_NOTE_CALLED_NUMBER_HAS_BARRED_INCOMING_CALLS;
break;
-
+
+ case EPhoneNoteCallInfoCauseValue21:
+ retVal = R_CALL_INFO_CAUSE_VALUE21;
+ break;
+
case EPhoneNoteCallInfoCauseValue22:
retVal = R_CALL_INFO_CAUSE_VALUE22;
break;
--- a/phoneapp/phoneuiview/group/phoneuiview.mmp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/group/phoneuiview.mmp Wed Jun 09 09:41:11 2010 +0300
@@ -171,3 +171,5 @@
LIBRARY serviceprovidersettings.lib
LIBRARY musmanagerclient.lib
+
+LIBRARY aknskinsrv.lib
--- a/phoneapp/phoneuiview/inc/cphoneviewcontroller.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/inc/cphoneviewcontroller.h Wed Jun 09 09:41:11 2010 +0300
@@ -24,6 +24,7 @@
#include <e32base.h>
#include <cntdef.h>
#include <cphcntspeeddialmonitor.h>
+#include <AknsSrvClient.h>
#include "mphoneviewcommandhandle.h"
#include "cphonerecoverysystem.h"
@@ -89,8 +90,9 @@
public MPhoneStatusPaneObserver,
public MPhoneViewBlockingDialogObserver,
public MNumberEntryObserver,
- public MPhoneSecurityModeChangeObserver,
- public MPhoneViewControllerObserver
+ public MPhoneSecurityModeChangeObserver,
+ public MPhoneViewControllerObserver,
+ public MAknsSkinChangeObserver
{
public: // Constructors and destructor
@@ -664,6 +666,33 @@
*/
static void EffectCleanup(TAny* aThis );
+ private:
+ /**
+ * Called by the skin server when skin content is changed and the
+ * connected client wants to be informed.
+ *
+ * @see MAknsSkinChangeObserver
+ */
+ void SkinContentChanged();
+
+ /**
+ * Called by the skin server to indicate that the current skin
+ * configuration has changed.
+ *
+ * @see MAknsSkinChangeObserver
+ */
+ void SkinConfigurationChanged(
+ const TAknsSkinStatusConfigurationChangeReason aReason );
+
+ /**
+ * Called by the skin server to indicate that the available
+ * skin packages have changed.
+ *
+ * @see MAknsSkinChangeObserver
+ */
+ void SkinPackageChanged(
+ const TAknsSkinStatusPackageChangeReason aReason );
+
private: // Data
CPhoneView* iPhoneView;
@@ -812,6 +841,9 @@
TBool iNeedToReturnToForegroundAppAfterCall;
CAknIncallBubble* iIncallBubble;
+
+ // Server wich sends events about background image changes
+ RAknsSrvSession iSkinServerSession;
};
#endif // CPHONEVIEWCONTROLLER_H
--- a/phoneapp/phoneuiview/inc/mphoneviewcontrollerobserver.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/inc/mphoneviewcontrollerobserver.h Wed Jun 09 09:41:11 2010 +0300
@@ -38,11 +38,6 @@
* Sets incall small bubble´s visibility in special cases.
*/
virtual void AllowInCallBubbleInSpecialCases() = 0;
-
- /**
- * Sets Incall bubble´s visibility.
- */
- virtual void SetIncallBubbleVisibility( TBool aIncallBubbleVisible ) = 0;
};
#endif /* MPHONEVIEWCONTROLLEROBSERVER_H_ */
--- a/phoneapp/phoneuiview/inc/phoneviewcommanddefinitions.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/inc/phoneviewcommanddefinitions.h Wed Jun 09 09:41:11 2010 +0300
@@ -233,6 +233,8 @@
EPhoneViewSetConferenceAndWaitingVideo,
EPhoneViewLaunchMultimediaSharing,
EPhoneViewGetQwertyModeObserver,
+ EPhoneViewSetIncallBubbleTrue,
+ EPhoneViewSetIncallBubbleFalse,
EPhoneAmountOfCommands, // Don't remove this, this should always be the last in list.
};
--- a/phoneapp/phoneuiview/src/cphonenote.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/src/cphonenote.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -88,7 +88,9 @@
// Let the command observer process the command
iCommandObserver.ProcessCommandL( aCommand );
- return EFalse; // so that the dialog will not disappear
+ // So that the dialog will not disappear, or must disappear
+ // EPhoneInCallCmdDtmfManualQuery since it can be already deleted.
+ return ( aCommand == EPhoneInCallCmdDtmfManualQuery );
}
// ---------------------------------------------------------
--- a/phoneapp/phoneuiview/src/cphoneview.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/src/cphoneview.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -192,7 +192,6 @@
{
__LOGMETHODSTARTEND(EPhoneUIView, "CPhoneView::ViewDeactivated()");
SetActivatePreviousApp( EFalse );
- iViewControllerObserver->SetIncallBubbleVisibility( EFalse );
DrawDeferred();
}
--- a/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -265,6 +265,8 @@
iAknUiServerClient = CAknSgcClient::AknSrv();
iIncallBubble = CAknIncallBubble::NewL();
+
+ User::LeaveIfError( iSkinServerSession.Connect( this ) );
}
// -----------------------------------------------------------------------------
@@ -290,6 +292,8 @@
{
__LOGMETHODSTARTEND( EPhoneUIView,
"CPhoneViewController::~CPhoneViewController()" );
+ iSkinServerSession.Close();
+
delete iButtonsController;
delete iDialerController;
delete iToolbarController;
@@ -645,6 +649,20 @@
}
break;
+ case EPhoneViewSetIncallBubbleTrue:
+ {
+ // Allow small call bubble, if call handling view is in background and allow for dialer also
+ SetIncallBubbleVisibility( ETrue );
+ }
+ break;
+
+ case EPhoneViewSetIncallBubbleFalse:
+ {
+ // Don't allow small call bubble, if call handling view is not in foreground
+ SetIncallBubbleVisibility( EFalse );
+ }
+ break;
+
default:
__PHONELOG( EBasic, EPhonePhoneapp,
"CPhoneViewController::ExecuteCommandL -> UnKnownMessage !");
@@ -2171,33 +2189,49 @@
iMenuController->SetSecurityMode( aIsEnabled );
if ( iDialer )
{
- CDialingExtensionInterface* easyDialing = iDialer->GetEasyDialingInterface();
- if ( easyDialing )
+ iDialerController->SetRestrictedDialer( aIsEnabled );
+
+ if ( iDialerActive && iSecurityMode != aIsEnabled )
{
+ CDialingExtensionInterface* easyDialing = iDialer->GetEasyDialingInterface();
+ if ( easyDialing )
+ {
+ if ( aIsEnabled )
+ {
+ // Reset the Easy Dialing just in case, this clears the existing matches
+ // when restricted mode is activated
+ easyDialing->Reset();
+ }
+ else
+ {
+ if ( easyDialing->IsEnabled() )
+ {
+ // If Easy Dialing is enabled, set the input from the numeric entry
+ // field for updating the search result when restricted mode is
+ // deactivated.
+ TBuf<KDialerInputMaxChars> buf;
+ iDialer->NumberEntry()->GetTextFromNumberEntry( buf );
+ TRAP_IGNORE( easyDialing->SetInputL( buf ) );
+ }
+ }
+ }
+ iDialer->RelayoutAndDraw();
+
+ // also update cba if security mode changes while dialer is open
+ TPhoneCmdParamInteger integerParam;
if ( aIsEnabled )
{
- // Reset the Easy Dialing just in case, this clears the existing matches
- // when restricted mode is activated
- easyDialing->Reset();
+ iNoteController->DestroyNote();
+ integerParam.SetInteger( CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( EPhoneEmergencyModeNoteCBA ) );
}
else
{
- if ( easyDialing->IsEnabled() )
- {
- // If Easy Dialing is enabled, set the input from the numeric entry
- // field for updating the search result when restricted mode is
- // deactivated.
- TBuf<KDialerInputMaxChars> buf;
- iDialer->NumberEntry()->GetTextFromNumberEntry( buf );
- easyDialing->SetInputL( buf );
- }
+ integerParam.SetInteger( CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( EPhoneNumberAcqCBA ) );
}
+ TRAP_IGNORE( ExecuteCommandL( EPhoneViewUpdateCba, &integerParam ) );
}
- iDialerController->SetRestrictedDialer( aIsEnabled );
- if ( iSecurityMode != aIsEnabled )
- {
- iDialer->RelayoutAndDraw();
- }
}
if ( iSecurityMode != aIsEnabled )
{
@@ -3711,7 +3745,7 @@
iStatusPane->StatusPane().SwapControlL(
TUid::Uid( EEikStatusPaneUidIndic ), iIndiContainer );
}
- else
+ else if ( iPreviousIndicatorControl )
{
//Restore previous indicator control
iStatusPane->StatusPane().SwapControlL(
@@ -4128,7 +4162,36 @@
"CPhoneViewController::SetIncallBubbleVisibility(%d)",
aVisible );
- TRAP_IGNORE( iIncallBubble->SetIncallBubbleAllowedInUsualL( aVisible ) );
+ TRAP_IGNORE( iIncallBubble->SetIncallBubbleAllowedInUsualL( aVisible ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneViewController::SkinContentChanged
+// ---------------------------------------------------------------------------
+//
+void CPhoneViewController::SkinContentChanged()
+ {
+ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneViewController::SkinContentChanged()" );
+ iPhoneView->DrawNow();
}
+// ---------------------------------------------------------------------------
+// CPhoneViewController::SkinConfigurationChanged
+// ---------------------------------------------------------------------------
+//
+void CPhoneViewController::SkinConfigurationChanged( const TAknsSkinStatusConfigurationChangeReason /*aReason*/ )
+ {
+ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneViewController::SkinConfigurationChanged()" );
+ iPhoneView->DrawNow();
+ }
+
+// ---------------------------------------------------------------------------
+// CPhoneViewController::SkinPackageChanged
+// ---------------------------------------------------------------------------
+//
+void CPhoneViewController::SkinPackageChanged( const TAknsSkinStatusPackageChangeReason /*aReason*/ )
+ {
+ __LOGMETHODSTARTEND( EPhoneUIView, "CPhoneViewController::SkinPackageChanged()" );
+ iPhoneView->DrawNow();
+ }
// End of File
--- a/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactmatchstrategy.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneengine/PhoneCntFinder/ContactService/inc/cphcntcontactmatchstrategy.h Wed Jun 09 09:41:11 2010 +0300
@@ -55,12 +55,14 @@
* @param aContactManager Contact manager.
* @param aUriArray Array of contact store URI's used.
* @param aObserver Observer for finding contacts.
+ * @param aMatchFlags A bitset of flags for matching strategy. Has zero or
+ * more CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags flags set.
*/
static CPhCntContactMatchStrategy* NewL(
CVPbkContactManager& aContactManager,
CPhCntContactStoreUris& aContactStoreUris,
MVPbkContactFindObserver& aObserver,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aMatchFlag );
+ TUint32 aMatchFlags );
/**
* Destructor.
@@ -135,13 +137,10 @@
CVPbkContactManager& aContactManager,
CPhCntContactStoreUris& aContactStoreUris,
MVPbkContactFindObserver& aObserver,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aMatchFlag );
+ TUint32 aMatchFlags );
void ConstructL();
-protected: // data
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags iMatchFlag;
-
private: // data
/**
@@ -200,6 +199,18 @@
*/
CCntRawPhoneNumberExtractor* iNumberExtractor;
+protected: // data
+
+ /**
+ * A bitset of matching strategy flags. Changed from
+ * CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags enum to TUint32
+ * in order to support multiple flags, as in
+ * CVPbkPhoneNumberMatchStrategy::TConfig.
+ *
+ * Protected because a unit test class derives from this class.
+ */
+ TUint32 iMatchFlags;
+
};
--- a/phoneengine/PhoneCntFinder/ContactService/src/CPhCntContactManager.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneengine/PhoneCntFinder/ContactService/src/CPhCntContactManager.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -118,13 +118,16 @@
MVPbkContactFindObserver& aObserver,
TBool aRemoveDuplicates )
{
+ TUint32 dupesMatch =
+ CVPbkPhoneNumberMatchStrategy::EVPbkDuplicatedContactsMatchFlag |
+ CVPbkPhoneNumberMatchStrategy::EVPbkBestMatchingFlag;
+ TUint32 noDupesMatch = CVPbkPhoneNumberMatchStrategy::EVPbkBestMatchingFlag;
+
return CPhCntContactMatchStrategy::NewL(
*iContactManager,
*iContactStoreUris,
aObserver,
- aRemoveDuplicates ?
- CVPbkPhoneNumberMatchStrategy::EVPbkDuplicatedContactsMatchFlag :
- CVPbkPhoneNumberMatchStrategy::EVPbkMatchFlagsNone );
+ aRemoveDuplicates ? dupesMatch : noDupesMatch );
}
// ---------------------------------------------------------------------------
--- a/phoneengine/PhoneCntFinder/ContactService/src/cphcntcontactmatchstrategy.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneengine/PhoneCntFinder/ContactService/src/cphcntcontactmatchstrategy.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -20,11 +20,13 @@
#include <centralrepository.h>
#include <telconfigcrkeys.h>
#include <CVPbkContactStoreUriArray.h>
+#include <cntdb.h> // KBestMatchingPhoneNumbers
#include "cphcntcontactmatchstrategy.h"
#include "cphcntcontactstoreuris.h"
#include "CPhoneRawMatchNumberExtractor.h"
+
// Digit count used to match CS number.
const TInt KPhCntMatchMin = 7;
const TInt KPhCntMatchMax = 11;
@@ -37,11 +39,11 @@
CVPbkContactManager& aContactManager,
CPhCntContactStoreUris& aContactStoreUris,
MVPbkContactFindObserver& aObserver,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aMatchFlag ) :
+ TUint32 aMatchFlags ) :
iContactManager( aContactManager ),
iContactStoreUris( aContactStoreUris ),
iObserver( aObserver ),
- iMatchFlag( aMatchFlag )
+ iMatchFlags( aMatchFlags )
{
iContactStoreUris.SetObserver( *this );
}
@@ -91,14 +93,14 @@
CVPbkContactManager& aContactManager,
CPhCntContactStoreUris& aContactStoreUris,
MVPbkContactFindObserver& aObserver,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aMatchFlag )
+ TUint32 aMatchFlags )
{
CPhCntContactMatchStrategy* self =
new( ELeave ) CPhCntContactMatchStrategy(
aContactManager,
aContactStoreUris,
aObserver,
- aMatchFlag );
+ aMatchFlags );
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -242,10 +244,10 @@
TInt CPhCntContactMatchStrategy::DoCreateMatchStrategy()
{
CVPbkPhoneNumberMatchStrategy::TConfig config(
- iNumberOfDigits,
+ KBestMatchingPhoneNumbers,
*iUriArray,
CVPbkPhoneNumberMatchStrategy::EVPbkSequentialMatch,
- iMatchFlag
+ iMatchFlags
);
TRAPD( err, iMatchStrategy = CVPbkPhoneNumberMatchStrategy::NewL(
config,
--- a/phoneengine/phonemodel/inc/cpemessagehandler.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneengine/phonemodel/inc/cpemessagehandler.h Wed Jun 09 09:41:11 2010 +0300
@@ -593,6 +593,13 @@
* Handle disable service
*/
void HandleDisableService();
+
+ /**
+ * Adds SIM rejected MO CS call to logs.
+ * @param aCallId is the identification number of the call.
+ * @return KErrNone if succesfull
+ */
+ TInt AddSIMRejectedMoCsCallToLog( const TInt aCallId );
private: // New functions
--- a/phoneengine/phonemodel/src/cpemessagehandler.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneengine/phonemodel/src/cpemessagehandler.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -3009,5 +3009,42 @@
mediatorUpdater->UpdateRemotePartyInfo();
}
}
-
+
+// -----------------------------------------------------------------------------
+// CPEMessageHandler::AddSIMRejectedMoCsCallToLog
+// -----------------------------------------------------------------------------
+//
+TInt CPEMessageHandler::AddSIMRejectedMoCsCallToLog( const TInt aCallId )
+ {
+ TInt errorCode( ECCPErrorGeneral );
+
+ errorCode = iCallHandling.GetCallInfo( *iCallInfo, aCallId );
+
+ if ( errorCode == ECCPErrorNone )
+ {
+ TPEState callState;
+ callState = iCallHandling.GetCallState( aCallId );
+ TPECallType callType;
+ callType = iDataStore.CallType( aCallId );
+
+ errorCode = ECCPErrorNotFound;
+
+ if ( EPEStateIdle == callState
+ && EPECallTypeCSVoice == callType )
+ {
+ SetPhoneNumberForCallLogging( aCallId );
+
+ errorCode = UpdateClientInfo( aCallId );
+
+ // Calls have to log also without a contact (ECCPErrorNotFound).
+ if ( errorCode == ECCPErrorNone || errorCode == ECCPErrorNotFound )
+ {
+ // Save the rest of information to EngineInfo.
+ SetLoggingInfo( aCallId, callState );
+ errorCode = iLogHandling.SaveCallEntry( aCallId );
+ }
+ }
+ }
+ return errorCode;
+ }
// End of File
--- a/phoneengine/phonemodel/src/cpephonemodel.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneengine/phonemodel/src/cpephonemodel.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -980,8 +980,15 @@
TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo();
errorInfo.iCallId = aCallId;
errorInfo.iErrorType = EPECcp;
- iEngineMonitor.HandleError( errorInfo );
- }
+
+ if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode )
+ {
+ // Call direction is not set if the call was rejected before Dialing-state
+ iEngineInfo->SetCallDirection( RMobileCall::EMobileOriginated, aCallId );
+ iMessageHandler->AddSIMRejectedMoCsCallToLog( aCallId );
+ }
+ iEngineMonitor.HandleError( errorInfo );
+ }
else if ( message == MEngineMonitor::EPEMessageServiceHandlingError )
{
TEFLOGSTRING(
--- a/phoneuis/dialer/src/cdialernumberentry.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/dialer/src/cdialernumberentry.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -159,9 +159,15 @@
{
DIALER_PRINT("numberentry::SetFocus<");
- CCoeControl::SetFocus( aFocus, aDrawNow );
- iEditor->SetFocus( aFocus );
+ if ( aFocus != IsFocused() )
+ {
+ CCoeControl::SetFocus( aFocus, aDrawNow );
+ }
+ if ( aFocus != iEditor->IsFocused() )
+ {
+ iEditor->SetFocus( aFocus );
+ }
DIALER_PRINT("numberentry::SetFocus>");
}
--- a/phoneuis/easydialing/inc/easydialinglistbox.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/inc/easydialinglistbox.h Wed Jun 09 09:41:11 2010 +0300
@@ -185,7 +185,7 @@
/** Background control context. Owned. */
CAknsFrameBackgroundControlContext* iBGContext;
-
+
/** Pointer to a contact data manager; Not Own. */
CEasyDialingContactDataManager* iContactDataManager;
--- a/phoneuis/easydialing/inc/easydialinglistboxdata.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/inc/easydialinglistboxdata.h Wed Jun 09 09:41:11 2010 +0300
@@ -62,20 +62,15 @@
/**
- * Constructor.
- */
- CEasyDialingListBoxData();
-
- /**
* Destructor
*/
~CEasyDialingListBoxData();
/**
- * Second phase constructor of the class.
+ * Two phased constructor of the class.
* @return Pointer to the instance.
*/
- static CEasyDialingListBoxData* NewL();
+ static CEasyDialingListBoxData* NewL( CCoeEnv& aCoeEnv );
/**
* Draws selected item.
@@ -100,7 +95,7 @@
* @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.
@@ -114,6 +109,14 @@
protected:
+ /**
+ * C++ Constructor
+ */
+ CEasyDialingListBoxData( CCoeEnv& aCoeEnv );
+
+ /**
+ * Second phase constructor
+ */
void ConstructLD();
private:
@@ -150,7 +153,7 @@
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.
@@ -174,7 +177,7 @@
* 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 aNameRectUnMirrored Name rect, after which the icon is drawn
* @param aEffectiveRect The whole listbox item rect. Used for mirroring.
*/
void DrawFavouriteIcon(
@@ -184,6 +187,9 @@
private:
+ /** Control environment */
+ CCoeEnv& iCoeEnv;
+
/** Font to be used showing contact name. Not owned. */
CFont* iContactNameFont;
@@ -198,10 +204,10 @@
/** 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;
--- a/phoneuis/easydialing/inc/easydialingplugin.h Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/inc/easydialingplugin.h Wed Jun 09 09:41:11 2010 +0300
@@ -30,9 +30,6 @@
#include "medcontactorobserver.h"
#include "easydialingcontactdatamanager.h" // for TNameOrder
-// Phonebook engine API
-#include <MVPbkContactStoreListObserver.h>
-
// ListBox Observer API
#include <eiklbo.h>
@@ -78,7 +75,6 @@
* Easy dialing plugin.
*/
class CEasyDialingPlugin : public CDialingExtensionInterface,
- public MVPbkContactStoreListObserver,
public MPsResultsObserver,
public MCCAObserver,
public MEasyDialingCenrepListenerObserver,
@@ -220,27 +216,6 @@
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 );
@@ -446,6 +421,11 @@
*/
void SetInfoLabelColourL();
+ /**
+ * Sets info label visibility.
+ */
+ void SetInfoLabelVisibleL( TBool aVisible );
+
private:
/** Textual version of current search string. */
--- a/phoneuis/easydialing/src/easydialinglistbox.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/src/easydialinglistbox.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -98,7 +98,7 @@
//
CEasyDialingListBox::~CEasyDialingListBox()
{
- delete iBGContext;
+ delete iBGContext;
delete iLongTapDetector;
}
@@ -121,7 +121,7 @@
iBGContext = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrPopupSub,
Rect(), Rect(), EFalse );
-
+
// ContactDataManager is accessed from SizeChanged. If list item size
// changes -> thumbnail size changes
iContactDataManager = aContactDataManager;
@@ -178,7 +178,7 @@
//
void CEasyDialingListBox::CreateItemDrawerL()
{
- CEasyDialingListBoxData* celldata = CEasyDialingListBoxData::NewL();
+ CEasyDialingListBoxData* celldata = CEasyDialingListBoxData::NewL( *iEikonEnv );
CleanupStack::PushL( celldata );
iItemDrawer = new(ELeave) CEasyDialingListBoxItemDrawer(Model(), iEikonEnv->NormalFont(), celldata);
CleanupStack::Pop( celldata );
--- a/phoneuis/easydialing/src/easydialinglistboxdata.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/src/easydialinglistboxdata.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -60,14 +60,14 @@
const TInt KContactNameFontHeightPercent = 35;
// KCompanyNameFontHeightPercent is company name font height relative to list item height.
-const TInt KCompanyNameFontHeightPercent = 30;
+const TInt KCompanyNameFontHeightPercent = 28;
-// KTextBoundingBoxHeightPercent gives the text bounding box height in percentages
+// KTextBoundingBoxHeightPercent gives the text bounding box height in percents
// 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
+// The value is between 0 and 100. 0 means in top part, 50 means in the middle, 100 means in the
// bottom.
const TInt KTextPlacementPercent = 70;
@@ -228,8 +228,8 @@
//
// -----------------------------------------------------------------------------
//
-CEasyDialingListBoxData::CEasyDialingListBoxData() :
-CFormattedCellListBoxData()
+CEasyDialingListBoxData::CEasyDialingListBoxData( CCoeEnv& aCoeEnv ) :
+CFormattedCellListBoxData(), iCoeEnv( aCoeEnv )
{
}
@@ -242,7 +242,7 @@
{
// Release fonts. ReleaseFont function can cope with null pointer
// so we don't need to null check them.
- CWsScreenDevice& screenDev = *( CEikonEnv::Static()->ScreenDevice() );
+ CWsScreenDevice& screenDev = *( iCoeEnv.ScreenDevice() );
screenDev.ReleaseFont( iContactNameFont );
screenDev.ReleaseFont( iCompanyNameFont );
@@ -260,9 +260,9 @@
//
// -----------------------------------------------------------------------------
//
-CEasyDialingListBoxData* CEasyDialingListBoxData::NewL()
+CEasyDialingListBoxData* CEasyDialingListBoxData::NewL( CCoeEnv& aCoeEnv )
{
- CEasyDialingListBoxData* self = new (ELeave) CEasyDialingListBoxData();
+ CEasyDialingListBoxData* self = new (ELeave) CEasyDialingListBoxData( aCoeEnv );
CleanupStack::PushL( self );
self->ConstructLD();
@@ -562,8 +562,8 @@
//
void CEasyDialingListBoxData::DrawFavouriteIcon(
CWindowGc& aGc,
- TRect aNameRectUnMirrored,
- TRect aEffectiveRect) const
+ TRect aNameRectUnMirrored,
+ TRect aEffectiveRect ) const
{
TRect favouriteIconBoundingBox;
@@ -577,7 +577,7 @@
aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
TRect sourceRect( TPoint(0,0), favouriteIconBoundingBox.Size() );
- if( AknsUtils::SkinInstance()->GetCachedItemData(KAknsIIDQgnFsContactsFavorite) )
+ if ( AknsUtils::SkinInstance()->GetCachedItemData(KAknsIIDQgnFsContactsFavorite) )
{
AknsDrawUtils::DrawCachedImage( AknsUtils::SkinInstance(), aGc, sourceRect,
KAknsIIDQgnFsContactsFavorite );
@@ -587,8 +587,8 @@
// 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);
+ aGc.BitBltMasked( favouriteIconBoundingBox.iTl, iFavouriteIcon->Bitmap(),
+ sourceRect, iFavouriteIcon->Mask(), ETrue );
}
}
// -----------------------------------------------------------------------------
@@ -625,7 +625,7 @@
//
void CEasyDialingListBoxData::ObtainFonts( TInt aItemHeight )
{
- CWsScreenDevice& screenDev = *( CEikonEnv::Static()->ScreenDevice() );
+ CWsScreenDevice& screenDev = *( iCoeEnv.ScreenDevice() );
// Release previous fonts. ReleaseFont function can cope with null pointers
// so we don't need to null check them.
@@ -1078,7 +1078,7 @@
aGc.UseFont( aFont );
aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
- while ( TextUtils::ColumnText( textPiece , textPieceIndex, visualBuf, KHighlightSeparatorChar) == KErrNone )
+ while ( TextUtils::ColumnText( textPiece, textPieceIndex, visualBuf, KHighlightSeparatorChar) == KErrNone )
{
if (! DrawPieceOfText( aBoundingBox, xOffset, aGc, textPiece, match, aFont, aColors, aHighLight ))
{
--- a/phoneuis/easydialing/src/easydialinglistboxitemdrawer.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/src/easydialinglistboxitemdrawer.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -123,8 +123,6 @@
transApi->StopDrawing();
}
-// TBool removeicon = (!aItemIsSelected && !ItemMarkReverse()) || (aItemIsSelected && ItemMarkReverse());
-
CEasyDialingListBoxData::TExtendedColors colors;
colors.iText = iTextColor;
colors.iBack = iBackColor;
--- a/phoneuis/easydialing/src/easydialingplugin.cpp Tue May 25 12:41:50 2010 +0300
+++ b/phoneuis/easydialing/src/easydialingplugin.cpp Wed Jun 09 09:41:11 2010 +0300
@@ -61,10 +61,6 @@
// Service provider settings api
#include <spsettingsvoiputils.h>
-// AIW header files
-#include <AiwContactAssignDataTypes.h>
-#include <AiwContactSelectionDataTypes.h>
-
#include <StringLoader.h>
// CCA contactor service.
@@ -136,7 +132,7 @@
TBool IsStrictlyBidirectional( const TDesC& aText );
-static HBufC* AllocWithoutHighlightSeparatorsLC( TDesC& aDesc );
+static HBufC* AllocWithoutHighlightSeparatorsLC( const TDesC& aDesc );
static TBool IsItuTCharacter( TChar aChar );
@@ -195,9 +191,6 @@
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);
@@ -246,11 +239,6 @@
{
iObservers.Reset();
- if ( iContactManager )
- {
- TRAP_IGNORE( iContactManager->ContactStoresL().CloseAll( *this ) );
- }
-
delete iCenrepListener;
delete iContactDataManager;
delete iPredictiveSearchQuery;
@@ -258,7 +246,7 @@
delete iContactStoreUriArray;
iContactDataStores.ResetAndDestroy();
- if (iPredictiveContactSearchHandler)
+ if ( iPredictiveContactSearchHandler )
{
iPredictiveContactSearchHandler->RemoveObserver(this);
}
@@ -278,7 +266,7 @@
delete iContactListBox;
- if (iContactLauncher)
+ if ( iContactLauncher )
{
iContactLauncher->Close();
}
@@ -719,7 +707,7 @@
void CEasyDialingPlugin::FocusChanged( TDrawNow aDrawNow )
{
iContactListBox->SetFocus( IsFocused() );
- if( !IsFocused() )
+ if ( !IsFocused() )
{
// To be on the safe side, cancel async callback and reset input block.
CancelActionLaunchAndInputBlock();
@@ -763,18 +751,12 @@
// However if user empties number entry, then it's feasible to show
// effect.
HideContactListBoxWithEffect();
- iInfoLabelLine1->SetTextL( *iInfoLabelTextLine1 );
- iInfoLabelLine2->SetTextL( *iInfoLabelTextLine2 );
- iInfoLabelLine1->DrawDeferred();
- iInfoLabelLine2->DrawDeferred();
+ SetInfoLabelVisibleL( ETrue );
Reset();
}
else // proper search string
{
- iInfoLabelLine1->SetTextL( KNullDesC );
- iInfoLabelLine2->SetTextL( KNullDesC );
- iInfoLabelLine1->DrawDeferred();
- iInfoLabelLine2->DrawDeferred();
+ SetInfoLabelVisibleL( EFalse );
iSearchString.Copy( aSearchString.Left( iSearchString.MaxLength() ) );
LaunchSearchL();
}
@@ -793,69 +775,6 @@
// -----------------------------------------------------------------------------
-// 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
// -----------------------------------------------------------------------------
@@ -866,10 +785,15 @@
{
Reset();
InformObservers( MDialingExtensionObserver::EEasyDialingDisabled );
+ TRAP_IGNORE( SetInfoLabelVisibleL( EFalse ) );
}
else if ( aValue == 1 )
{
InformObservers( MDialingExtensionObserver::EEasyDialingEnabled );
+ if ( iSearchString.Length() == 0 )
+ {
+ TRAP_IGNORE( SetInfoLabelVisibleL( ETrue ) );
+ }
}
MakeVisible( aValue );
}
@@ -906,6 +830,8 @@
if ( iPredictiveContactSearchHandler )
{
TRAP_IGNORE( SetSortOrderL( iContactDataManager->NameOrder() ) );
+ // Refresh current results if needed
+ TRAP_IGNORE( DoHandleContactsChangedL() );
}
}
@@ -926,7 +852,6 @@
//
void CEasyDialingPlugin::InformContactorEvent( MEDContactorObserver::TEvent aEvent )
{
-
// This callback function simply propagates the events to its own listener.
switch ( aEvent )
{
@@ -958,7 +883,6 @@
//
void CEasyDialingPlugin::Draw( const TRect& /* aRect */ ) const
{
- return;
}
@@ -1054,6 +978,18 @@
void CEasyDialingPlugin::CachingStatus( TCachingStatus& aStatus, TInt& aError )
{
OstTraceExt2( TRACE_NORMAL, CEASYDIALINGPLUGIN_CACHINGSTATUS, "PCS CachingStatus: %d, error: %d", ( TUint )( aStatus ), aError );
+
+ switch ( aStatus )
+ {
+ case ECacheUpdateContactRemoved:
+ case ECacheUpdateContactModified:
+ case ECacheUpdateContactAdded:
+ TRAP_IGNORE( DoHandleContactsChangedL() );
+ break;
+ default:
+ break;
+ }
+
LOGSTRING2("EasyDialingPlugin: PCS CachingStatus: %d, error: %d", aStatus, aError );
}
@@ -1255,17 +1191,6 @@
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 )
@@ -1986,6 +1911,14 @@
//
void CEasyDialingPlugin::HandleGainingForeground()
{
+ if ( iNewSearchNeeded && IsEnabled() )
+ {
+ // 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();
+ }
}
// -----------------------------------------------------------------------------
@@ -2023,19 +1956,29 @@
//
void CEasyDialingPlugin::DoHandleContactsChangedL()
{
- if ( iSearchString.Length() > 0 )
+ if ( iSearchString.Length() > 0 && IsEnabled() )
{
- if ( iContactLauncherActive )
+ CAknAppUi* appUi = static_cast<CAknAppUi*>( iCoeEnv->AppUi() );
+ if ( appUi->IsForeground() )
{
- // Set the flag to make a search when communication launcher exits.
- iNewSearchNeeded = ETrue;
+ // Do new search immediately, if contacts change while we are on the
+ // foreground. This can happen for example if view is switched to
+ // dialer while deletion of multiple contacts is still ongoing or if
+ // PCS takes so long to update the cache that view gets changed
+ // before the update is ready.
+ iContactDataManager->Reload(); // to update thumbnails
+ AsyncActionLaunchL( ELaunchSearch );
}
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 );
+ // Set the flag to make a search when we come back to foreground.
+ // This way, we don't make unnecessary searches when several
+ // contacts are imported or deleted, for example.
+ iNewSearchNeeded = ETrue;
+
+ // Hide previous results so that they won't show up before the
+ // the new search is ready.
+ iContactListBox->MakeVisible( EFalse );
}
}
}
@@ -2129,6 +2072,26 @@
}
}
+// -----------------------------------------------------------------------------
+// CEasyDialingPlugin::SetInfoLabelVisibleL
+// -----------------------------------------------------------------------------
+//
+void CEasyDialingPlugin::SetInfoLabelVisibleL( TBool aVisible )
+ {
+ if ( aVisible )
+ {
+ iInfoLabelLine1->SetTextL( *iInfoLabelTextLine1 );
+ iInfoLabelLine2->SetTextL( *iInfoLabelTextLine2 );
+ }
+ else
+ {
+ iInfoLabelLine1->SetTextL( KNullDesC );
+ iInfoLabelLine2->SetTextL( KNullDesC );
+ }
+ iInfoLabelLine1->DrawDeferred();
+ iInfoLabelLine2->DrawDeferred();
+ }
+
/*
* ==============================================================================
@@ -2319,7 +2282,7 @@
// removed.
// -----------------------------------------------------------------------------
//
-static HBufC* AllocWithoutHighlightSeparatorsLC( TDesC& aDesc )
+static HBufC* AllocWithoutHighlightSeparatorsLC( const TDesC& aDesc )
{
HBufC* resultDesc = aDesc.AllocLC();
TPtr ptr = resultDesc->Des();