Merge lp:~renatofilho/address-book-app/search into lp:~phablet-team/address-book-app/staging
- search
- Merge into staging
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Tiago Salem Herrmann | ||||
Approved revision: | 232 | ||||
Merged at revision: | 182 | ||||
Proposed branch: | lp:~renatofilho/address-book-app/search | ||||
Merge into: | lp:~phablet-team/address-book-app/staging | ||||
Prerequisite: | lp:~renatofilho/address-book-app/fix-click-mode | ||||
Diff against target: |
431 lines (+212/-60) 7 files modified
README.click (+2/-2) debian/control (+4/-4) src/imports/Common/CMakeLists.txt (+2/-0) src/imports/ContactEdit/CMakeLists.txt (+0/-2) src/imports/ContactList/ContactListPage.qml (+127/-9) src/imports/Ubuntu/Contacts/ContactListView.qml (+77/-41) src/imports/Ubuntu/Contacts/ContactSimpleListView.qml (+0/-2) |
||||
To merge this branch: | bzr merge lp:~renatofilho/address-book-app/search | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Tiago Salem Herrmann (community) | Approve | ||
Review via email: mp+222241@code.launchpad.net |
This proposal supersedes a proposal from 2014-05-08.
Commit message
Implemented contact search
Description of the change
TO TEST THIS YOU WILL NEED: https:/
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:192
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:193
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:194
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:195
http://
Executed test runs:
UNSTABLE: http://
FAILURE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:196
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:197
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:199
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:200
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:201
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:202
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:203
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:205
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:206
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:207
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:208
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:209
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:211
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:212
http://
Executed test runs:
FAILURE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:214
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:215
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:216
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:218
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:219
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:220
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:220
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:221
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:221
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
PASSED: Continuous integration, rev:221
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
Tiago Salem Herrmann (tiagosh) wrote : Posted in a previous version of this proposal | # |
I found a couple of issues:
1) there is no way to see the last items in the list view when the osk is open. The list view should attach to the osk top.
2) the search field should have word prediction disabled, otherwise it won't trigger the query until the entered text is committed (space or tap in a suggested word). Something like this should be enough: inputMethodHints: Qt.ImhNoPredict
3) on the device with a big contact list (+600 contacts) the app crashes when you change the search term too fast, it seems to me like the search filter is being changed any time you change the search term right away. That means if the user types the search term too fast, the app will crash.
4) I know that the contact list collapse is going away, but if you collapse the list and switch to favorites while the list is still collapsing, the app crashes too.
Renato Araujo Oliveira Filho (renatofilho) wrote : Posted in a previous version of this proposal | # |
> I found a couple of issues:
>
> 1) there is no way to see the last items in the list view when the osk is
> open. The list view should attach to the osk top.
Fixed on rev. 233
>
> 2) the search field should have word prediction disabled, otherwise it won't
> trigger the query until the entered text is committed (space or tap in a
> suggested word). Something like this should be enough: inputMethodHints:
> Qt.ImhNoPredict
Fixed on rev. 234
>
> 3) on the device with a big contact list (+600 contacts) the app crashes when
> you change the search term too fast, it seems to me like the search filter is
> being changed any time you change the search term right away. That means if
> the user types the search term too fast, the app will crash.
I am testing with 1500 contacts, and I can not reproduce the problem. Anyway I update the code
to wait some ms before start search, this will consume less cpu and bayberry.
>
> 4) I know that the contact list collapse is going away, but if you collapse
> the list and switch to favorites while the list is still collapsing, the app
> crashes too.
Yes this will go away, but this bug is not related with the current branch.
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal | # |
FAILED: Continuous integration, rev:225
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 226. By Renato Araujo Oliveira Filho
-
Merged parent branch.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:225
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:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
Tiago Salem Herrmann (tiagosh) wrote : Posted in a previous version of this proposal | # |
Those bugs were indeed fixed in this last version, but I found one more:
1) Search for a contact
2) tap on a contact to show its details
3) tap on the back button
result: list is still filtered by the last search term and the header is back to normal, so you need to tap search again to change it.
We should clear the search term immediately after you tap a contact.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:226
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:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 227. By Renato Araujo Oliveira Filho
-
Before clear the filter make sure that the contact list is empty. This will make the list update looks faster.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:227
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:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 228. By Renato Araujo Oliveira Filho
-
Merged parent branch.
- 229. By Renato Araujo Oliveira Filho
-
Revert change on package description.
- 230. By Renato Araujo Oliveira Filho
-
Clear search text after leave contact list page.
- 231. By Renato Araujo Oliveira Filho
-
Updated click instructions.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:228
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
Tiago Salem Herrmann (tiagosh) : | # |
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:231
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild:
http://
- 232. By Renato Araujo Oliveira Filho
-
Removed unused signal.
Tiago Salem Herrmann (tiagosh) wrote : | # |
looks good now.
PS Jenkins bot (ps-jenkins) : | # |
Preview Diff
1 | === modified file 'README.click' |
2 | --- README.click 2013-12-16 15:04:12 +0000 |
3 | +++ README.click 2014-06-09 17:04:25 +0000 |
4 | @@ -7,8 +7,8 @@ |
5 | cd build |
6 | cmake [path_to_this_location] -DCLICK_MODE=on \ |
7 | -DBZR_REVNO=$(cd [path_to_this_location]; bzr revno) |
8 | -make DESTDIR=package install |
9 | -click build package |
10 | +make DESTDIR=[package dir] install |
11 | +click build [package dir] |
12 | |
13 | This package can be installed by running: |
14 | |
15 | |
16 | === modified file 'debian/control' |
17 | --- debian/control 2014-05-16 01:59:36 +0000 |
18 | +++ debian/control 2014-06-09 17:04:25 +0000 |
19 | @@ -27,7 +27,6 @@ |
20 | qmlscene, |
21 | qtcontact5-galera, |
22 | qtdeclarative5-ubuntu-contacts0.1 (= ${binary:Version}), |
23 | - qtdeclarative5-ubuntu-ui-toolkit-plugin | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles, |
24 | qtdeclarative5-ubuntu-telephony-phonenumber0.1, |
25 | qtdeclarative5-ubuntu-content0.1, |
26 | qtdeclarative5-ubuntu-keyboard-extensions0.1, |
27 | @@ -41,7 +40,7 @@ |
28 | Package: qtdeclarative5-ubuntu-contacts0.1 |
29 | Architecture: any |
30 | Depends: qtdeclarative5-qtquick2-plugin, |
31 | - qtdeclarative5-ubuntu-ui-toolkit-plugin | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles, |
32 | + qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.46+14.10.20140527) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles, |
33 | qtdeclarative5-qtcontacts-plugin, |
34 | ${misc:Depends}, |
35 | ${shlibs:Depends}, |
36 | @@ -71,8 +70,9 @@ |
37 | libqt5test5, |
38 | libqt5widgets5, |
39 | python-testscenarios, |
40 | - ubuntu-ui-toolkit-autopilot, |
41 | + qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.46+14.10.20140527), |
42 | + ubuntu-ui-toolkit-autopilot (>= 0.1.46+14.10.20140527), |
43 | address-book-app (>= ${binary:Version}), |
44 | ubuntu-mobile-icons, |
45 | Description: Test package for address-book-app |
46 | - Autopilot tests for the address-book-app package |
47 | + Autopilot tests for the address-book-app package |
48 | |
49 | === modified file 'src/imports/Common/CMakeLists.txt' |
50 | --- src/imports/Common/CMakeLists.txt 2014-05-08 18:10:28 +0000 |
51 | +++ src/imports/Common/CMakeLists.txt 2014-06-09 17:04:25 +0000 |
52 | @@ -3,7 +3,9 @@ |
53 | ContactDetailItem.qml |
54 | ContactDetailGroupBase.qml |
55 | ContactDetailGroupWithTypeBase.qml |
56 | + KeyboardRectangle.qml |
57 | RemoveContactsDialog.qml |
58 | + StandardAnimation.qml |
59 | ) |
60 | |
61 | install(FILES ${CONTACT_COMMON_QMLS} |
62 | |
63 | === renamed file 'src/imports/ContactEdit/KeyboardRectangle.qml' => 'src/imports/Common/KeyboardRectangle.qml' |
64 | === renamed file 'src/imports/ContactEdit/StandardAnimation.qml' => 'src/imports/Common/StandardAnimation.qml' |
65 | === modified file 'src/imports/ContactEdit/CMakeLists.txt' |
66 | --- src/imports/ContactEdit/CMakeLists.txt 2014-05-06 14:16:55 +0000 |
67 | +++ src/imports/ContactEdit/CMakeLists.txt 2014-06-09 17:04:25 +0000 |
68 | @@ -11,8 +11,6 @@ |
69 | ContactDetailWithTypeEditor.qml |
70 | ContactEditor.qml |
71 | ContactFetchError.qml |
72 | - KeyboardRectangle.qml |
73 | - StandardAnimation.qml |
74 | TextInputDetail.qml |
75 | ValueSelector.qml |
76 | ) |
77 | |
78 | === modified file 'src/imports/ContactList/ContactListPage.qml' |
79 | --- src/imports/ContactList/ContactListPage.qml 2014-05-27 14:48:50 +0000 |
80 | +++ src/imports/ContactList/ContactListPage.qml 2014-06-09 17:04:25 +0000 |
81 | @@ -32,8 +32,11 @@ |
82 | property bool pickMultipleContacts: false |
83 | property var onlineAccountsMessageDialog: null |
84 | property QtObject contactIndex: null |
85 | - property bool syncEnabled: application.syncEnabled |
86 | - property var contactModel: contactList.listModel ? contactList.listModel : null |
87 | + property bool contactsLoaded: false |
88 | + |
89 | + readonly property bool syncEnabled: application.syncEnabled |
90 | + readonly property var contactModel: contactList.listModel ? contactList.listModel : null |
91 | + readonly property bool searching: (state === "searching") |
92 | |
93 | function createEmptyContact(phoneNumber) { |
94 | var details = [ {detail: "PhoneNumber", field: "number", value: phoneNumber}, |
95 | @@ -111,13 +114,29 @@ |
96 | id: contactList |
97 | objectName: "contactListView" |
98 | |
99 | + anchors { |
100 | + top: parent.top |
101 | + left: parent.left |
102 | + bottom: keyboard.top |
103 | + right: parent.right |
104 | + } |
105 | + swipeToDelete: !pickMode |
106 | multiSelectionEnabled: true |
107 | multipleSelection: !pickMode || |
108 | ((contactContentHub && contactContentHub.multipleItems) || mainPage.pickMultipleContacts) |
109 | - anchors.fill: parent |
110 | - swipeToDelete: !pickMode |
111 | + DetailFilter { |
112 | + id: nameFilter |
113 | + |
114 | + detail: ContactDetail.DisplayLabel |
115 | + field: DisplayLabel.Label |
116 | + value: searchField.text |
117 | + matchFlags: DetailFilter.MatchContains |
118 | + } |
119 | |
120 | onCountChanged: { |
121 | + if (count > 0) |
122 | + mainPage.contactsLoaded = true |
123 | + |
124 | if ((count > 0) && mainPage.onlineAccountsMessageDialog) { |
125 | // Because of some contacts can take longer to arrive due the dbus delay, |
126 | // we need to destroy the online account dialog if this happen |
127 | @@ -128,6 +147,7 @@ |
128 | } |
129 | |
130 | onContactClicked: { |
131 | + mainPage.state = "" |
132 | pageStack.push(Qt.resolvedUrl("../ContactView/ContactView.qml"), |
133 | {model: contactList.listModel, |
134 | contact: contact}) |
135 | @@ -171,7 +191,9 @@ |
136 | |
137 | anchors.centerIn: parent |
138 | spacing: units.gu(2) |
139 | - visible: (contactList.loading || application.syncing) && (contactList.count === 0) |
140 | + visible: ((contactList.loading && !mainPage.contactsLoaded) || |
141 | + (application.syncing && (contactList.count === 0))) |
142 | + |
143 | |
144 | ActivityIndicator { |
145 | id: activity |
146 | @@ -215,7 +237,6 @@ |
147 | } |
148 | |
149 | ToolbarButton { |
150 | - |
151 | action: Action { |
152 | objectName: "doneSelection" |
153 | text: mainPage.pickMode ? i18n.tr("Select") : i18n.tr("Delete") |
154 | @@ -240,9 +261,81 @@ |
155 | onTriggered: application.startSync() |
156 | } |
157 | } |
158 | - } |
159 | - |
160 | - tools: contactList.isInSelectionMode ? toolbarItemsSelectionMode : toolbarItemsNormalMode |
161 | + ToolbarButton { |
162 | + objectName: "Search" |
163 | + action: Action { |
164 | + text: i18n.tr("Search") |
165 | + visible: !mainPage.searching |
166 | + iconName: "search" |
167 | + onTriggered: { |
168 | + mainPage.state = "searching" |
169 | + searchField.forceActiveFocus() |
170 | + } |
171 | + } |
172 | + } |
173 | + } |
174 | + |
175 | + ToolbarItems { |
176 | + id: toolbarItemsSearch |
177 | + |
178 | + visible: false |
179 | + back: ToolbarButton { |
180 | + visible: false |
181 | + action: Action { |
182 | + objectName: "cancelSearch" |
183 | + |
184 | + visible: mainPage.searching |
185 | + iconName: "back" |
186 | + text: i18n.tr("Cancel") |
187 | + onTriggered: mainPage.state = "" |
188 | + } |
189 | + } |
190 | + } |
191 | + |
192 | + TextField { |
193 | + id: searchField |
194 | + |
195 | + visible: mainPage.searching |
196 | + anchors { |
197 | + left: parent.left |
198 | + leftMargin: units.gu(2) |
199 | + right: parent.right |
200 | + rightMargin: units.gu(2) |
201 | + topMargin: units.gu(1.5) |
202 | + bottomMargin: units.gu(1.5) |
203 | + verticalCenter: parent.verticalCenter |
204 | + } |
205 | + onTextChanged: contactSearchTimeout.restart() |
206 | + inputMethodHints: Qt.ImhNoPredictiveText |
207 | + } |
208 | + |
209 | + states: [ |
210 | + State { |
211 | + name: "" |
212 | + PropertyChanges { |
213 | + target: searchField |
214 | + text: "" |
215 | + } |
216 | + }, |
217 | + State { |
218 | + name: "searching" |
219 | + PropertyChanges { |
220 | + target: mainPage |
221 | + __customHeaderContents: searchField |
222 | + tools: toolbarItemsSearch |
223 | + } |
224 | + }, |
225 | + State { |
226 | + name: "selection" |
227 | + when: contactList.isInSelectionMode |
228 | + PropertyChanges { |
229 | + target: mainPage |
230 | + tools: toolbarItemsSelectionMode |
231 | + } |
232 | + } |
233 | + ] |
234 | + |
235 | + tools: toolbarItemsNormalMode |
236 | |
237 | // WORKAROUND: Avoid the gap btw the header and the contact list when the list moves |
238 | // see bug #1296764 |
239 | @@ -304,6 +397,11 @@ |
240 | } |
241 | } |
242 | |
243 | + |
244 | + KeyboardRectangle { |
245 | + id: keyboard |
246 | + } |
247 | + |
248 | Connections { |
249 | target: mainPage.contactModel |
250 | onContactsChanged: { |
251 | @@ -331,6 +429,26 @@ |
252 | } |
253 | } |
254 | |
255 | + Timer { |
256 | + id: contactSearchTimeout |
257 | + |
258 | + running: false |
259 | + repeat: false |
260 | + interval: 300 |
261 | + onTriggered: { |
262 | + if (searchField.text === "") { |
263 | + if (contactList.filter !== null) { |
264 | + contactList.changeFilter(null) |
265 | + } |
266 | + } else { |
267 | + if (contactList.filter !== nameFilter) { |
268 | + contactList.changeFilter(nameFilter) |
269 | + } |
270 | + nameFilter.value = searchField.text |
271 | + } |
272 | + } |
273 | + } |
274 | + |
275 | |
276 | Component.onCompleted: { |
277 | if (pickMode) { |
278 | |
279 | === modified file 'src/imports/Ubuntu/Contacts/ContactListView.qml' |
280 | --- src/imports/Ubuntu/Contacts/ContactListView.qml 2014-06-05 19:20:12 +0000 |
281 | +++ src/imports/Ubuntu/Contacts/ContactListView.qml 2014-06-09 17:04:25 +0000 |
282 | @@ -43,6 +43,14 @@ |
283 | |
284 | property bool showFavourites: false |
285 | |
286 | + function changeFilter(newFilter) |
287 | + { |
288 | + if (root.count > 0) { |
289 | + contactsModel._clearModel = true |
290 | + } |
291 | + root.filter = newFilter |
292 | + } |
293 | + |
294 | header: Rectangle { |
295 | id: itemHeader |
296 | |
297 | @@ -69,7 +77,12 @@ |
298 | color: root.showFavourites ? UbuntuColors.warmGrey : UbuntuColors.orange |
299 | MouseArea { |
300 | anchors.fill: parent |
301 | - onClicked: root.showFavourites = false |
302 | + onClicked: { |
303 | + //WORKAROUND: clear the model before start populate it with the new contacts |
304 | + //otherwise the model will wait for all contacts before show any new contact |
305 | + root.changeFilter(root.filter) |
306 | + root.showFavourites = false |
307 | + } |
308 | } |
309 | } |
310 | |
311 | @@ -102,44 +115,67 @@ |
312 | } |
313 | } |
314 | |
315 | - ContactModel { |
316 | - id: allContactsModel |
317 | - |
318 | - manager: root.manager |
319 | - sortOrders: root.sortOrders |
320 | - fetchHint: root.fetchHint |
321 | - |
322 | - onErrorChanged: { |
323 | - if (error) { |
324 | - busyIndicator.busy = false |
325 | - contactListView.error(error) |
326 | - } |
327 | - } |
328 | - } |
329 | - |
330 | - ContactModel { |
331 | - id: favouritesContactsModel |
332 | - |
333 | - manager: root.manager |
334 | - sortOrders: root.sortOrders |
335 | - fetchHint: root.fetchHint |
336 | - filter: DetailFilter { |
337 | - id: favouritesFilter |
338 | - |
339 | - detail: ContactDetail.Favorite |
340 | - field: Favorite.Favorite |
341 | - value: true |
342 | - matchFlags: DetailFilter.MatchExactly |
343 | - } |
344 | - |
345 | - onErrorChanged: { |
346 | - if (error) { |
347 | - busyIndicator.busy = false |
348 | - contactListView.error(error) |
349 | - } |
350 | - } |
351 | - |
352 | - } |
353 | - |
354 | - listModel: showFavourites ? favouritesContactsModel : allContactsModel |
355 | + DetailFilter { |
356 | + id: favouritesFilter |
357 | + |
358 | + detail: ContactDetail.Favorite |
359 | + field: Favorite.Favorite |
360 | + value: true |
361 | + matchFlags: DetailFilter.MatchExactly |
362 | + } |
363 | + |
364 | + InvalidFilter { |
365 | + id: invalidFilter |
366 | + } |
367 | + |
368 | + IntersectionFilter { |
369 | + id: contactsFilter |
370 | + |
371 | + filters: { |
372 | + var filters = [] |
373 | + if (root.showFavourites) { |
374 | + filters.push(favouritesFilter) |
375 | + } |
376 | + if (root.filter) { |
377 | + filters.push(root.filter) |
378 | + } |
379 | + return filters |
380 | + } |
381 | + } |
382 | + |
383 | + ContactModel { |
384 | + id: contactsModel |
385 | + |
386 | + property bool _clearModel: false |
387 | + |
388 | + manager: root.manager |
389 | + sortOrders: root.sortOrders |
390 | + fetchHint: root.fetchHint |
391 | + filter: { |
392 | + if (contactsModel._clearModel) { |
393 | + return invalidFilter |
394 | + } else if (root.showFavourites || root.filter) { |
395 | + return contactsFilter |
396 | + } else { |
397 | + return null |
398 | + } |
399 | + } |
400 | + onErrorChanged: { |
401 | + if (error) { |
402 | + console.error("Contact List error:" + error) |
403 | + } |
404 | + } |
405 | + onContactsChanged: { |
406 | + //WORKAROUND: clear the model before start populate it with the new contacts |
407 | + //otherwise the model will wait for all contacts before show any new contact |
408 | + |
409 | + //after all contacts get removed we can populate the model again, this will show |
410 | + //new contacts as soon as it arrives in the model |
411 | + if (contactsModel._clearModel && contacts.length === 0) { |
412 | + contactsModel._clearModel = false |
413 | + } |
414 | + } |
415 | + } |
416 | + |
417 | + listModel: contactsModel |
418 | } |
419 | |
420 | === modified file 'src/imports/Ubuntu/Contacts/ContactSimpleListView.qml' |
421 | --- src/imports/Ubuntu/Contacts/ContactSimpleListView.qml 2014-06-05 19:20:12 +0000 |
422 | +++ src/imports/Ubuntu/Contacts/ContactSimpleListView.qml 2014-06-09 17:04:25 +0000 |
423 | @@ -88,8 +88,6 @@ |
424 | */ |
425 | property list<SortOrder> sortOrders : [ |
426 | SortOrder { |
427 | - id: sortOrder |
428 | - |
429 | detail: ContactDetail.Tag |
430 | field: Tag.Tag |
431 | direction: Qt.AscendingOrder |
FAILED: Continuous integration, rev:191 jenkins. qa.ubuntu. com/job/ phablet- team-address- book-app- staging- ci/10/ jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- utopic- touch/101 jenkins. qa.ubuntu. com/job/ generic- mediumtests- utopic/ 89 jenkins. qa.ubuntu. com/job/ phablet- team-address- book-app- staging- utopic- amd64-ci/ 10 jenkins. qa.ubuntu. com/job/ phablet- team-address- book-app- staging- utopic- armhf-ci/ 10 jenkins. qa.ubuntu. com/job/ phablet- team-address- book-app- staging- utopic- armhf-ci/ 10/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ phablet- team-address- book-app- staging- utopic- i386-ci/ 10 jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- runner- mako/613 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/248 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- armhf/248/ artifact/ work/output/ *zip*/output. zip s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 6972 jenkins. qa.ubuntu. com/job/ autopilot- testrunner- otto-utopic/ 84 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/130 jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- utopic- amd64/130/ artifact/ work/output/ *zip*/output. zip
http://
Executed test runs:
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/phablet- team-address- book-app- staging- ci/10/rebuild
http://