textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp
branchRCL_3
changeset 18 b1ea1642412e
parent 16 857bebeecec0
child 19 ac7e4d1d9209
equal deleted inserted replaced
16:857bebeecec0 18:b1ea1642412e
   132     delete iBmpRotator;
   132     delete iBmpRotator;
   133     iAccentCmdList.Close();
   133     iAccentCmdList.Close();
   134     }
   134     }
   135 void CPeninputGenericVkbWindow::ConstructL()
   135 void CPeninputGenericVkbWindow::ConstructL()
   136     {
   136     {
       
   137     iHandleRangeShortPress = ETrue;
   137     iBmpRotator = CPeninputSyncBitmapRotator::NewL();
   138     iBmpRotator = CPeninputSyncBitmapRotator::NewL();
   138     iLafMgr = CPeninputGenericVkbLafMgr::NewL();
   139     iLafMgr = CPeninputGenericVkbLafMgr::NewL();
   139     iLafMgr->SetInputModeL(TPluginInputMode (iLayoutContext->LayoutType()));
   140     iLafMgr->SetInputModeL(TPluginInputMode (iLayoutContext->LayoutType()));
   140     CPeninputLayoutWindowExt::ConstructL();
   141     CPeninputLayoutWindowExt::ConstructL();
   141 
   142 
   162         {
   163         {
   163         case EPeninputLayoutEventMultiRange:
   164         case EPeninputLayoutEventMultiRange:
   164             {
   165             {
   165             if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
   166             if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
   166                 {
   167                 {
   167                 PopupChoiceList();
   168                 if ( iHandleRangeShortPress )
       
   169                     {
       
   170                     HandleRangeButtonShortPress();
       
   171                     }
   168                 }
   172                 }
       
   173                 iHandleRangeShortPress = ETrue;
   169             }
   174             }
   170             break;
   175             break;
   171         case EPeninputLayoutEventMultiRangeLongPress:
   176         case EPeninputLayoutEventMultiRangeLongPress:
   172             {
   177             {
   173             const TInt range = CPeninputDataConverter::AnyToInt(
       
   174                 iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
       
   175             
       
   176             const TInt langId = IntContext( EPeninputDataTypeInputLanguage );
       
   177 
       
   178             if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
   178             if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
   179                 {
   179                 {
   180             
   180                 // Before pop up list, cancel down event, and set range button un-highlight.
   181                 if ( range == ERangeAccent )
   181                 TRAP_IGNORE( aCtrl->CancelPointerDownL());
   182                     {
   182                 static_cast<CAknFepCtrlCommonButton*>(aCtrl)->SetHighlight( EFalse );
   183                     if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
   183                 PopupChoiceList();                
   184                         {
       
   185                         ChangeRange(ERangeNative);
       
   186                         }
       
   187                     else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
       
   188                         {
       
   189                         ChangeRange(ERangeEnglish);
       
   190                         }
       
   191                     }
       
   192                 else if ( range == ERangeNative )
       
   193                     {            
       
   194                     if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) )
       
   195                         {
       
   196                         
       
   197                         if ( langId != ELangArabic && langId != ELangFarsi 
       
   198                                 && langId != ELangUrdu && langId != ELangThai )
       
   199                             {
       
   200                                 ChangeRange(ERangeNativeNumber);
       
   201                             }
       
   202                         }
       
   203                     else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
       
   204                         {
       
   205                         if ( langId != ELangArabic && langId != ELangFarsi 
       
   206                                 && langId != ELangUrdu && langId != ELangThai )
       
   207                             {
       
   208                                 ChangeRange(ERangeNumber);
       
   209                             }                       
       
   210                         }
       
   211                     }
       
   212                 else if ( range == ERangeEnglish )
       
   213                     {
       
   214                     if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
       
   215                         {
       
   216                         ChangeRange(ERangeNumber);
       
   217                         }
       
   218                     }
       
   219                 else if ( range == ERangeNativeNumber )
       
   220                     {
       
   221                     if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
       
   222                         {
       
   223                         ChangeRange(ERangeNative);
       
   224                         }                   
       
   225                     else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
       
   226                         {
       
   227                         ChangeRange(ERangeEnglish);
       
   228                         }
       
   229                     }
       
   230                 else if ( range == ERangeNumber )
       
   231                     {
       
   232                     if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
       
   233                         {
       
   234                         ChangeRange(ERangeNative);
       
   235                         }                   
       
   236                     else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
       
   237                         {
       
   238                         ChangeRange(ERangeEnglish);
       
   239                         }                   
       
   240                     }
       
   241 
       
   242                 TRAP_IGNORE( UpdateRangeCtrlsL() );
       
   243                 }
   184                 }
   244             }
   185             }
   245             break;
   186             break;
   246         case EPeninputLayoutVkbEventResetShift: 
   187         case EPeninputLayoutVkbEventResetShift: 
   247             {
   188             {
   261                 }
   202                 }
   262         	}
   203         	}
   263             break;
   204             break;
   264         case EEventChoiceSelected:
   205         case EEventChoiceSelected:
   265             {
   206             {
       
   207             CFepUiBaseCtrl* btn = Control( EPeninutWindowCtrlIdMultiRangeBtn );
       
   208             
       
   209             if ( btn )
       
   210                 {
       
   211                 iHandleRangeShortPress = EFalse;
       
   212                 TRAP_IGNORE( btn->HandlePointerUpEventL( btn->Rect().iBr ) );
       
   213                 iHandleRangeShortPress = ETrue;
       
   214                 }
   266             CFepLayoutChoiceList::SEvent* event = 
   215             CFepLayoutChoiceList::SEvent* event = 
   267                 ( CFepLayoutChoiceList::SEvent* ) aEventData.Ptr();
   216                 ( CFepLayoutChoiceList::SEvent* ) aEventData.Ptr();
   268 
   217 
   269             if ( event->iIndex != KPeninputVkbWndInvalidIndex )
   218             if ( event->iIndex != KPeninputVkbWndInvalidIndex )
   270                 {
   219                 {
  1708     	{
  1657     	{
  1709     	if( iVkbCtrl->IsIrregularKeyBoard() )    	
  1658     	if( iVkbCtrl->IsIrregularKeyBoard() )    	
  1710     		iVkbLayout->ConstructFromIrregularResourceL();
  1659     		iVkbLayout->ConstructFromIrregularResourceL();
  1711     	else
  1660     	else
  1712     		iVkbLayout->ConstructFromNonIrregularResourceL();
  1661     		iVkbLayout->ConstructFromNonIrregularResourceL();
  1713     	SetVkbLayoutSize();
  1662     	
       
  1663     	//SetVkbLayoutSize();
  1714     	
  1664     	
  1715     	if( IsRtoLLanguage( iLanguage ) )
  1665     	if( IsRtoLLanguage( iLanguage ) )
  1716     		{
  1666     		{
  1717 			//Mirror backspace graphic
  1667 			//Mirror backspace graphic
  1718 			HandleButtonResOnLangDirChange( EPeninutWindowCtrlIdBackspaceBtn );    			
  1668 			HandleButtonResOnLangDirChange( EPeninutWindowCtrlIdBackspaceBtn );    			
  2963             icf->MsgBubbleCtrl()->GetText( text );
  2913             icf->MsgBubbleCtrl()->GetText( text );
  2964             icf->ShowBubble( text, icf->MsgBubbleCtrl()->Rect());
  2914             icf->ShowBubble( text, icf->MsgBubbleCtrl()->Rect());
  2965             }
  2915             }
  2966         }
  2916         }
  2967     }
  2917     }
       
  2918 
       
  2919 void CPeninputGenericVkbWindow::HandleRangeButtonShortPress()
       
  2920     {
       
  2921     const TInt range = CPeninputDataConverter::AnyToInt(
       
  2922         iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
       
  2923     
       
  2924     const TInt langId = IntContext( EPeninputDataTypeInputLanguage );
       
  2925 
       
  2926     switch ( langId )
       
  2927         {
       
  2928         case ELangRussian:
       
  2929         case ELangBulgarian:
       
  2930         case ELangUkrainian:
       
  2931             {
       
  2932             range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative );
       
  2933             }
       
  2934             break;
       
  2935 
       
  2936         case ELangArabic:
       
  2937         case ELangFarsi:
       
  2938         case ELangUrdu:
       
  2939             {
       
  2940             range == ERangeNative ? ChangeRange( ERangeNativeNumber ) : ChangeRange( ERangeNative );
       
  2941             }
       
  2942             break;
       
  2943             
       
  2944         case ELangThai:
       
  2945             {
       
  2946             range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); 
       
  2947             }
       
  2948             break;
       
  2949 
       
  2950         case ELangGreek:
       
  2951         case ELangHebrew:
       
  2952             {
       
  2953             range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); 
       
  2954             }
       
  2955             break;
       
  2956         default: // Latin, vietnamese, and other possible languages
       
  2957             {
       
  2958             if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
       
  2959                 {
       
  2960                 if ( range == ERangeNative )
       
  2961                     {
       
  2962                     if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) )
       
  2963                         {
       
  2964                         ChangeRange( ERangeNativeNumber );
       
  2965                         }
       
  2966                     else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
       
  2967                         {
       
  2968                         ChangeRange( ERangeNumber );
       
  2969                         }
       
  2970                     }
       
  2971                 else
       
  2972                     {
       
  2973                     ChangeRange( ERangeNative );
       
  2974                     }
       
  2975                 }
       
  2976             else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
       
  2977                 {
       
  2978                 range == ERangeEnglish ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeEnglish );
       
  2979                 }
       
  2980             }
       
  2981             break;
       
  2982         }
       
  2983     
       
  2984     TRAP_IGNORE( UpdateRangeCtrlsL() );
       
  2985     }
  2968 // End Of File
  2986 // End Of File