phoneapp/phoneuicontrol/src/cphonekeyeventforwarder.cpp
branchRCL_3
changeset 39 b8d67d6176f5
parent 31 ba54057fe027
child 44 3c221667e687
equal deleted inserted replaced
34:b68fcd923911 39:b8d67d6176f5
    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(