diff -r 923ff622b8b9 -r 4633027730f5 src/hbplugins/inputmethods/touchinput/hbinput12keytouchkeyboard.cpp --- 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; }