textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp
branchRCL_3
changeset 12 5e18d8c489d6
parent 11 c8fb4cf7b3ae
child 18 b1ea1642412e
--- a/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp	Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertywindow.cpp	Tue May 25 13:03:44 2010 +0300
@@ -57,6 +57,7 @@
 #include "peninputsplitqwertylayout.h"
 
 #include <peninputaknvkbpreviewbubblerenderer.h>
+#include <peninputlongpressbutton.h>
 
 // Constants
 const TInt KPeninputVkbWndInvalidIndex = -1;
@@ -481,7 +482,82 @@
     
     switch ( aEventType )
         {
-        case EEventButtonUp:
+        case EPeninputLayoutEventMultiRangeLongPress:
+            {
+            const TInt range = CPeninputDataConverter::AnyToInt(
+                iLayoutContext->RequestData(EPeninputDataTypeCurrentRange));
+            
+            const TInt langId = CPeninputDataConverter::AnyToInt(
+                iLayoutContext->RequestData(EPeninputDataTypeInputLanguage));
+
+            if ( aCtrl->ControlId() == EPeninutWindowCtrlIdRangeBtn )
+                {
+                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() );
+                }
+            }
+            break;
+        case EPeninputLayoutEventMultiRange:
             {
             if ( ctrlId == EPeninutWindowCtrlIdRangeBtn )
                 {
@@ -1293,12 +1369,13 @@
 //
 void CPeninputSplitQwertyWindow::AddRangeBarL()
     {
-    CAknFepCtrlCommonButton* button = CAknFepCtrlCommonButton::NewL(
-                                        UiLayout(), 
-                                        EPeninutWindowCtrlIdRangeBtn,
-                                        KAknsIIDQsnFrFunctionButtonNormal,
-                                        KAknsIIDQsnFrFunctionButtonPressed,
-                                        KAknsIIDQsnFrFunctionButtonInactive );
+    CAknFepCtrlLongPressButton* button = CAknFepCtrlLongPressButton::NewL( 
+            UiLayout(), 
+            EPeninutWindowCtrlIdRangeBtn, 
+            0xffff, 0,
+            KAknsIIDQsnFrFunctionButtonNormal,
+            KAknsIIDQsnFrFunctionButtonPressed,
+            KAknsIIDQsnFrFunctionButtonInactive );                
 
     CleanupStack::PushL( button ); 
     button->SetResourceId( R_PENINPUT_LAYOUT_VKB_RANGE_DEFAULT );