summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-09-27 15:30:06 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-28 12:46:43 +0200
commitd162f276714f04b07827dfd525deea45dc55a5f1 (patch)
tree8e39af70bdf62db277343c23bf629ac7cde5e81e /src/plugins/platforms
parent72d7a833bd6cd2074f45c1ea32986d498b6dd476 (diff)
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>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.cpp22
-rw-r--r--src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.h1
-rw-r--r--src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp5
-rw-r--r--src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp5
4 files changed, 25 insertions, 8 deletions
diff --git a/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.cpp b/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.cpp
index 43c4d9070a..99b83013fb 100644
--- a/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.cpp
+++ b/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.cpp
@@ -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)
diff --git a/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.h b/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.h
index 18cf162bcf..9b911e1dec 100644
--- a/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.h
+++ b/src/plugins/platforms/qnx/qqnxabstractvirtualkeyboard.h
@@ -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:
diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp b/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
index d43792d6ae..72a967d5e5 100644
--- a/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
+++ b/src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
@@ -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();
diff --git a/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp b/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp
index c42cfadf12..23d1f75539 100644
--- a/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp
+++ b/src/plugins/platforms/qnx/qqnxinputcontext_noimf.cpp
@@ -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();