src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard.cpp
changeset 21 4633027730f5
parent 7 923ff622b8b9
child 23 e6ad4ef83b23
--- a/src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard.cpp	Tue Jul 06 14:36:53 2010 +0300
+++ b/src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard.cpp	Wed Aug 18 10:05:37 2010 +0300
@@ -196,13 +196,21 @@
                 if (mMode == EModeNumeric) {
                     QChar numChr;
                     const HbKeyboardMap *labelMap = mKeymap->keyboard(HbKeyboardVirtual12KeyLabels);
-                    const HbKeyboardMap *keyMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
+                    const HbKeyboardMap *keyboardMap; 
+                    if (mOwner->focusObject() && mOwner->focusObject()->editorInterface().editorClass() == HbInputEditorClassEmail) {
+                        keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12KeyEmail);
+                    } else if (mOwner->focusObject() && mOwner->focusObject()->editorInterface().editorClass() == HbInputEditorClassUrl) {
+                        keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12KeyUrl);
+                    } else {
+                        keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
+                    }
+
                     if (labelMap && key < labelMap->keys.count()) {
                         numChr = labelMap->keys.at(key)->keycode;
                     }
 
                     // Fallback to normal keymappings if key labels are not present
-                    if (keyMap && key < keyMap->keys.count() && numChr.isNull()) {
+                    if (keyboardMap && key < keyboardMap->keys.count() && numChr.isNull()) {
                         numChr = numberCharacterBoundToKey(key);
                     }
 
@@ -217,7 +225,16 @@
                     QString secondRow;
                     QChar numChr;
                     const HbKeyboardMap *labelMap = mKeymap->keyboard(HbKeyboardVirtual12KeyLabels);
-                    const HbKeyboardMap *keyMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
+                    const HbKeyboardMap *keyboardMap;
+                    
+                    if (mOwner->focusObject() && mOwner->focusObject()->editorInterface().editorClass() == HbInputEditorClassEmail) {
+                        keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12KeyEmail);
+                    } else if (mOwner->focusObject() && mOwner->focusObject()->editorInterface().editorClass() == HbInputEditorClassUrl) {
+                        keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12KeyUrl);
+                    } else {
+                        keyboardMap = mKeymap->keyboard(HbKeyboardVirtual12Key);
+                    }
+
                     if (labelMap && key < labelMap->keys.count()) {
                         firstRow = keyLabel(labelMap->keys.at(key)->chars, HbFirstRowIndex | mModifiers);
                         secondRow = keyLabel(labelMap->keys.at(key)->chars, HbSecondRowIndex | mModifiers);
@@ -225,9 +242,9 @@
                     }
 
                     // Fallback to normal keymappings if key labels are not present
-                    if (keyMap && key < keyMap->keys.count()) {
+                    if (keyboardMap && key < keyboardMap->keys.count()) {
                         if (firstRow.isEmpty()) {
-                            firstRow = keyMap->keys.at(key)->characters(mModifiers);
+                            firstRow = keyboardMap->keys.at(key)->characters(mModifiers);
                             if (mOwner->focusObject()) {
                                 QString allowedData;
                                 mOwner->focusObject()->filterStringWithEditorFilter(firstRow, allowedData);
@@ -336,6 +353,16 @@
 */
 HbKeyboardType Hb12KeyTouchKeyboard::keyboardType() const
 {
+    Q_D(const Hb12KeyTouchKeyboard);
+
+    if (d->mOwner->focusObject())
+    {
+        if (d->mOwner->focusObject()->editorInterface().editorClass() == HbInputEditorClassEmail) {
+            return HbKeyboardVirtual12KeyEmail;
+        } else if (d->mOwner->focusObject()->editorInterface().editorClass() == HbInputEditorClassUrl) {
+            return HbKeyboardVirtual12KeyUrl;
+        }
+    }
     return HbKeyboardVirtual12Key;
 }