Blackberry: Support input method hints

Change-Id: I2d30d6079d3982e5ca2b8d9346d0d511279792ad
Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
bb10
Thomas McGuire 2012-09-27 15:30:06 +02:00 committed by The Qt Project
parent 72d7a833bd
commit d162f27671
4 changed files with 25 additions and 8 deletions

View File

@ -62,6 +62,28 @@ void QQnxAbstractVirtualKeyboard::setKeyboardMode(KeyboardMode mode)
applyKeyboardMode(mode);
}
void QQnxAbstractVirtualKeyboard::setInputHintsFromObject(QObject *focusObject)
{
if (focusObject && focusObject->isWidgetType()) {
const Qt::InputMethodHints hints = static_cast<Qt::InputMethodHints>(
focusObject->property("inputMethodHints").toInt());
if (hints & Qt::ImhEmailCharactersOnly) {
setKeyboardMode(QQnxAbstractVirtualKeyboard::Email);
} else if (hints & Qt::ImhDialableCharactersOnly) {
setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone);
} else if (hints & Qt::ImhUrlCharactersOnly) {
setKeyboardMode(QQnxAbstractVirtualKeyboard::Web);
} else if (hints & Qt::ImhFormattedNumbersOnly || hints & Qt::ImhDigitsOnly ||
hints & Qt::ImhDate || hints & Qt::ImhTime) {
setKeyboardMode(QQnxAbstractVirtualKeyboard::NumPunc);
} else {
setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);
}
} else {
setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);
}
}
void QQnxAbstractVirtualKeyboard::setHeight(int height)
{
if (height == m_height)

View File

@ -74,6 +74,7 @@ public:
QLocale locale() const { return m_locale; }
void setKeyboardMode(KeyboardMode mode);
void setInputHintsFromObject(QObject *focusObject);
KeyboardMode keyboardMode() const { return m_keyboardMode; }
Q_SIGNALS:

View File

@ -1559,10 +1559,7 @@ void QQnxInputContext::setFocusObject(QObject *object)
if (m_inputPanelVisible)
hideInputPanel();
} else {
if (object->inherits("QAbstractSpinBox"))
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone);
else
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);
m_virtualKeyboard.setInputHintsFromObject(object);
if (!m_inputPanelVisible)
showInputPanel();

View File

@ -163,10 +163,7 @@ void QQnxInputContext::setFocusObject(QObject *object)
if (m_inputPanelVisible)
hideInputPanel();
} else {
if (object->inherits("QAbstractSpinBox"))
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Phone);
else
m_virtualKeyboard.setKeyboardMode(QQnxAbstractVirtualKeyboard::Default);
m_virtualKeyboard.setInputHintsFromObject(object);
if (!m_inputPanelVisible)
showInputPanel();