textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp
branchRCL_3
changeset 18 b1ea1642412e
parent 16 857bebeecec0
child 19 ac7e4d1d9209
--- a/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp	Mon Jun 21 16:02:35 2010 +0300
+++ b/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp	Thu Jul 15 19:01:13 2010 +0300
@@ -134,6 +134,7 @@
     }
 void CPeninputGenericVkbWindow::ConstructL()
     {
+    iHandleRangeShortPress = ETrue;
     iBmpRotator = CPeninputSyncBitmapRotator::NewL();
     iLafMgr = CPeninputGenericVkbLafMgr::NewL();
     iLafMgr->SetInputModeL(TPluginInputMode (iLayoutContext->LayoutType()));
@@ -164,82 +165,22 @@
             {
             if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
                 {
-                PopupChoiceList();
+                if ( iHandleRangeShortPress )
+                    {
+                    HandleRangeButtonShortPress();
+                    }
                 }
+                iHandleRangeShortPress = ETrue;
             }
             break;
         case EPeninputLayoutEventMultiRangeLongPress:
             {
-            const TInt range = CPeninputDataConverter::AnyToInt(
-                iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
-            
-            const TInt langId = IntContext( EPeninputDataTypeInputLanguage );
-
             if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn )
                 {
-            
-                if ( range == ERangeAccent )
-                    {
-                    if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
-                        {
-                        ChangeRange(ERangeNative);
-                        }
-                    else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
-                        {
-                        ChangeRange(ERangeEnglish);
-                        }
-                    }
-                else if ( range == ERangeNative )
-                    {            
-                    if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) )
-                        {
-                        
-                        if ( langId != ELangArabic && langId != ELangFarsi 
-                                && langId != ELangUrdu && langId != ELangThai )
-                            {
-                                ChangeRange(ERangeNativeNumber);
-                            }
-                        }
-                    else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
-                        {
-                        if ( langId != ELangArabic && langId != ELangFarsi 
-                                && langId != ELangUrdu && langId != ELangThai )
-                            {
-                                ChangeRange(ERangeNumber);
-                            }                       
-                        }
-                    }
-                else if ( range == ERangeEnglish )
-                    {
-                    if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
-                        {
-                        ChangeRange(ERangeNumber);
-                        }
-                    }
-                else if ( range == ERangeNativeNumber )
-                    {
-                    if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
-                        {
-                        ChangeRange(ERangeNative);
-                        }                   
-                    else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
-                        {
-                        ChangeRange(ERangeEnglish);
-                        }
-                    }
-                else if ( range == ERangeNumber )
-                    {
-                    if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
-                        {
-                        ChangeRange(ERangeNative);
-                        }                   
-                    else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
-                        {
-                        ChangeRange(ERangeEnglish);
-                        }                   
-                    }
-
-                TRAP_IGNORE( UpdateRangeCtrlsL() );
+                // Before pop up list, cancel down event, and set range button un-highlight.
+                TRAP_IGNORE( aCtrl->CancelPointerDownL());
+                static_cast<CAknFepCtrlCommonButton*>(aCtrl)->SetHighlight( EFalse );
+                PopupChoiceList();                
                 }
             }
             break;
@@ -263,6 +204,14 @@
             break;
         case EEventChoiceSelected:
             {
+            CFepUiBaseCtrl* btn = Control( EPeninutWindowCtrlIdMultiRangeBtn );
+            
+            if ( btn )
+                {
+                iHandleRangeShortPress = EFalse;
+                TRAP_IGNORE( btn->HandlePointerUpEventL( btn->Rect().iBr ) );
+                iHandleRangeShortPress = ETrue;
+                }
             CFepLayoutChoiceList::SEvent* event = 
                 ( CFepLayoutChoiceList::SEvent* ) aEventData.Ptr();
 
@@ -1710,7 +1659,8 @@
     		iVkbLayout->ConstructFromIrregularResourceL();
     	else
     		iVkbLayout->ConstructFromNonIrregularResourceL();
-    	SetVkbLayoutSize();
+    	
+    	//SetVkbLayoutSize();
     	
     	if( IsRtoLLanguage( iLanguage ) )
     		{
@@ -2965,4 +2915,72 @@
             }
         }
     }
+
+void CPeninputGenericVkbWindow::HandleRangeButtonShortPress()
+    {
+    const TInt range = CPeninputDataConverter::AnyToInt(
+        iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
+    
+    const TInt langId = IntContext( EPeninputDataTypeInputLanguage );
+
+    switch ( langId )
+        {
+        case ELangRussian:
+        case ELangBulgarian:
+        case ELangUkrainian:
+            {
+            range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative );
+            }
+            break;
+
+        case ELangArabic:
+        case ELangFarsi:
+        case ELangUrdu:
+            {
+            range == ERangeNative ? ChangeRange( ERangeNativeNumber ) : ChangeRange( ERangeNative );
+            }
+            break;
+            
+        case ELangThai:
+            {
+            range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); 
+            }
+            break;
+
+        case ELangGreek:
+        case ELangHebrew:
+            {
+            range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); 
+            }
+            break;
+        default: // Latin, vietnamese, and other possible languages
+            {
+            if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) )
+                {
+                if ( range == ERangeNative )
+                    {
+                    if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) )
+                        {
+                        ChangeRange( ERangeNativeNumber );
+                        }
+                    else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) )
+                        {
+                        ChangeRange( ERangeNumber );
+                        }
+                    }
+                else
+                    {
+                    ChangeRange( ERangeNative );
+                    }
+                }
+            else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) )
+                {
+                range == ERangeEnglish ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeEnglish );
+                }
+            }
+            break;
+        }
+    
+    TRAP_IGNORE( UpdateRangeCtrlsL() );
+    }
 // End Of File