Merge lp:~renatofilho/address-book-app/input-hints2 into lp:address-book-app
- input-hints2
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Bill Filler |
Approved revision: | 55 |
Merged at revision: | 64 |
Proposed branch: | lp:~renatofilho/address-book-app/input-hints2 |
Merge into: | lp:address-book-app |
Diff against target: |
132 lines (+31/-1) 6 files modified
src/imports/Common/ContactDetailGroupBase.qml (+24/-0) src/imports/ContactEdit/ContactDetailEmailsEditor.qml (+1/-0) src/imports/ContactEdit/ContactDetailGroupWithTypeEditor.qml (+2/-0) src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml (+1/-0) src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml (+1/-0) src/imports/ContactEdit/ContactDetailWithTypeEditor.qml (+2/-1) |
To merge this branch: | bzr merge lp:~renatofilho/address-book-app/input-hints2 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Bill Filler (community) | Approve | ||
Tiago Salem Herrmann | Pending | ||
Review via email:
|
This proposal supersedes a proposal from 2013-09-06.
Commit message
fix focus on creation
Description of the change
merge latest from trunk
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Tiago Salem Herrmann (tiagosh) wrote : Posted in a previous version of this proposal | # |
Using Qt.ImhDialableC
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Renato Araujo Oliveira Filho (renatofilho) wrote : Posted in a previous version of this proposal | # |
> Using Qt.ImhDialableC
> number characters, like parentheses, comma and hyphen. Also, the button '+*'
> in the osk does not work at all.
I do not think the parentheses, comma and hyphen should be accepted. Since they are not DialableCharacters. As the enum says.
About the "+*" there is a related bug report on Qt: https:/
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Tiago Salem Herrmann (tiagosh) wrote : Posted in a previous version of this proposal | # |
In general we normalize the phone numbers before making calls. So the non diable characters wouldn't be a problem.
It is commom to use () for area codes. IMO we should allow users to enter those chars
Also, comma should be considered as diable, it means to stop a second before dialing the next numbers, used mostly to call extensions IIRC.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Bill Filler (bfiller) wrote : Posted in a previous version of this proposal | # |
I think the MR is fine, but the OSK layout is totally broken for phone numbers, both in layout and certain characters not working. Lets hold off on landing this until the OSK is fixed.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Bill Filler (bfiller) wrote : Posted in a previous version of this proposal | # |
btw, the email layout seems ok but not sure it's worth reverting the phone number code or just wait till osk fixed
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:53
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:53
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:54
No commit message was specified in the merge proposal. Click on the following link and set the commit message (if you want a jenkins rebuild you need to trigger it yourself):
https:/
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 55. By Renato Araujo Oliveira Filho
-
Avoid fields to get focus during the creation.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:55
No commit message was specified in the merge proposal. Click on the following link and set the commit message (if you want a jenkins rebuild you need to trigger it yourself):
https:/
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Bill Filler (bfiller) wrote : | # |
works well, landing
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:55
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) : | # |
Preview Diff
1 | === modified file 'src/imports/Common/ContactDetailGroupBase.qml' | |||
2 | --- src/imports/Common/ContactDetailGroupBase.qml 2013-07-26 00:19:09 +0000 | |||
3 | +++ src/imports/Common/ContactDetailGroupBase.qml 2013-09-11 23:55:19 +0000 | |||
4 | @@ -31,6 +31,7 @@ | |||
5 | 31 | property alias headerDelegate: headerItem.sourceComponent | 31 | property alias headerDelegate: headerItem.sourceComponent |
6 | 32 | property Component detailDelegate | 32 | property Component detailDelegate |
7 | 33 | property int minimumHeight: 0 | 33 | property int minimumHeight: 0 |
8 | 34 | property bool loaded: false | ||
9 | 34 | 35 | ||
10 | 35 | implicitHeight: root.details.length > 0 ? contents.height : minimumHeight | 36 | implicitHeight: root.details.length > 0 ? contents.height : minimumHeight |
11 | 36 | visible: implicitHeight > 0 | 37 | visible: implicitHeight > 0 |
12 | @@ -45,6 +46,7 @@ | |||
13 | 45 | onValuesChanged: { | 46 | onValuesChanged: { |
14 | 46 | if (!values) { | 47 | if (!values) { |
15 | 47 | clear() | 48 | clear() |
16 | 49 | root.loaded = false | ||
17 | 48 | return | 50 | return |
18 | 49 | } | 51 | } |
19 | 50 | 52 | ||
20 | @@ -61,6 +63,10 @@ | |||
21 | 61 | set(i, {"detail": values[i]}) | 63 | set(i, {"detail": values[i]}) |
22 | 62 | } | 64 | } |
23 | 63 | } | 65 | } |
24 | 66 | |||
25 | 67 | if (!root.loaded) { | ||
26 | 68 | loadTimer.restart() | ||
27 | 69 | } | ||
28 | 64 | } | 70 | } |
29 | 65 | } | 71 | } |
30 | 66 | 72 | ||
31 | @@ -92,6 +98,24 @@ | |||
32 | 92 | value: root.details[index] | 98 | value: root.details[index] |
33 | 93 | } | 99 | } |
34 | 94 | } | 100 | } |
35 | 101 | |||
36 | 102 | onItemAdded: { | ||
37 | 103 | if (root.loaded) { | ||
38 | 104 | item.forceActiveFocus() | ||
39 | 105 | } | ||
40 | 106 | } | ||
41 | 107 | |||
42 | 95 | } | 108 | } |
43 | 96 | } | 109 | } |
44 | 110 | |||
45 | 111 | // This timer will help to avoid fields get focus during the page creation | ||
46 | 112 | // At the first time that the page is loaded the timer will start and all | ||
47 | 113 | // subsequent details added before the timeout would not receive focus, | ||
48 | 114 | // after the timeout the new fields will receive focus as default | ||
49 | 115 | Timer { | ||
50 | 116 | id: loadTimer | ||
51 | 117 | |||
52 | 118 | interval: 500 | ||
53 | 119 | onTriggered: root.loaded = true | ||
54 | 120 | } | ||
55 | 97 | } | 121 | } |
56 | 98 | 122 | ||
57 | === modified file 'src/imports/ContactEdit/ContactDetailEmailsEditor.qml' | |||
58 | --- src/imports/ContactEdit/ContactDetailEmailsEditor.qml 2013-07-25 21:16:28 +0000 | |||
59 | +++ src/imports/ContactEdit/ContactDetailEmailsEditor.qml 2013-09-11 23:55:19 +0000 | |||
60 | @@ -25,4 +25,5 @@ | |||
61 | 25 | detailType: QtContacts.ContactDetail.Email | 25 | detailType: QtContacts.ContactDetail.Email |
62 | 26 | fields: [ 0 ] | 26 | fields: [ 0 ] |
63 | 27 | placeholderTexts: [ i18n.tr("Enter an email address") ] | 27 | placeholderTexts: [ i18n.tr("Enter an email address") ] |
64 | 28 | inputMethodHints: Qt.ImhEmailCharactersOnly | ||
65 | 28 | } | 29 | } |
66 | 29 | 30 | ||
67 | === modified file 'src/imports/ContactEdit/ContactDetailGroupWithTypeEditor.qml' | |||
68 | --- src/imports/ContactEdit/ContactDetailGroupWithTypeEditor.qml 2013-07-26 00:19:09 +0000 | |||
69 | +++ src/imports/ContactEdit/ContactDetailGroupWithTypeEditor.qml 2013-09-11 23:55:19 +0000 | |||
70 | @@ -28,6 +28,7 @@ | |||
71 | 28 | property int currentItem: -1 | 28 | property int currentItem: -1 |
72 | 29 | property int fieldType: QtContacts.ContactDetail.FieldContext | 29 | property int fieldType: QtContacts.ContactDetail.FieldContext |
73 | 30 | property variant placeholderTexts: [] | 30 | property variant placeholderTexts: [] |
74 | 31 | property variant inputMethodHints | ||
75 | 31 | 32 | ||
76 | 32 | function save() { | 33 | function save() { |
77 | 33 | var changed = false | 34 | var changed = false |
78 | @@ -137,6 +138,7 @@ | |||
79 | 137 | height: implicitHeight | 138 | height: implicitHeight |
80 | 138 | width: root.width | 139 | width: root.width |
81 | 139 | 140 | ||
82 | 141 | inputMethodHints: root.inputMethodHints | ||
83 | 140 | onDetailChanged: updateCombo(false) | 142 | onDetailChanged: updateCombo(false) |
84 | 141 | 143 | ||
85 | 142 | // this is necessary due the default property of ListItem.Empty | 144 | // this is necessary due the default property of ListItem.Empty |
86 | 143 | 145 | ||
87 | === modified file 'src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml' | |||
88 | --- src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml 2013-07-31 19:36:55 +0000 | |||
89 | +++ src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml 2013-09-11 23:55:19 +0000 | |||
90 | @@ -27,4 +27,5 @@ | |||
91 | 27 | fields: [ QtContacts.OnlineAccount.AccountUri ] | 27 | fields: [ QtContacts.OnlineAccount.AccountUri ] |
92 | 28 | placeholderTexts: [ i18n.tr("Enter a social alias") ] | 28 | placeholderTexts: [ i18n.tr("Enter a social alias") ] |
93 | 29 | typeModel: ContactDetailOnlineAccountTypeModel { } | 29 | typeModel: ContactDetailOnlineAccountTypeModel { } |
94 | 30 | inputMethodHints: Qt.ImhEmailCharactersOnly | ||
95 | 30 | } | 31 | } |
96 | 31 | 32 | ||
97 | === modified file 'src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml' | |||
98 | --- src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml 2013-07-31 19:36:55 +0000 | |||
99 | +++ src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml 2013-09-11 23:55:19 +0000 | |||
100 | @@ -27,4 +27,5 @@ | |||
101 | 27 | fields: [ QtContacts.PhoneNumber.Number ] | 27 | fields: [ QtContacts.PhoneNumber.Number ] |
102 | 28 | placeholderTexts: [ i18n.tr("Enter a number") ] | 28 | placeholderTexts: [ i18n.tr("Enter a number") ] |
103 | 29 | typeModel: ContactDetailPhoneNumberTypeModel { } | 29 | typeModel: ContactDetailPhoneNumberTypeModel { } |
104 | 30 | inputMethodHints: Qt.ImhDialableCharactersOnly | ||
105 | 30 | } | 31 | } |
106 | 31 | 32 | ||
107 | === modified file 'src/imports/ContactEdit/ContactDetailWithTypeEditor.qml' | |||
108 | --- src/imports/ContactEdit/ContactDetailWithTypeEditor.qml 2013-08-28 17:06:38 +0000 | |||
109 | +++ src/imports/ContactEdit/ContactDetailWithTypeEditor.qml 2013-09-11 23:55:19 +0000 | |||
110 | @@ -29,6 +29,7 @@ | |||
111 | 29 | property int fieldType: -1 | 29 | property int fieldType: -1 |
112 | 30 | property alias selectedTypeIndex: detailTypeSelector.currentIndex | 30 | property alias selectedTypeIndex: detailTypeSelector.currentIndex |
113 | 31 | property variant placeholderTexts: [] | 31 | property variant placeholderTexts: [] |
114 | 32 | property var inputMethodHints | ||
115 | 32 | 33 | ||
116 | 33 | function selectType(type) { | 34 | function selectType(type) { |
117 | 34 | detailTypeSelector.selectItem(type) | 35 | detailTypeSelector.selectItem(type) |
118 | @@ -99,13 +100,13 @@ | |||
119 | 99 | Component.onCompleted: { | 100 | Component.onCompleted: { |
120 | 100 | if (index == 0) { | 101 | if (index == 0) { |
121 | 101 | focus = true | 102 | focus = true |
122 | 102 | detail.forceActiveFocus() | ||
123 | 103 | } | 103 | } |
124 | 104 | } | 104 | } |
125 | 105 | focus: false | 105 | focus: false |
126 | 106 | detail: root.detail | 106 | detail: root.detail |
127 | 107 | field: modelData | 107 | field: modelData |
128 | 108 | placeholderText: root.placeholderTexts[index] | 108 | placeholderText: root.placeholderTexts[index] |
129 | 109 | inputMethodHints: root.inputMethodHints | ||
130 | 109 | 110 | ||
131 | 110 | anchors { | 111 | anchors { |
132 | 111 | left: parent.left | 112 | left: parent.left |
PASSED: Continuous integration, rev:52 jenkins. qa.ubuntu. com/job/ address- book-app- ci/114/ jenkins. qa.ubuntu. com/job/ address- book-app- saucy-amd64- ci/114 jenkins. qa.ubuntu. com/job/ address- book-app- saucy-armhf- ci/115 jenkins. qa.ubuntu. com/job/ address- book-app- saucy-armhf- ci/115/ artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ address- book-app- saucy-i386- ci/114
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins: 8080/job/ address- book-app- ci/114/ rebuild
http://