diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2014-04-30 15:41:02 +0300 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2014-05-06 15:43:14 +0300 |
commit | 945669c989c8204745b30c1ee6d3a10513ff2a70 (patch) | |
tree | 2a4d42518e27a9623fe4cdc91e833b6da9ec5c8f | |
parent | 41e47a682ea558e3500155d683c389158c79b367 (diff) |
Add predefined ids for EnterKeyAction
A predefined action id replaces the label in the enter key with an icon.
Balanced all icons to use the same aspect ratio. Removed all custom
margins used for icon positioning and sizing.
Task-number: QTRD-2900
Change-Id: I159bcb4d53e8ceb8f51f4a8be24504e20262f37a
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Rainer Keller <rainer.keller@digia.com>
27 files changed, 132 insertions, 34 deletions
diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard.qml b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard.qml index 5c557a0e..a6eb4701 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard.qml +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard.qml @@ -17,6 +17,7 @@ ****************************************************************************/ import QtQuick 2.0 +import QtQuick.Enterprise.VirtualKeyboard 1.0 import "content" Rectangle { @@ -59,7 +60,7 @@ Rectangle { TextField { width: parent.width previewText: "One line field" - enterKeyText: "Next" + enterKeyAction: EnterKeyAction.Next onEnterKeyClicked: passwordField.focus = true } TextField { @@ -69,7 +70,7 @@ Rectangle { echoMode: TextInput.Password previewText: "Password field" inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhPreferLowercase | Qt.ImhSensitiveData | Qt.ImhNoPredictiveText - enterKeyText: "Next" + enterKeyAction: EnterKeyAction.Next onEnterKeyClicked: numberField.focus = true } TextField { @@ -79,7 +80,7 @@ Rectangle { width: parent.width previewText: "Phone number field" inputMethodHints: Qt.ImhDialableCharactersOnly - enterKeyText: "Next" + enterKeyAction: EnterKeyAction.Next onEnterKeyClicked: textArea.focus = true } TextArea { diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextArea.qml b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextArea.qml index 9729997f..7fc744b2 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextArea.qml +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextArea.qml @@ -42,6 +42,7 @@ TextBase { TextEdit { id: textEdit + EnterKeyAction.actionId: textArea.enterKeyAction EnterKeyAction.label: textArea.enterKeyText EnterKeyAction.enabled: textArea.enterKeyEnabled diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextBase.qml b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextBase.qml index 46172d2f..41b62aca 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextBase.qml +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextBase.qml @@ -17,6 +17,7 @@ ****************************************************************************/ import QtQuick 2.0 +import QtQuick.Enterprise.VirtualKeyboard 1.0 FocusScope { id: textBase @@ -25,8 +26,9 @@ FocusScope { property bool previewTextActive: !editor.activeFocus && text.length === 0 property int fontPixelSize: 32 property string previewText + property int enterKeyAction: EnterKeyAction.None property string enterKeyText - property bool enterKeyEnabled: enterKeyText.length === 0 || editor.text.length > 0 || editor.inputMethodComposing + property bool enterKeyEnabled: enterKeyAction === EnterKeyAction.None || editor.text.length > 0 || editor.inputMethodComposing property alias mouseParent: mouseArea.parent implicitHeight: editor.height + 12 diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextField.qml b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextField.qml index 5ce6c7db..08245431 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextField.qml +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/TextField.qml @@ -49,6 +49,7 @@ TextBase { TextInput { id: textInput + EnterKeyAction.actionId: textField.enterKeyAction EnterKeyAction.label: textField.enterKeyText EnterKeyAction.enabled: textField.enterKeyEnabled diff --git a/src/virtualkeyboard/content/components/EnterKey.qml b/src/virtualkeyboard/content/components/EnterKey.qml index 4c4f94ef..8c1ebfb7 100644 --- a/src/virtualkeyboard/content/components/EnterKey.qml +++ b/src/virtualkeyboard/content/components/EnterKey.qml @@ -31,6 +31,11 @@ import QtQuick.Enterprise.VirtualKeyboard 1.0 */ BaseKey { + /*! This property holds the action id for the enter key. + + */ + readonly property int actionId: InputContext.hasEnterKeyAction(InputContext.inputItem) ? InputContext.inputItem.EnterKeyAction.actionId : EnterKeyAction.None + text: "\n" displayText: InputContext.hasEnterKeyAction(InputContext.inputItem) ? InputContext.inputItem.EnterKeyAction.label : "" key: Qt.Key_Return diff --git a/src/virtualkeyboard/content/styles/default/images/backspace.png b/src/virtualkeyboard/content/styles/default/images/backspace.png Binary files differindex 0a33e95f..eb6d668f 100755 --- a/src/virtualkeyboard/content/styles/default/images/backspace.png +++ b/src/virtualkeyboard/content/styles/default/images/backspace.png diff --git a/src/virtualkeyboard/content/styles/default/images/check.png b/src/virtualkeyboard/content/styles/default/images/check.png Binary files differnew file mode 100644 index 00000000..4a5a92c4 --- /dev/null +++ b/src/virtualkeyboard/content/styles/default/images/check.png diff --git a/src/virtualkeyboard/content/styles/default/images/enter.png b/src/virtualkeyboard/content/styles/default/images/enter.png Binary files differindex 03335a0f..0b739382 100755 --- a/src/virtualkeyboard/content/styles/default/images/enter.png +++ b/src/virtualkeyboard/content/styles/default/images/enter.png diff --git a/src/virtualkeyboard/content/styles/default/images/globe.png b/src/virtualkeyboard/content/styles/default/images/globe.png Binary files differindex 93da92f4..4dff8ccc 100755 --- a/src/virtualkeyboard/content/styles/default/images/globe.png +++ b/src/virtualkeyboard/content/styles/default/images/globe.png diff --git a/src/virtualkeyboard/content/styles/default/images/hidekeyboard.png b/src/virtualkeyboard/content/styles/default/images/hidekeyboard.png Binary files differindex ca515036..a625cc4f 100755 --- a/src/virtualkeyboard/content/styles/default/images/hidekeyboard.png +++ b/src/virtualkeyboard/content/styles/default/images/hidekeyboard.png diff --git a/src/virtualkeyboard/content/styles/default/images/search.png b/src/virtualkeyboard/content/styles/default/images/search.png Binary files differnew file mode 100644 index 00000000..740830d5 --- /dev/null +++ b/src/virtualkeyboard/content/styles/default/images/search.png diff --git a/src/virtualkeyboard/content/styles/default/images/shift.png b/src/virtualkeyboard/content/styles/default/images/shift.png Binary files differindex ae5ad0b7..54e9472b 100755 --- a/src/virtualkeyboard/content/styles/default/images/shift.png +++ b/src/virtualkeyboard/content/styles/default/images/shift.png diff --git a/src/virtualkeyboard/content/styles/default/style.qml b/src/virtualkeyboard/content/styles/default/style.qml index 6d144575..5e341f8c 100644 --- a/src/virtualkeyboard/content/styles/default/style.qml +++ b/src/virtualkeyboard/content/styles/default/style.qml @@ -17,12 +17,14 @@ ****************************************************************************/ import QtQuick 2.0 +import QtQuick.Enterprise.VirtualKeyboard 1.0 import QtQuick.Enterprise.VirtualKeyboard.Styles 1.0 KeyboardStyle { readonly property string fontFamily: dejaVuSans.name readonly property real keyBackgroundMargin: Math.round(13 * scaleHint) readonly property real keyContentMargin: Math.round(45 * scaleHint) + readonly property real keyIconMargin: Math.round(35 * scaleHint) property var dejaVuSans: FontLoader { source: "qrc:/fonts/DejaVuSans.ttf" @@ -102,8 +104,8 @@ KeyboardStyle { source: "qrc:/images/backspace.png" color: "#868482" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } } states: [ @@ -146,8 +148,8 @@ KeyboardStyle { source: "qrc:/images/globe.png" color: "#868482" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } } states: [ @@ -187,17 +189,29 @@ KeyboardStyle { anchors.margins: keyBackgroundMargin KeyIcon { id: enterKeyIcon - visible: control.displayText.length === 0 - source: "qrc:/images/enter.png" + visible: enterKeyText.text.length === 0 + source: { + switch (control.actionId) { + case EnterKeyAction.Go: + case EnterKeyAction.Send: + case EnterKeyAction.Next: + case EnterKeyAction.Done: + return "qrc:/images/check.png" + case EnterKeyAction.Search: + return "qrc:/images/search.png" + default: + return "qrc:/images/enter.png" + } + } color: "#868482" anchors.fill: parent - anchors.margins: keyContentMargin - anchors.leftMargin: enterKeyBackground.width > enterKeyBackground.height * 1.5 ? Math.round(150 * scaleHint) : keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } Text { id: enterKeyText - visible: control.displayText.length !== 0 - text: control.displayText + visible: text.length !== 0 + text: control.actionId !== EnterKeyAction.None ? "" : control.displayText clip: true fontSizeMode: Text.HorizontalFit horizontalAlignment: Text.AlignHCenter @@ -261,8 +275,8 @@ KeyboardStyle { source: "qrc:/images/hidekeyboard.png" color: "#868482" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } } states: [ @@ -305,8 +319,8 @@ KeyboardStyle { source: "qrc:/images/shift.png" color: "#868482" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } states: [ State { diff --git a/src/virtualkeyboard/content/styles/default/style.qrc b/src/virtualkeyboard/content/styles/default/style.qrc index c931cfb7..8a73e4a7 100644 --- a/src/virtualkeyboard/content/styles/default/style.qrc +++ b/src/virtualkeyboard/content/styles/default/style.qrc @@ -7,5 +7,7 @@ <file>images/hidekeyboard.png</file> <file>images/shift.png</file> <file>images/globe.png</file> + <file>images/search.png</file> + <file>images/check.png</file> </qresource> </RCC> diff --git a/src/virtualkeyboard/content/styles/retro/images/backspace.png b/src/virtualkeyboard/content/styles/retro/images/backspace.png Binary files differindex 0a33e95f..eb6d668f 100755 --- a/src/virtualkeyboard/content/styles/retro/images/backspace.png +++ b/src/virtualkeyboard/content/styles/retro/images/backspace.png diff --git a/src/virtualkeyboard/content/styles/retro/images/check.png b/src/virtualkeyboard/content/styles/retro/images/check.png Binary files differnew file mode 100644 index 00000000..4a5a92c4 --- /dev/null +++ b/src/virtualkeyboard/content/styles/retro/images/check.png diff --git a/src/virtualkeyboard/content/styles/retro/images/enter.png b/src/virtualkeyboard/content/styles/retro/images/enter.png Binary files differindex 03335a0f..0b739382 100755 --- a/src/virtualkeyboard/content/styles/retro/images/enter.png +++ b/src/virtualkeyboard/content/styles/retro/images/enter.png diff --git a/src/virtualkeyboard/content/styles/retro/images/globe.png b/src/virtualkeyboard/content/styles/retro/images/globe.png Binary files differindex 93da92f4..4dff8ccc 100755 --- a/src/virtualkeyboard/content/styles/retro/images/globe.png +++ b/src/virtualkeyboard/content/styles/retro/images/globe.png diff --git a/src/virtualkeyboard/content/styles/retro/images/hidekeyboard.png b/src/virtualkeyboard/content/styles/retro/images/hidekeyboard.png Binary files differindex ca515036..a625cc4f 100755 --- a/src/virtualkeyboard/content/styles/retro/images/hidekeyboard.png +++ b/src/virtualkeyboard/content/styles/retro/images/hidekeyboard.png diff --git a/src/virtualkeyboard/content/styles/retro/images/search.png b/src/virtualkeyboard/content/styles/retro/images/search.png Binary files differnew file mode 100644 index 00000000..740830d5 --- /dev/null +++ b/src/virtualkeyboard/content/styles/retro/images/search.png diff --git a/src/virtualkeyboard/content/styles/retro/images/shift.png b/src/virtualkeyboard/content/styles/retro/images/shift.png Binary files differindex ae5ad0b7..54e9472b 100755 --- a/src/virtualkeyboard/content/styles/retro/images/shift.png +++ b/src/virtualkeyboard/content/styles/retro/images/shift.png diff --git a/src/virtualkeyboard/content/styles/retro/style.qml b/src/virtualkeyboard/content/styles/retro/style.qml index e65ef8f7..3799964d 100644 --- a/src/virtualkeyboard/content/styles/retro/style.qml +++ b/src/virtualkeyboard/content/styles/retro/style.qml @@ -17,12 +17,14 @@ ****************************************************************************/ import QtQuick 2.0 +import QtQuick.Enterprise.VirtualKeyboard 1.0 import QtQuick.Enterprise.VirtualKeyboard.Styles 1.0 KeyboardStyle { readonly property string fontFamily: courierPrimeRegular.name readonly property real keyBackgroundMargin: Math.round(9 * scaleHint) readonly property real keyContentMargin: Math.round(50 * scaleHint) + readonly property real keyIconMargin: Math.round(40 * scaleHint) property var courierPrimeRegular: FontLoader { source: "qrc:/fonts/Courier Prime.ttf" @@ -145,10 +147,8 @@ KeyboardStyle { source: "qrc:/images/backspace.png" color: "#c5a96f" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin - anchors.leftMargin: Math.round(29 * scaleHint) - anchors.rightMargin: Math.round(29 * scaleHint) + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } states: [ State { @@ -191,8 +191,8 @@ KeyboardStyle { source: "qrc:/images/globe.png" color: "#110b05" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } states: [ State { @@ -238,17 +238,29 @@ KeyboardStyle { } KeyIcon { id: enterKeyIcon - visible: control.displayText.length === 0 - source: "qrc:/images/enter.png" + visible: enterKeyText.text.length === 0 + source: { + switch (control.actionId) { + case EnterKeyAction.Go: + case EnterKeyAction.Send: + case EnterKeyAction.Next: + case EnterKeyAction.Done: + return "qrc:/images/check.png" + case EnterKeyAction.Search: + return "qrc:/images/search.png" + default: + return "qrc:/images/enter.png" + } + } color: "#c5a96f" anchors.fill: parent - anchors.margins: keyContentMargin - anchors.leftMargin: enterKeyBackground.width > enterKeyBackground.height * 1.5 ? Math.round(142 * scaleHint) : anchors.margins + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } Text { id: enterKeyText - visible: control.displayText.length !== 0 - text: control.displayText + visible: text.length !== 0 + text: control.actionId !== EnterKeyAction.None ? "" : control.displayText clip: true fontSizeMode: Text.HorizontalFit horizontalAlignment: Text.AlignHCenter @@ -321,8 +333,8 @@ KeyboardStyle { source: "qrc:/images/hidekeyboard.png" color: "#c5a96f" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } states: [ State { @@ -397,8 +409,8 @@ KeyboardStyle { source: "qrc:/images/shift.png" color: "#c5a96f" anchors.fill: parent - anchors.topMargin: keyContentMargin - anchors.bottomMargin: keyContentMargin + anchors.topMargin: keyIconMargin + anchors.bottomMargin: keyIconMargin } states: [ State { diff --git a/src/virtualkeyboard/content/styles/retro/style.qrc b/src/virtualkeyboard/content/styles/retro/style.qrc index 4d4c41c8..a2c861e5 100644 --- a/src/virtualkeyboard/content/styles/retro/style.qrc +++ b/src/virtualkeyboard/content/styles/retro/style.qrc @@ -27,5 +27,7 @@ <file>images/hidekeyboard.png</file> <file>images/shift.png</file> <file>images/globe.png</file> + <file>images/search.png</file> + <file>images/check.png</file> </qresource> </RCC> diff --git a/src/virtualkeyboard/enterkeyaction.cpp b/src/virtualkeyboard/enterkeyaction.cpp index ea42866a..bff34445 100644 --- a/src/virtualkeyboard/enterkeyaction.cpp +++ b/src/virtualkeyboard/enterkeyaction.cpp @@ -47,6 +47,11 @@ */ /*! + \class EnterKeyAction + \internal +*/ + +/*! \internal */ EnterKeyActionAttachedType *EnterKeyAction::qmlAttachedProperties(QObject *object) @@ -55,6 +60,26 @@ EnterKeyActionAttachedType *EnterKeyAction::qmlAttachedProperties(QObject *objec } /*! + \qmlattachedproperty int EnterKeyAction::actionId + + Sets the action id for the enter key in virtual keyboard. + When the action id is set, it takes preference over the label + and sets the icon for the enter key. + + \list + \li \c EnterKeyAction.None No action defined. + \li \c EnterKeyAction.Go Action performs go operation. + For example taking user to the entered url. + \li \c EnterKeyAction.Search Action performs search operation. + \li \c EnterKeyAction.Send Action sends the entered text. + \li \c EnterKeyAction.Next Action moves the input focus to + the next field accepting text input. + \li \c EnterKeyAction.Done Same as \c EnterKeyAction.Next, + except all the text input is done. + \endlist +*/ + +/*! \qmlattachedproperty string EnterKeyAction::label Sets the label for the enter key in virtual keyboard. diff --git a/src/virtualkeyboard/enterkeyaction.h b/src/virtualkeyboard/enterkeyaction.h index aea64362..7f0c8619 100644 --- a/src/virtualkeyboard/enterkeyaction.h +++ b/src/virtualkeyboard/enterkeyaction.h @@ -26,10 +26,23 @@ class EnterKeyActionAttachedType; class EnterKeyAction : public QObject { Q_OBJECT + Q_ENUMS(Id) + +public: + enum Id { + None, + Go, + Search, + Send, + Next, + Done + }; + public: static EnterKeyActionAttachedType *qmlAttachedProperties(QObject *object); }; +Q_DECLARE_METATYPE(EnterKeyAction::Id) QML_DECLARE_TYPEINFO(EnterKeyAction, QML_HAS_ATTACHED_PROPERTIES) #endif diff --git a/src/virtualkeyboard/enterkeyactionattachedtype.cpp b/src/virtualkeyboard/enterkeyactionattachedtype.cpp index 8a7ddc8e..23829eb1 100644 --- a/src/virtualkeyboard/enterkeyactionattachedtype.cpp +++ b/src/virtualkeyboard/enterkeyactionattachedtype.cpp @@ -20,11 +20,25 @@ EnterKeyActionAttachedType::EnterKeyActionAttachedType(QObject *parent) : QObject(parent), + m_actionId(EnterKeyAction::None), m_label(), m_enabled(true) { } +EnterKeyAction::Id EnterKeyActionAttachedType::actionId() const +{ + return m_actionId; +} + +void EnterKeyActionAttachedType::setActionId(EnterKeyAction::Id actionId) +{ + if (m_actionId != actionId) { + m_actionId = actionId; + emit actionIdChanged(); + } +} + QString EnterKeyActionAttachedType::label() const { return m_label; diff --git a/src/virtualkeyboard/enterkeyactionattachedtype.h b/src/virtualkeyboard/enterkeyactionattachedtype.h index ee9f32ef..d04b240c 100644 --- a/src/virtualkeyboard/enterkeyactionattachedtype.h +++ b/src/virtualkeyboard/enterkeyactionattachedtype.h @@ -20,26 +20,32 @@ #define ENTERKEYACTIONATTACHEDTYPE_H #include <QObject> +#include "enterkeyaction.h" class EnterKeyActionAttachedType : public QObject { Q_OBJECT + Q_PROPERTY(EnterKeyAction::Id actionId READ actionId WRITE setActionId NOTIFY actionIdChanged) Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) public: explicit EnterKeyActionAttachedType(QObject *parent); + EnterKeyAction::Id actionId() const; + void setActionId(EnterKeyAction::Id actionId); QString label() const; void setLabel(const QString& label); bool enabled() const; void setEnabled(bool enabled); signals: + void actionIdChanged(); void labelChanged(); void enabledChanged(); private: + EnterKeyAction::Id m_actionId; QString m_label; bool m_enabled; }; |