src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp
changeset 21 4633027730f5
parent 7 923ff622b8b9
child 23 e6ad4ef83b23
--- a/src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp	Tue Jul 06 14:36:53 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp	Wed Aug 18 10:05:37 2010 +0300
@@ -66,7 +66,9 @@
 	    //This condition is to avoid get the characters mapped to Asterisk
 	    //Especially for Thai language we have mapped character to Asterisk
         if (buttonId != HbInputButton::ButtonKeyCodeAsterisk ||
-            mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait) {
+            mInputMethod->currentKeyboardType() == HbKeyboardSctEmail || 
+            mInputMethod->currentKeyboardType() == HbKeyboardSctUrl || 
+            mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait ) {
             currCharIndex = mNumChr ;
             mCurrentChar = q->getNthCharacterInKey(mNumChr, buttonId, type);
 	    }
@@ -108,14 +110,19 @@
         if (mDownKey == HbInputButton::ButtonKeyCodeShift) {
             mLongPressHappened = true;
             mInputMethod->switchMode(HbInputButton::ButtonKeyCodeShift);                
-        } else if (mDownKey == HbInputButton::ButtonKeyCodeSymbol) {
-            // launch the smiley popup when long press of Sym key is received
+        } else if (mDownKey == HbInputButton::ButtonKeyCodeSymbol  &&
+            (mInputMethod->currentKeyboardType() != HbKeyboardSctPortrait && 
+            mInputMethod->currentKeyboardType() != HbKeyboardSctEmail &&
+            mInputMethod->currentKeyboardType() != HbKeyboardSctUrl )) {
             mLongPressHappened = true;
             mInputMethod->selectSpecialCharacterTableMode();
         } else if (mDownKey == HbInputButton::ButtonKeyCodeAsterisk &&
+			!mInputMethod->isSctModeActive() && 
+			(mInputMethod->currentKeyboardType() != HbKeyboardSctPortrait &&
+            mInputMethod->currentKeyboardType() != HbKeyboardSctUrl &&
+            mInputMethod->currentKeyboardType() != HbKeyboardSctEmail )) {
             // launch the SCT keypad when long press of Asterisk key is 
 			// received in non-SCT mode
-            !mInputMethod->isSctModeActive()) {
             mLongPressHappened = true;
             mInputMethod->switchMode(mDownKey);
         } else if (mDownKey != HbInputButton::ButtonKeyCodeDelete &&
@@ -130,12 +137,13 @@
     }
 
     // mark a shift key double tap. This would be handled when the release event is received.
-    if ((buttonId == HbInputButton::ButtonKeyCodeShift) && (mLastKey == buttonId) && mTimer->isActive()) {
+    if (buttonId == HbInputButton::ButtonKeyCodeShift && mLastKey == buttonId && mTimer->isActive()) {
         mShiftKeyDoubleTapped = true;        
     }
 
     if (mInputMethod) {
-        if (mLastKey != buttonId || mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait)
+        if (mLastKey != buttonId || mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait || 
+            mInputMethod->currentKeyboardType() == HbKeyboardSctEmail || mInputMethod->currentKeyboardType() == HbKeyboardSctUrl)
         {
             if (mCurrentChar != 0) {
                 if (!focusObject->characterAllowedInEditor(mCurrentChar)) {
@@ -149,13 +157,19 @@
                     mCurrentChar = 0;
                     mNumChr = 0;
                     focusObject->filterAndCommitCharacter(commitChar);
-                }            
-            }            
+                }
+            }
+
+            // we should not launch auto-completor when function keys are pressed.
+            if (buttonId == HbInputButton::ButtonKeyCodeCharacter)
+                refreshAutoCompleter();
         }
-
+    
         mDownKey = buttonId;
         mTimer->stop();
-        if (mInputMethod->currentKeyboardType() == HbKeyboardVirtual12Key) {
+        if (mInputMethod->currentKeyboardType() == HbKeyboardVirtual12Key || 
+            mInputMethod->currentKeyboardType() == HbKeyboardVirtual12KeyEmail || 
+            mInputMethod->currentKeyboardType() == HbKeyboardVirtual12KeyUrl ) {
             mTimer->start(HbMultiTapTimerTimeout);
         }
     }
@@ -195,7 +209,6 @@
             if (mLastKey && (HbInputButton::ButtonKeyCodeShift != mLastKey)) {
                 mInputMethod->updateState();
             }
-            refreshAutoCompleter();
         }
 
         if (buttonId == HbInputButton::ButtonKeyCodeShift) {