20 #include <eikenv.h> |
20 #include <eikenv.h> |
21 #include <eikappui.h> |
21 #include <eikappui.h> |
22 #include <bldvariant.hrh> |
22 #include <bldvariant.hrh> |
23 #include <featmgr.h> |
23 #include <featmgr.h> |
24 #include <PtiDefs.h> |
24 #include <PtiDefs.h> |
|
25 #include <AknUtils.h> |
25 |
26 |
26 #include "mphonestatemachine.h" |
27 #include "mphonestatemachine.h" |
27 #include "mphonekeyeventhandler.h" |
28 #include "mphonekeyeventhandler.h" |
28 #include "cphonekeys.h" |
29 #include "cphonekeys.h" |
29 #include "cphonekeyeventforwarder.h" |
30 #include "cphonekeyeventforwarder.h" |
77 // |
78 // |
78 CPhoneKeyEventForwarder::~CPhoneKeyEventForwarder() |
79 CPhoneKeyEventForwarder::~CPhoneKeyEventForwarder() |
79 { |
80 { |
80 __LOGMETHODSTARTEND( EPhoneControl, "CPhoneKeyEventForwarder::~CPhoneKeyEventForwarder"); |
81 __LOGMETHODSTARTEND( EPhoneControl, "CPhoneKeyEventForwarder::~CPhoneKeyEventForwarder"); |
81 |
82 |
|
83 if ( AknLayoutUtils::PenEnabled() ) |
|
84 { |
|
85 iPeninputServer.RemovePenUiActivationHandler( this ); |
|
86 } |
|
87 |
|
88 iPeninputServer.Close(); |
|
89 |
82 if ( iEikonEnv ) |
90 if ( iEikonEnv ) |
83 { |
91 { |
84 iEikonEnv->EikAppUi()->RemoveFromStack( this ); |
92 iEikonEnv->EikAppUi()->RemoveFromStack( this ); |
85 } |
93 } |
86 delete iLongPressKeyEventTimer; |
94 delete iLongPressKeyEventTimer; |
225 iViewCommandHandle->ExecuteCommand( EPhoneViewGetQwertyModeObserver, &ptrParam ); |
233 iViewCommandHandle->ExecuteCommand( EPhoneViewGetQwertyModeObserver, &ptrParam ); |
226 CDialer* qwertyObserver = |
234 CDialer* qwertyObserver = |
227 static_cast<CDialer*>( ptrParam.Pointer() ); |
235 static_cast<CDialer*>( ptrParam.Pointer() ); |
228 |
236 |
229 iQwertyHandler->AddQwertyModeObserverL( *qwertyObserver ); |
237 iQwertyHandler->AddQwertyModeObserverL( *qwertyObserver ); |
|
238 |
|
239 if ( AknLayoutUtils::PenEnabled() ) |
|
240 { |
|
241 User::LeaveIfError( iPeninputServer.Connect() ); |
|
242 iPeninputServer.AddPenUiActivationHandler( this, EPluginInputModeAll ); |
|
243 iVirtualKeyBoardOpen = iPeninputServer.IsVisible(); |
|
244 } |
230 } |
245 } |
231 |
246 |
232 // ----------------------------------------------------------------------------- |
247 // ----------------------------------------------------------------------------- |
233 // CPhoneKeyEventForwarder::IsAlphaNumericKey |
248 // CPhoneKeyEventForwarder::IsAlphaNumericKey |
234 // ----------------------------------------------------------------------------- |
249 // ----------------------------------------------------------------------------- |
417 } |
432 } |
418 |
433 |
419 return EKeyWasNotConsumed; |
434 return EKeyWasNotConsumed; |
420 } |
435 } |
421 |
436 |
|
437 // --------------------------------------------------------------------------- |
|
438 // CPhoneKeyEventForwarder::OnPeninputUiDeactivated |
|
439 // |
|
440 // Gets called when the virtual keyboard editor is closed. |
|
441 // --------------------------------------------------------------------------- |
|
442 // |
|
443 void CPhoneKeyEventForwarder::OnPeninputUiDeactivated() |
|
444 { |
|
445 __LOGMETHODSTARTEND( EPhoneControl, |
|
446 "CPhoneKeyEventForwarder::OnPeninputUiDeactivated"); |
|
447 iVirtualKeyBoardOpen = EFalse; |
|
448 } |
|
449 |
|
450 // --------------------------------------------------------------------------- |
|
451 // CPhoneKeyEventForwarder::OnPeninputUiActivated |
|
452 // |
|
453 // Gets called when the virtual keyboard editor is opened. |
|
454 // --------------------------------------------------------------------------- |
|
455 // |
|
456 void CPhoneKeyEventForwarder::OnPeninputUiActivated() |
|
457 { |
|
458 __LOGMETHODSTARTEND( EPhoneControl, |
|
459 "CPhoneKeyEventForwarder::OnPeninputUiActivated"); |
|
460 iVirtualKeyBoardOpen = ETrue; |
|
461 } |
|
462 |
422 // ----------------------------------------------------------- |
463 // ----------------------------------------------------------- |
423 // CPhoneKeyEventForwarder::HandleEventKeyDownBeforeControlStackL |
464 // CPhoneKeyEventForwarder::HandleEventKeyDownBeforeControlStackL |
424 // ----------------------------------------------------------- |
465 // ----------------------------------------------------------- |
425 // |
466 // |
426 TKeyResponse CPhoneKeyEventForwarder::HandleEventKeyDownBeforeControlStackL( |
467 TKeyResponse CPhoneKeyEventForwarder::HandleEventKeyDownBeforeControlStackL( |
455 // instead. |
496 // instead. |
456 TBool preventLongTap = |
497 TBool preventLongTap = |
457 !IsKeySimulatedByTouchDialer( aKeyEvent ) && |
498 !IsKeySimulatedByTouchDialer( aKeyEvent ) && |
458 iQwertyHandler->IsQwertyInput() && |
499 iQwertyHandler->IsQwertyInput() && |
459 iViewCommandHandle->HandleCommandL( EPhoneViewIsNumberEntryNumericMode ) != EPhoneViewResponseSuccess; |
500 iViewCommandHandle->HandleCommandL( EPhoneViewIsNumberEntryNumericMode ) != EPhoneViewResponseSuccess; |
|
501 |
|
502 // Prevent long tap functionality for key events coming from virtual touch keyboard. |
|
503 // Virtual touch keyboard has own editing functionality for long presses, and telephony |
|
504 // should not add conflicting behaviour on top of that. |
|
505 preventLongTap = preventLongTap || iVirtualKeyBoardOpen; |
460 |
506 |
461 if ( !preventLongTap ) |
507 if ( !preventLongTap ) |
462 { |
508 { |
463 // Start long press timer |
509 // Start long press timer |
464 iLongPressKeyEventTimer->After( |
510 iLongPressKeyEventTimer->After( |