Merge lp:~fboucault/address-book-app/converged_bottom_edge into lp:address-book-app
- converged_bottom_edge
- Merge into trunk
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Bill Filler | ||||
Approved revision: | 512 | ||||
Merged at revision: | 490 | ||||
Proposed branch: | lp:~fboucault/address-book-app/converged_bottom_edge | ||||
Merge into: | lp:address-book-app | ||||
Prerequisite: | lp:~fboucault/address-book-app/multicolumns | ||||
Diff against target: |
2687 lines (+865/-241) 97 files modified
examples/contenthub.qml (+1/-1) src/imports/ABContactEditorPage.qml (+7/-2) src/imports/ABContactListPage.qml (+191/-64) src/imports/ABContactViewPage.qml (+12/-10) src/imports/BottomEdge.qml (+321/-0) src/imports/BottomEdgeShadow.qml (+31/-0) src/imports/CMakeLists.txt (+2/-0) src/imports/ContentHubProxy.qml (+1/-1) src/imports/MainWindow.qml (+22/-2) src/imports/Settings/MyselfPhoneNumbersModel.qml (+1/-1) src/imports/Settings/SettingsPage.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/ContactDetailBase.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupBase.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupWithTypeBase.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/ContactDetailItem.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/ContactExporter.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/KeyboardRectangle.qml (+1/-1) src/imports/Ubuntu/AddressBook/Base/RemoveContactsDialog.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/AvatarImport.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ComboButtonAddField.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAddressesEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAvatarEditor.qml (+2/-2) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailEmailsEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailGroupWithTypeEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailNameEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOnlineAccountsEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOrganizationsEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailPhoneNumbersEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailSyncTargetEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailWithTypeEditor.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ContactEditorPage.qml (+17/-5) src/imports/Ubuntu/AddressBook/ContactEditor/TextInputDetail.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactEditor/ValueSelector.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactShare/ContactSharePage.qml (+3/-1) src/imports/Ubuntu/AddressBook/ContactView/ActionButton.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/BasicFieldView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAddressesView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAvatarView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailEmailsView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailGroupWithTypeView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailNameView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOnlineAccountsView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOrganizationsView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumberView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumbersView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailSyncTargetView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactDetailWithTypeView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactFetchError.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactHeaderView.qml (+1/-1) src/imports/Ubuntu/AddressBook/ContactView/ContactViewPage.qml (+1/-1) src/imports/Ubuntu/Contacts/ActionButton.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactAvatar.qml (+3/-3) src/imports/Ubuntu/Contacts/ContactDelegate.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactFetch.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactListButtonDelegate.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactListModel.qml (+1/-1) src/imports/Ubuntu/Contacts/ContactListView.qml (+61/-4) src/imports/Ubuntu/Contacts/ContactSimpleListView.qml (+10/-2) src/imports/Ubuntu/Contacts/FastScroll.qml (+1/-1) src/imports/Ubuntu/Contacts/ListItemWithActions.qml (+1/-1) src/imports/Ubuntu/Contacts/ListItemWithActionsCheckBox.qml (+1/-1) src/imports/Ubuntu/Contacts/MostCalledList.qml (+1/-1) src/imports/Ubuntu/Contacts/MostCalledModel.qml (+1/-1) src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml (+1/-1) src/imports/Ubuntu/Contacts/MultipleSelectionVisualModel.qml (+1/-1) src/imports/Ubuntu/Contacts/Ofono.qml (+1/-1) src/imports/Ubuntu/Contacts/OnlineAccountsDummy.qml (+1/-1) src/imports/Ubuntu/Contacts/OnlineAccountsHelper.qml (+1/-1) src/imports/Ubuntu/Contacts/PageWithBottomEdge.qml (+2/-2) src/imports/Ubuntu/Contacts/SIMCardImportPage.qml (+1/-1) src/imports/Ubuntu/Contacts/SIMList.qml (+1/-1) src/imports/Ubuntu/Contacts/SectionDelegate.qml (+1/-2) src/imports/Ubuntu/Contacts/SubtitledWithColors.qml (+1/-1) src/imports/Ubuntu/Contacts/VCardParser.qml (+1/-1) src/imports/Ubuntu/Contacts/qmldir (+1/-1) src/imports/VCardImportDialog.qml (+1/-1) tests/autopilot/address_book_app/__init__.py (+50/-30) tests/autopilot/address_book_app/address_book/_contact_view_page.py (+1/-7) tests/autopilot/address_book_app/address_book/_sim_card_import_page.py (+2/-2) tests/autopilot/address_book_app/pages/_ab_contact_list_page.py (+26/-7) tests/autopilot/address_book_app/tests/__init__.py (+2/-2) tests/autopilot/address_book_app/tests/test_add_contact.py (+8/-5) tests/autopilot/address_book_app/tests/test_create_new_from_uri.py (+7/-5) tests/autopilot/address_book_app/tests/test_delete_contact.py (+1/-1) tests/autopilot/address_book_app/tests/test_edit_contact.py (+10/-10) tests/qml/tst_ContactAvatar.qml (+1/-1) tests/qml/tst_ContactEditor.qml (+1/-1) tests/qml/tst_ContactList.qml (+1/-1) tests/qml/tst_ContactListModel.qml (+1/-1) tests/qml/tst_ContactListView.qml (+1/-1) tests/qml/tst_ContactPreviewPage.qml (+1/-1) tests/qml/tst_ListWithActions.qml (+1/-1) tests/qml/tst_UbuntuContacts.qml (+1/-1) tests/qml/tst_VCardParser.qml (+1/-1) |
||||
To merge this branch: | bzr merge lp:~fboucault/address-book-app/converged_bottom_edge | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Renato Araujo Oliveira Filho (community) | Approve | ||
PS Jenkins bot | continuous-integration | Needs Fixing | |
Robert Bruce Park (community) | Needs Fixing | ||
Review via email: mp+270693@code.launchpad.net |
Commit message
Make bottom edge usable with a mouse.
Make it smarter when more than one column is available.
Description of the change
- 475. By Florian Boucault
-
Better avatar for new contact.
- 476. By Florian Boucault
-
Better selected contact handling.
PS Jenkins bot (ps-jenkins) wrote : | # |
- 477. By Florian Boucault
-
Avoid crashes upon deletion.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:476
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:477
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 478. By Florian Boucault
-
Added constraints on AdaptivePageLayout so that right column is not squeezed too small.
- 479. By Florian Boucault
-
Do not show other import options when adding a new contact.
- 480. By Florian Boucault
-
Correctly set the pageStack property to the contact list page.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:479
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:480
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
-Application starts with the keyboard visible.
-Create new contact page appears empty.
- 481. By Florian Boucault
-
Fix 1 column layout.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:481
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 482. By Florian Boucault
-
Fixed doc
- 483. By Florian Boucault
-
Always highlight the opened contact.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:483
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 484. By Florian Boucault
-
Fixed sizing of ABContactEditorPage
- 485. By Florian Boucault
-
Always reset state
- 486. By Florian Boucault
-
Fixed bottom edge stacking.
- 487. By Florian Boucault
-
2 columns width fix
- 488. By Florian Boucault
-
Prevent forced focus at startup
- 489. By Florian Boucault
-
Fix split second visible anime at startup
- 490. By Florian Boucault
-
Missing code for previous fix.
- 491. By Florian Boucault
-
Show newly created contact only in multicolumn mode.
- 492. By Florian Boucault
-
Better new contact placeholder handling
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:487
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:492
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 493. By Florian Boucault
-
Added confirmation dialog when cancelling contact edit
- 494. By Florian Boucault
-
Cleaner opening of view and edit contact pages.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:493
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:494
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 495. By Florian Boucault
-
Cancel edition before trying to show a contact.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:495
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 496. By Florian Boucault
-
Fixed wrong aspect ratio when using UbuntuShape.
- 497. By Florian Boucault
-
Fixed freeze upon cancelling new contact.
- 498. By Florian Boucault
-
When going back from editing an existing contact, do not go directly back to the contact list.
- 499. By Florian Boucault
-
Removed dead code.
- 500. By Florian Boucault
-
Support case when pageStack is still a PageStack.
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:496
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:500
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 501. By Florian Boucault
-
use content-hub 1.3 imports
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:501
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
Robert Bruce Park (robru) wrote : | # |
Comment inline.
- 502. By Florian Boucault
-
debian: fixed versioning vs arch ordering.
- 503. By Florian Boucault
-
Removed edit cancellation dialog.
Florian Boucault (fboucault) : | # |
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:502
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:503
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Renato Araujo Oliveira Filho (renatofilho) : | # |
- 504. By Florian Boucault
-
Reverted content hub 13
- 505. By Florian Boucault
-
Merged from multicolumns branch
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:505
http://
Executed test runs:
SUCCESS: http://
UNSTABLE: http://
UNSTABLE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Renato Araujo Oliveira Filho (renatofilho) : | # |
- 506. By Florian Boucault
- 507. By Florian Boucault
-
Moved ContactDelegate.qml up in qmldir together with the other public APIs
- 508. By Florian Boucault
-
Moved public APIs of elements to their beginning.
- 509. By Florian Boucault
- 510. By Florian Boucault
-
Merged from trunk
- 511. By Florian Boucault
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:506
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:511
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 512. By Florian Boucault
-
Switched all imports of QtQuick to version 2.4
PS Jenkins bot (ps-jenkins) wrote : | # |
FAILED: Continuous integration, rev:512
http://
Executed test runs:
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
looks good
Preview Diff
1 | === modified file 'examples/contenthub.qml' |
2 | --- examples/contenthub.qml 2013-12-12 23:21:33 +0000 |
3 | +++ examples/contenthub.qml 2015-10-26 13:18:18 +0000 |
4 | @@ -1,4 +1,4 @@ |
5 | -import QtQuick 2.0 |
6 | +import QtQuick 2.4 |
7 | import Ubuntu.Components 0.1 |
8 | import Ubuntu.Content 0.1 |
9 | import QtContacts 5.0 |
10 | |
11 | === modified file 'src/imports/ABContactEditorPage.qml' |
12 | --- src/imports/ABContactEditorPage.qml 2015-10-26 13:18:17 +0000 |
13 | +++ src/imports/ABContactEditorPage.qml 2015-10-26 13:18:18 +0000 |
14 | @@ -14,7 +14,7 @@ |
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | */ |
17 | |
18 | -import QtQuick 2.2 |
19 | +import QtQuick 2.4 |
20 | import QtContacts 5.0 |
21 | |
22 | import Ubuntu.Components 1.3 |
23 | @@ -25,20 +25,25 @@ |
24 | id: root |
25 | objectName: "contactEditorPage" |
26 | |
27 | + property alias backIconName: backAction.iconName |
28 | + |
29 | head.backAction: Action { |
30 | + id: backAction |
31 | + |
32 | objectName: "cancel" |
33 | + name: "cancel" |
34 | |
35 | text: i18n.tr("Cancel") |
36 | iconName: "back" |
37 | onTriggered: { |
38 | root.cancel() |
39 | - root.active = false |
40 | } |
41 | } |
42 | |
43 | head.actions: [ |
44 | Action { |
45 | objectName: "save" |
46 | + name: "save" |
47 | |
48 | text: i18n.tr("Save") |
49 | iconName: "ok" |
50 | |
51 | === modified file 'src/imports/ABContactListPage.qml' |
52 | --- src/imports/ABContactListPage.qml 2015-10-26 13:18:17 +0000 |
53 | +++ src/imports/ABContactListPage.qml 2015-10-26 13:18:18 +0000 |
54 | @@ -1,4 +1,4 @@ |
55 | -/* |
56 | +/* |
57 | * Copyright (C) 2012-2015 Canonical, Ltd. |
58 | * |
59 | * This program is free software; you can redistribute it and/or modify |
60 | @@ -14,7 +14,7 @@ |
61 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
62 | */ |
63 | |
64 | -import QtQuick 2.2 |
65 | +import QtQuick 2.4 |
66 | import QtContacts 5.0 |
67 | |
68 | import Ubuntu.Components 1.3 |
69 | @@ -26,7 +26,7 @@ |
70 | import Ubuntu.AddressBook.Base 0.1 |
71 | import Ubuntu.AddressBook.ContactShare 0.1 |
72 | |
73 | -ContactsUI.PageWithBottomEdge { |
74 | +Page { |
75 | id: mainPage |
76 | objectName: "contactListPage" |
77 | |
78 | @@ -36,7 +36,10 @@ |
79 | property QtObject contactIndex: null |
80 | property string newPhoneToAdd: "" |
81 | property alias contactManager: contactList.manager |
82 | + property Page contactViewPage: null |
83 | + property Page contactEditorPage: null |
84 | |
85 | + readonly property bool bottomEdgePageOpened: bottomEdge.opened && bottomEdge.fullLoaded |
86 | readonly property bool isEmpty: (contactList.count === 0) |
87 | readonly property bool allowToQuit: (application.callbackApplication.length > 0) |
88 | readonly property var contactModel: contactList.listModel ? contactList.listModel : null |
89 | @@ -55,40 +58,53 @@ |
90 | |
91 | function createContactWithPhoneNumber(phoneNumber) |
92 | { |
93 | - var newContact = ContactsJS.createEmptyContact(phoneNumber, mainPage) |
94 | - //WORKAROUND: SKD changes the page header as soon as the page get created |
95 | - // setting active false will avoid that |
96 | - if (bottomEdgeEnabled) { |
97 | - mainPage.showBottomEdgePage(Qt.resolvedUrl("ABContactEditorPage.qml"), |
98 | - {model: contactList.listModel, |
99 | - contact: newContact, |
100 | - active: false, |
101 | - enabled: false, |
102 | - initialFocusSection: "name"}) |
103 | - } else { |
104 | - pageStack.addPageToNextColumn(mainPage, |
105 | + var newContact = ContactsJS.createEmptyContact(phoneNumber, mainPage); |
106 | + openEditPage({model: contactList.listModel, |
107 | + contact: newContact, |
108 | + initialFocusSection: "name"}, |
109 | + mainPage); |
110 | + } |
111 | + |
112 | + function openEditPage(editPageProperties, sourcePage) { |
113 | + var incubator = pageStack.addPageToNextColumn(sourcePage, |
114 | Qt.resolvedUrl("ABContactEditorPage.qml"), |
115 | - {model: contactList.listModel, |
116 | - contact: newContact, |
117 | - initialFocusSection: "name"}) |
118 | + editPageProperties); |
119 | + incubator.onStatusChanged = function(status) { |
120 | + if (status == Component.Ready) { |
121 | + mainPage.contactEditorPage = incubator.object; |
122 | + } |
123 | } |
124 | } |
125 | |
126 | - function showContact(contactId) |
127 | - { |
128 | - pageStack.addPageToNextColumn(mainPage, |
129 | + function openViewPage(viewPageProperties) { |
130 | + var incubator = pageStack.addPageToNextColumn(mainPage, |
131 | Qt.resolvedUrl("ABContactViewPage.qml"), |
132 | - {model: contactList.listModel, |
133 | - contactId: contactId}) |
134 | + viewPageProperties); |
135 | + incubator.onStatusChanged = function(status) { |
136 | + if (status == Component.Ready) { |
137 | + contactViewPage = incubator.object; |
138 | + } |
139 | + } |
140 | + } |
141 | + |
142 | + function showContact(contact) |
143 | + { |
144 | + mainPage.state = "default"; |
145 | + openViewPage({model: contactList.listModel, |
146 | + contact: contact}); |
147 | + } |
148 | + |
149 | + function showContactWithId(contactId) |
150 | + { |
151 | + openViewPage({model: contactList.listModel, |
152 | + contactId: contactId}); |
153 | } |
154 | |
155 | function addPhoneToContact(contactId, phoneNumber) |
156 | { |
157 | - pageStack.addPageToNextColumn(mainPage, |
158 | - Qt.resolvedUrl("ABContactViewPage.qml"), |
159 | - {model: contactList.listModel, |
160 | - contactId: contactId, |
161 | - addPhoneToContact: phoneNumber}) |
162 | + openViewPage({model: contactList.listModel, |
163 | + contactId: contactId, |
164 | + addPhoneToContact: phoneNumber}); |
165 | } |
166 | |
167 | function importContact(urls) |
168 | @@ -128,16 +144,29 @@ |
169 | contactList.reset() |
170 | } |
171 | |
172 | + function showContactEditorPage(editorPage) { |
173 | + contactList.currentIndex = -1; |
174 | + mainPage.contactEditorPage = editorPage; |
175 | + pageStack.addPageToNextColumn(mainPage, editorPage); |
176 | + editorPage.ready(); |
177 | + editorPage.contactSaved.connect(onNewContactSaved); |
178 | + } |
179 | + |
180 | + function onNewContactSaved(contact) { |
181 | + if (pageStack.columns > 1) { |
182 | + showContact(contact); |
183 | + } |
184 | + } |
185 | + |
186 | title: i18n.tr("Contacts") |
187 | - bottomEdgeTitle: "+" |
188 | - bottomEdgeEnabled: !contactList.isInSelectionMode |
189 | |
190 | flickable: null |
191 | ContactsUI.ContactListView { |
192 | id: contactList |
193 | objectName: "contactListView" |
194 | showImportOptions: !mainPage.pickMode && |
195 | - mainPage.newPhoneToAdd === "" |
196 | + mainPage.newPhoneToAdd === "" && |
197 | + (!mainPage.contactEditorPage || !mainPage.contactEditorPage.active) |
198 | anchors { |
199 | top: parent.top |
200 | left: parent.left |
201 | @@ -147,16 +176,14 @@ |
202 | filterTerm: searchField.text |
203 | multiSelectionEnabled: true |
204 | multipleSelection: (mainPage.pickMode && mainPage.pickMultipleContacts) || !mainPage.pickMode |
205 | + highlightedContact: contactViewPage ? contactViewPage.contact : |
206 | + contactEditorPage ? contactEditorPage.contact : null |
207 | |
208 | onAddContactClicked: mainPage.createContactWithPhoneNumber(label) |
209 | onAddNewContactClicked: mainPage.createContactWithPhoneNumber(mainPage.newPhoneToAdd) |
210 | |
211 | onContactClicked: { |
212 | - mainPage.state = "default" |
213 | - pageStack.addPageToNextColumn(mainPage, |
214 | - Qt.resolvedUrl("ABContactViewPage.qml"), |
215 | - {model: contactList.listModel, |
216 | - contact: contact}) |
217 | + showContact(contact); |
218 | } |
219 | onIsInSelectionModeChanged: mainPage.state = isInSelectionMode ? "selection" : "default" |
220 | onSelectionCanceled: { |
221 | @@ -353,9 +380,8 @@ |
222 | actions: selectionState.actions |
223 | } |
224 | PropertyChanges { |
225 | - target: mainPage |
226 | - bottomEdgeEnabled: false |
227 | - title: " " |
228 | + target: bottomEdge |
229 | + enabled: false |
230 | } |
231 | }, |
232 | PageHeadState { |
233 | @@ -368,10 +394,13 @@ |
234 | } |
235 | PropertyChanges { |
236 | target: mainPage |
237 | - bottomEdgeEnabled: false |
238 | title: i18n.tr("Add contact") |
239 | } |
240 | PropertyChanges { |
241 | + target: bottomEdge |
242 | + enabled: false |
243 | + } |
244 | + PropertyChanges { |
245 | target: contactList |
246 | detailToPick: -1 |
247 | } |
248 | @@ -386,8 +415,8 @@ |
249 | showAddNewButton: true |
250 | } |
251 | PropertyChanges { |
252 | - target: mainPage |
253 | - bottomEdgeEnabled: false |
254 | + target: bottomEdge |
255 | + enabled: false |
256 | } |
257 | } |
258 | ] |
259 | @@ -397,20 +426,6 @@ |
260 | } |
261 | } |
262 | |
263 | - // We need to reset the page proprerties in case of the page was created pre-populated, |
264 | - // with phonenumber or contact. |
265 | - onBottomEdgeDismissed: { |
266 | - //WORKAROUND: SKD changes the page header as soon as the page get created |
267 | - // setting active false will avoid that |
268 | - var newContact = ContactsUI.ContactsJS.createEmptyContact("", mainPage) |
269 | - mainPage.setBottomEdgePage(Qt.resolvedUrl("ABContactEditorPage.qml"), |
270 | - {model: contactList.listModel, |
271 | - contact: newContact, |
272 | - active: false, |
273 | - enabled: false, |
274 | - initialFocusSection: "name"}) |
275 | - } |
276 | - |
277 | KeyboardRectangle { |
278 | id: keyboard |
279 | } |
280 | @@ -426,7 +441,8 @@ |
281 | !contactList.favouritesIsSelected && |
282 | mainPage.isEmpty && |
283 | (mainPage.newPhoneToAdd === "") && |
284 | - !(contactList.filterTerm && contactList.filterTerm !== "")) |
285 | + !(contactList.filterTerm && contactList.filterTerm !== "")) && |
286 | + bottomEdge.visible |
287 | |
288 | Behavior on visible { |
289 | SequentialAnimation { |
290 | @@ -526,15 +542,126 @@ |
291 | contactList.listModel.importContacts("file://" + TEST_DATA) |
292 | } |
293 | |
294 | - mainPage.setBottomEdgePage(Qt.resolvedUrl("ABContactEditorPage.qml"), |
295 | - {model: contactList.listModel, |
296 | - contact: ContactsUI.ContactsJS.createEmptyContact("", mainPage), |
297 | - active: false, |
298 | - enabled: false, |
299 | - initialFocusSection: "name"}) |
300 | - |
301 | if (pageStack) { |
302 | pageStack.contactListPage = mainPage |
303 | } |
304 | } |
305 | + |
306 | + Component { |
307 | + id: editorPageBottomEdge |
308 | + ABContactEditorPage { |
309 | + backIconName: "down" |
310 | + implicitWidth: mainPage.width |
311 | + implicitHeight: mainPage.height |
312 | + model: contactList.listModel |
313 | + contact: ContactsJS.createEmptyContact("", mainPage) |
314 | + initialFocusSection: "name" |
315 | + enabled: false |
316 | + } |
317 | + } |
318 | + |
319 | + Component { |
320 | + id: emptyContact |
321 | + ContactsUI.ContactDelegate { |
322 | + property Contact contact: Contact { |
323 | + Name { |
324 | + firstName: i18n.tr("New contact") |
325 | + } |
326 | + Avatar { |
327 | + imageUrl: "image://theme/contact" |
328 | + } |
329 | + } |
330 | + width: mainPage.width |
331 | + } |
332 | + } |
333 | + |
334 | + BottomEdge { |
335 | + id: bottomEdge |
336 | + objectName: "bottomEdge" |
337 | + |
338 | + property var incubator |
339 | + |
340 | + // FIXME: this is a workaround for the lack of fully asynchronous loading |
341 | + // of Pages in AdaptativePageLayout |
342 | + function createObjectAsynchronously(url, properties, callback) { |
343 | + var component = Qt.createComponent(url, Component.Asynchronous); |
344 | + if (component.status == Component.Ready) { |
345 | + incubateObject(component, properties, callback); |
346 | + } else { |
347 | + component.onStatusChanged.connect(function(status) { |
348 | + if (status == Component.Ready) { |
349 | + incubateObject(component, properties, callback); |
350 | + } |
351 | + }); |
352 | + } |
353 | + } |
354 | + |
355 | + function incubateObject(component, properties, callback) { |
356 | + if (component.status == Component.Ready) { |
357 | + incubator = component.incubateObject(null, |
358 | + properties, |
359 | + Qt.Asynchronous); |
360 | + incubator.onStatusChanged = function(status) { |
361 | + if (status == Component.Ready) { |
362 | + callback(incubator.object); |
363 | + incubator = null; |
364 | + } |
365 | + } |
366 | + } |
367 | + } |
368 | + |
369 | + function loadEditorPage() { |
370 | + var newContact = ContactsJS.createEmptyContact("", mainPage); |
371 | + createObjectAsynchronously(Qt.resolvedUrl("ABContactEditorPage.qml"), |
372 | + {model: contactList.listModel, |
373 | + contact: newContact, |
374 | + initialFocusSection: "name"}, |
375 | + showContactEditorPage); |
376 | + } |
377 | + |
378 | + anchors.fill: parent |
379 | + contentComponent: pageStack.columns == 1 ? editorPageBottomEdge : emptyContact |
380 | + flickable: contactList |
381 | + iconName: "contact-new" |
382 | + enabled: !contactList.isInSelectionMode |
383 | + backGroundEffectEnabled: pageStack.columns === 1 |
384 | + |
385 | + onOpenBegin: { |
386 | + contactList.prepareNewContact = true; |
387 | + contactList.positionViewAtBeginning(); |
388 | + if (pageStack.columns > 1) { |
389 | + loadEditorPage(); |
390 | + } |
391 | + } |
392 | + onOpenEnd: { |
393 | + bottomEdge.visible = false; |
394 | + contactList.showNewContact = true; |
395 | + if (pageStack.columns <= 1) { |
396 | + showContactEditorPage(bottomEdge.content); |
397 | + } |
398 | + } |
399 | + |
400 | + onClicked: { |
401 | + bottomEdge.open(); |
402 | + } |
403 | + } |
404 | + |
405 | + Connections { |
406 | + target: mainPage.contactViewPage |
407 | + onEditContact: { |
408 | + openEditPage(editPageProperties, mainPage.contactViewPage); |
409 | + } |
410 | + } |
411 | + |
412 | + Connections { |
413 | + target: mainPage.contactEditorPage |
414 | + onActiveChanged: { |
415 | + if (!mainPage.contactEditorPage.active) { |
416 | + contactList.prepareNewContact = false; |
417 | + contactList.showNewContact = false; |
418 | + bottomEdge.visible = true; |
419 | + bottomEdge.close(); |
420 | + } |
421 | + } |
422 | + } |
423 | } |
424 | |
425 | === modified file 'src/imports/ABContactViewPage.qml' |
426 | --- src/imports/ABContactViewPage.qml 2015-10-26 13:18:17 +0000 |
427 | +++ src/imports/ABContactViewPage.qml 2015-10-26 13:18:18 +0000 |
428 | @@ -14,7 +14,7 @@ |
429 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
430 | */ |
431 | |
432 | -import QtQuick 2.2 |
433 | +import QtQuick 2.4 |
434 | import Ubuntu.Components 1.3 |
435 | import Ubuntu.Components.Popups 1.3 as Popups |
436 | import Ubuntu.Contacts 0.1 |
437 | @@ -28,10 +28,13 @@ |
438 | objectName: "contactViewPage" |
439 | |
440 | property string addPhoneToContact: "" |
441 | + signal editContact(var editPageProperties) |
442 | |
443 | head.actions: [ |
444 | Action { |
445 | objectName: "share" |
446 | + name: "share" |
447 | + |
448 | text: i18n.tr("Share") |
449 | iconName: "share" |
450 | onTriggered: { |
451 | @@ -43,13 +46,13 @@ |
452 | }, |
453 | Action { |
454 | objectName: "edit" |
455 | + name: "edit" |
456 | + |
457 | text: i18n.tr("Edit") |
458 | iconName: "edit" |
459 | onTriggered: { |
460 | - pageStack.addPageToCurrentColumn(root, |
461 | - Qt.resolvedUrl("ABContactEditorPage.qml"), |
462 | - {model: root.model, |
463 | - contact: root.contact}) |
464 | + editContact({model: root.model, |
465 | + contact: root.contact}); |
466 | } |
467 | } |
468 | ] |
469 | @@ -73,11 +76,10 @@ |
470 | var newDetail = Qt.createQmlObject(detailSourceTemplate, contact) |
471 | if (newDetail) { |
472 | contact.addDetail(newDetail) |
473 | - pageStack.addPageToCurrentColumn(root, Qt.resolvedUrl("ABContactEditorPage.qml"), |
474 | - { model: root.model, |
475 | - contact: contact, |
476 | - initialFocusSection: "phones", |
477 | - newDetails: [newDetail]}) |
478 | + editContact({ model: root.model, |
479 | + contact: contact, |
480 | + initialFocusSection: "phones", |
481 | + newDetails: [newDetail] }) |
482 | root.addPhoneToContact = "" |
483 | } |
484 | } |
485 | |
486 | === added file 'src/imports/BottomEdge.qml' |
487 | --- src/imports/BottomEdge.qml 1970-01-01 00:00:00 +0000 |
488 | +++ src/imports/BottomEdge.qml 2015-10-26 13:18:18 +0000 |
489 | @@ -0,0 +1,321 @@ |
490 | +/* |
491 | + * Copyright (C) 2015 Canonical, Ltd. |
492 | + * |
493 | + * This program is free software; you can redistribute it and/or modify |
494 | + * it under the terms of the GNU General Public License as published by |
495 | + * the Free Software Foundation; version 3. |
496 | + * |
497 | + * This program is distributed in the hope that it will be useful, |
498 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
499 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
500 | + * GNU General Public License for more details. |
501 | + * |
502 | + * You should have received a copy of the GNU General Public License |
503 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
504 | + */ |
505 | + |
506 | +import QtQuick 2.4 |
507 | +import Ubuntu.Components 1.3 |
508 | + |
509 | +Item { |
510 | + id: bottomEdge |
511 | + |
512 | + readonly property alias content: bottomEdgeLoader.item |
513 | + readonly property bool fullLoaded: bottomEdgeLoader.status == Loader.Ready |
514 | + |
515 | + property bool opened: false |
516 | + property Component contentComponent |
517 | + property string iconName |
518 | + property Item flickable |
519 | + property alias backGroundEffectEnabled: darkBg.visible |
520 | + |
521 | + signal openBegin |
522 | + signal openEnd |
523 | + signal clicked |
524 | + visible: enabled |
525 | + |
526 | + function open() { |
527 | + bottomEdge.state = "expanded"; |
528 | + } |
529 | + |
530 | + function close() { |
531 | + bottomEdge.state = "collapsed"; |
532 | + } |
533 | + |
534 | + Rectangle { |
535 | + id: darkBg |
536 | + |
537 | + anchors.fill: parent |
538 | + color: "black" |
539 | + opacity: 0.0 |
540 | + } |
541 | + |
542 | + Item { |
543 | + id: bottomEdgeBody |
544 | + anchors { |
545 | + left: parent.left |
546 | + right: parent.right |
547 | + } |
548 | + height: bottomEdgeContent.height |
549 | + |
550 | + Item { |
551 | + id: bottomEdgeContent |
552 | + anchors { |
553 | + left: parent.left |
554 | + right: parent.right |
555 | + } |
556 | + height: bottomEdgeLoader.height |
557 | + |
558 | + Item { |
559 | + id: bottomEdgeShadows |
560 | + anchors.fill: bottomEdgeContent |
561 | + |
562 | + BottomEdgeShadow { |
563 | + anchors.bottom: parent.top |
564 | + } |
565 | + |
566 | + BottomEdgeShadow { |
567 | + anchors.top: parent.bottom |
568 | + rotation: 180 |
569 | + } |
570 | + } |
571 | + |
572 | + Rectangle { |
573 | + anchors.fill: parent |
574 | + color: Theme.palette.normal.background |
575 | + } |
576 | + |
577 | + Loader { |
578 | + id: bottomEdgeLoader |
579 | + sourceComponent: bottomEdge.contentComponent |
580 | + asynchronous: true |
581 | + } |
582 | + } |
583 | + |
584 | + |
585 | + BottomEdgeHint { |
586 | + id: bottomEdgeHint |
587 | + |
588 | + anchors.bottom: bottomEdgeBody.top |
589 | + iconName: bottomEdge.iconName |
590 | + onClicked: bottomEdge.clicked() |
591 | + |
592 | + Connections { |
593 | + target: bottomEdgeDragArea |
594 | + onClosedChanged: { |
595 | + if (!bottomEdgeDragArea.closed) { |
596 | + bottomEdgeHint.state = "Visible"; |
597 | + } |
598 | + } |
599 | + } |
600 | + |
601 | + Connections { |
602 | + target: flickable |
603 | + onVerticalVelocityChanged: { |
604 | + if (!bottomEdgeDragArea.closed) { |
605 | + return; |
606 | + } |
607 | + |
608 | + if (flickable.verticalVelocity > 0) { |
609 | + bottomEdgeHint.state = "Hidden"; |
610 | + } else if (flickable.verticalVelocity < 0) { |
611 | + bottomEdgeHint.state = "Visible"; |
612 | + } |
613 | + } |
614 | + } |
615 | + } |
616 | + } |
617 | + |
618 | + |
619 | + state: "collapsed" |
620 | + states: [ |
621 | + State { |
622 | + name: "collapsed" |
623 | + ParentChange { |
624 | + target: bottomEdgeContent |
625 | + parent: bottomEdgeBody |
626 | + x: 0 |
627 | + y: 0 |
628 | + } |
629 | + PropertyChanges { |
630 | + target: bottomEdgeBody |
631 | + y: bottomEdgeDragArea.drag.maximumY |
632 | + } |
633 | + PropertyChanges { |
634 | + target: bottomEdgeContent |
635 | + opacity: 0.0 |
636 | + } |
637 | + PropertyChanges { |
638 | + target: darkBg |
639 | + opacity: 0.0 |
640 | + } |
641 | + }, |
642 | + State { |
643 | + name: "expanded" |
644 | + ParentChange { |
645 | + target: bottomEdgeContent |
646 | + parent: bottomEdge |
647 | + x: 0 |
648 | + y: 0 |
649 | + } |
650 | + PropertyChanges { |
651 | + target: bottomEdgeContent |
652 | + opacity: 1.0 |
653 | + } |
654 | + PropertyChanges { |
655 | + target: bottomEdgeBody |
656 | + y: 0 |
657 | + } |
658 | + PropertyChanges { |
659 | + target: bottomEdgeShadows |
660 | + opacity: 0.0 |
661 | + visible: true |
662 | + } |
663 | + PropertyChanges { |
664 | + target: darkBg |
665 | + opacity: 0.8 |
666 | + } |
667 | + }, |
668 | + State { |
669 | + name: "floating" |
670 | + when: bottomEdgeDragArea.drag.active |
671 | + PropertyChanges { |
672 | + target: bottomEdgeContent |
673 | + opacity: 1.0 |
674 | + } |
675 | + PropertyChanges { |
676 | + target: darkBg |
677 | + opacity: bottomEdgeBody.y > 0 ? 0.8 - (bottomEdgeBody.y / bottomEdgeDragArea.drag.maximumY) : 0.8 |
678 | + } |
679 | + } |
680 | + ] |
681 | + |
682 | + transitions: [ |
683 | + Transition { |
684 | + to: "collapsed" |
685 | + SequentialAnimation { |
686 | + alwaysRunToEnd: true |
687 | + ParallelAnimation { |
688 | + ParentAnimation { |
689 | + UbuntuNumberAnimation { |
690 | + properties: "x,y" |
691 | + duration: UbuntuAnimation.SlowDuration |
692 | + target: bottomEdgeContent |
693 | + } |
694 | + } |
695 | + UbuntuNumberAnimation { |
696 | + target: bottomEdgeBody |
697 | + property: "y" |
698 | + duration: UbuntuAnimation.SlowDuration |
699 | + } |
700 | + UbuntuNumberAnimation { |
701 | + target: darkBg |
702 | + property: "opacity" |
703 | + duration: UbuntuAnimation.SlowDuration |
704 | + } |
705 | + } |
706 | + PropertyAction { |
707 | + target: bottomEdgeContent |
708 | + property: "opacity" |
709 | + } |
710 | + ScriptAction { |
711 | + script: { |
712 | + bottomEdgeLoader.active = false |
713 | + bottomEdgeLoader.active = true |
714 | + bottomEdge.opened = false |
715 | + } |
716 | + } |
717 | + } |
718 | + }, |
719 | + Transition { |
720 | + to: "expanded" |
721 | + SequentialAnimation { |
722 | + alwaysRunToEnd: true |
723 | + ParallelAnimation { |
724 | + ScriptAction { |
725 | + script: bottomEdge.openBegin() |
726 | + } |
727 | + ParentAnimation { |
728 | + UbuntuNumberAnimation { |
729 | + properties: "x,y" |
730 | + duration: UbuntuAnimation.SlowDuration |
731 | + target: bottomEdgeContent |
732 | + } |
733 | + } |
734 | + UbuntuNumberAnimation { |
735 | + target: bottomEdgeShadows |
736 | + property: "opacity" |
737 | + duration: UbuntuAnimation.SlowDuration |
738 | + } |
739 | + UbuntuNumberAnimation { |
740 | + target: darkBg |
741 | + property: "opacity" |
742 | + duration: UbuntuAnimation.SlowDuration |
743 | + } |
744 | + } |
745 | + UbuntuNumberAnimation { |
746 | + target: bottomEdgeContent |
747 | + property: "opacity" |
748 | + duration: UbuntuAnimation.FastDuration |
749 | + } |
750 | + ScriptAction { |
751 | + script: { |
752 | + bottomEdge.opened = true |
753 | + bottomEdge.openEnd() |
754 | + } |
755 | + |
756 | + } |
757 | + } |
758 | + } |
759 | + ] |
760 | + |
761 | + MouseArea { |
762 | + id: bottomEdgeDragArea |
763 | + objectName: "bottomEdgeDragArea" |
764 | + |
765 | + property real previousY: -1 |
766 | + property string dragDirection: "None" |
767 | + property bool closed: drag.target.y == bottomEdgeDragArea.drag.maximumY |
768 | + && !bottomEdgeDragArea.pressed |
769 | + |
770 | + preventStealing: true |
771 | + propagateComposedEvents: true |
772 | + drag { |
773 | + axis: Drag.YAxis |
774 | + target: bottomEdgeBody |
775 | + minimumY: 0 |
776 | + maximumY: bottomEdge.height |
777 | + } |
778 | + |
779 | + anchors { |
780 | + left: parent.left |
781 | + right: parent.right |
782 | + bottom: parent.bottom |
783 | + } |
784 | + height: bottomEdgeHint.height |
785 | + |
786 | + onPressed: { |
787 | + previousY = mouse.y; |
788 | + } |
789 | + |
790 | + onReleased: { |
791 | + if (dragDirection === "BottomToTop") { |
792 | + bottomEdge.state = "expanded"; |
793 | + } else { |
794 | + bottomEdge.state = "collapsed"; |
795 | + } |
796 | + previousY = -1; |
797 | + dragDirection = "None"; |
798 | + } |
799 | + |
800 | + onMouseYChanged: { |
801 | + var yOffset = previousY - mouseY; |
802 | + // skip if was a small move |
803 | + if (Math.abs(yOffset) <= units.gu(2)) { |
804 | + return; |
805 | + } |
806 | + previousY = mouseY; |
807 | + dragDirection = yOffset > 0 ? "BottomToTop" : "TopToBottom"; |
808 | + } |
809 | + } |
810 | +} |
811 | |
812 | === added file 'src/imports/BottomEdgeShadow.qml' |
813 | --- src/imports/BottomEdgeShadow.qml 1970-01-01 00:00:00 +0000 |
814 | +++ src/imports/BottomEdgeShadow.qml 2015-10-26 13:18:18 +0000 |
815 | @@ -0,0 +1,31 @@ |
816 | +/* |
817 | + * Copyright (C) 2015 Canonical, Ltd. |
818 | + * |
819 | + * This program is free software; you can redistribute it and/or modify |
820 | + * it under the terms of the GNU General Public License as published by |
821 | + * the Free Software Foundation; version 3. |
822 | + * |
823 | + * This program is distributed in the hope that it will be useful, |
824 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
825 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
826 | + * GNU General Public License for more details. |
827 | + * |
828 | + * You should have received a copy of the GNU General Public License |
829 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
830 | + */ |
831 | + |
832 | +import QtQuick 2.4 |
833 | +import Ubuntu.Components 1.3 |
834 | + |
835 | +Rectangle { |
836 | + id: bottomEdgeShadow |
837 | + anchors { |
838 | + left: parent.left |
839 | + right: parent.right |
840 | + } |
841 | + height: units.gu(1) |
842 | + gradient: Gradient { |
843 | + GradientStop { position: 0.0; color: Qt.rgba(0.0, 0.0, 0.0, 0.0) } |
844 | + GradientStop { position: 1.0; color: Qt.rgba(0.0, 0.0, 0.0, 0.3) } |
845 | + } |
846 | +} |
847 | |
848 | === modified file 'src/imports/CMakeLists.txt' |
849 | --- src/imports/CMakeLists.txt 2015-09-03 17:15:32 +0000 |
850 | +++ src/imports/CMakeLists.txt 2015-10-26 13:18:18 +0000 |
851 | @@ -7,6 +7,8 @@ |
852 | ContentHubProxy.qml |
853 | MainWindow.qml |
854 | VCardImportDialog.qml |
855 | + BottomEdgeShadow.qml |
856 | + BottomEdge.qml |
857 | ) |
858 | |
859 | install(FILES ${ADDRESS_BOOK_APP_QMLS} |
860 | |
861 | === modified file 'src/imports/ContentHubProxy.qml' |
862 | --- src/imports/ContentHubProxy.qml 2015-05-07 17:27:16 +0000 |
863 | +++ src/imports/ContentHubProxy.qml 2015-10-26 13:18:18 +0000 |
864 | @@ -14,7 +14,7 @@ |
865 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
866 | */ |
867 | |
868 | -import QtQuick 2.2 |
869 | +import QtQuick 2.4 |
870 | import Ubuntu.Content 0.1 as ContentHub |
871 | |
872 | QtObject { |
873 | |
874 | === modified file 'src/imports/MainWindow.qml' |
875 | --- src/imports/MainWindow.qml 2015-10-26 13:18:17 +0000 |
876 | +++ src/imports/MainWindow.qml 2015-10-26 13:18:18 +0000 |
877 | @@ -14,7 +14,7 @@ |
878 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
879 | */ |
880 | |
881 | -import QtQuick 2.2 |
882 | +import QtQuick 2.4 |
883 | import Ubuntu.Components 1.3 |
884 | import Ubuntu.Components.Popups 1.3 as Popups |
885 | |
886 | @@ -31,7 +31,7 @@ |
887 | { |
888 | mainStack.resetStack() |
889 | if (mainStack.contactListPage) { |
890 | - mainStack.contactListPage.showContact(contactId) |
891 | + mainStack.contactListPage.showContactWithId(contactId) |
892 | } else { |
893 | console.error("Contact preview requested but ContactListPage not loaded") |
894 | } |
895 | @@ -122,10 +122,30 @@ |
896 | } |
897 | |
898 | anchors.fill: parent |
899 | + layouts: [ |
900 | + PageColumnsLayout { |
901 | + when: mainStack.width >= units.gu(80) |
902 | + PageColumn { |
903 | + maximumWidth: units.gu(50) |
904 | + minimumWidth: units.gu(40) |
905 | + preferredWidth: units.gu(40) |
906 | + } |
907 | + PageColumn { |
908 | + fillWidth: true |
909 | + } |
910 | + }, |
911 | + PageColumnsLayout { |
912 | + when: true |
913 | + PageColumn { |
914 | + fillWidth: true |
915 | + } |
916 | + } |
917 | + ] |
918 | } |
919 | |
920 | ABContactListPage { |
921 | id: contactPage |
922 | + pageStack: mainStack |
923 | } |
924 | |
925 | Component.onCompleted: { |
926 | |
927 | === modified file 'src/imports/Settings/MyselfPhoneNumbersModel.qml' |
928 | --- src/imports/Settings/MyselfPhoneNumbersModel.qml 2015-03-16 12:57:43 +0000 |
929 | +++ src/imports/Settings/MyselfPhoneNumbersModel.qml 2015-10-26 13:18:18 +0000 |
930 | @@ -14,7 +14,7 @@ |
931 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
932 | */ |
933 | |
934 | -import QtQuick 2.2 |
935 | +import QtQuick 2.4 |
936 | import MeeGo.QOfono 0.2 |
937 | import Ubuntu.Telephony.PhoneNumber 0.1 |
938 | |
939 | |
940 | === modified file 'src/imports/Settings/SettingsPage.qml' |
941 | --- src/imports/Settings/SettingsPage.qml 2015-10-26 13:18:17 +0000 |
942 | +++ src/imports/Settings/SettingsPage.qml 2015-10-26 13:18:18 +0000 |
943 | @@ -14,7 +14,7 @@ |
944 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
945 | */ |
946 | |
947 | -import QtQuick 2.2 |
948 | +import QtQuick 2.4 |
949 | import QtContacts 5.0 |
950 | |
951 | import Ubuntu.Components 1.3 |
952 | |
953 | === modified file 'src/imports/Ubuntu/AddressBook/Base/ContactDetailBase.qml' |
954 | --- src/imports/Ubuntu/AddressBook/Base/ContactDetailBase.qml 2015-10-26 13:18:17 +0000 |
955 | +++ src/imports/Ubuntu/AddressBook/Base/ContactDetailBase.qml 2015-10-26 13:18:18 +0000 |
956 | @@ -14,7 +14,7 @@ |
957 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
958 | */ |
959 | |
960 | -import QtQuick 2.2 |
961 | +import QtQuick 2.4 |
962 | import QtContacts 5.0 as QtContacts |
963 | import Ubuntu.Components.ListItems 1.3 as ListItem |
964 | |
965 | |
966 | === modified file 'src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupBase.qml' |
967 | --- src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupBase.qml 2015-05-07 17:27:16 +0000 |
968 | +++ src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupBase.qml 2015-10-26 13:18:18 +0000 |
969 | @@ -14,7 +14,7 @@ |
970 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
971 | */ |
972 | |
973 | -import QtQuick 2.2 |
974 | +import QtQuick 2.4 |
975 | |
976 | FocusScope { |
977 | id: root |
978 | |
979 | === modified file 'src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupWithTypeBase.qml' |
980 | --- src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupWithTypeBase.qml 2015-05-07 17:27:16 +0000 |
981 | +++ src/imports/Ubuntu/AddressBook/Base/ContactDetailGroupWithTypeBase.qml 2015-10-26 13:18:18 +0000 |
982 | @@ -14,7 +14,7 @@ |
983 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
984 | */ |
985 | |
986 | -import QtQuick 2.2 |
987 | +import QtQuick 2.4 |
988 | import QtContacts 5.0 as QtContacts |
989 | |
990 | ContactDetailGroupBase { |
991 | |
992 | === modified file 'src/imports/Ubuntu/AddressBook/Base/ContactDetailItem.qml' |
993 | --- src/imports/Ubuntu/AddressBook/Base/ContactDetailItem.qml 2015-10-26 13:18:17 +0000 |
994 | +++ src/imports/Ubuntu/AddressBook/Base/ContactDetailItem.qml 2015-10-26 13:18:18 +0000 |
995 | @@ -14,7 +14,7 @@ |
996 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
997 | */ |
998 | |
999 | -import QtQuick 2.2 |
1000 | +import QtQuick 2.4 |
1001 | |
1002 | import Ubuntu.Components 1.3 |
1003 | import Ubuntu.Contacts 0.1 |
1004 | |
1005 | === modified file 'src/imports/Ubuntu/AddressBook/Base/ContactExporter.qml' |
1006 | --- src/imports/Ubuntu/AddressBook/Base/ContactExporter.qml 2015-10-26 13:18:17 +0000 |
1007 | +++ src/imports/Ubuntu/AddressBook/Base/ContactExporter.qml 2015-10-26 13:18:18 +0000 |
1008 | @@ -14,7 +14,7 @@ |
1009 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1010 | */ |
1011 | |
1012 | -import QtQuick 2.2 |
1013 | +import QtQuick 2.4 |
1014 | import QtContacts 5.0 |
1015 | |
1016 | import Ubuntu.Components 1.3 |
1017 | |
1018 | === modified file 'src/imports/Ubuntu/AddressBook/Base/KeyboardRectangle.qml' |
1019 | --- src/imports/Ubuntu/AddressBook/Base/KeyboardRectangle.qml 2015-05-07 17:27:16 +0000 |
1020 | +++ src/imports/Ubuntu/AddressBook/Base/KeyboardRectangle.qml 2015-10-26 13:18:18 +0000 |
1021 | @@ -14,7 +14,7 @@ |
1022 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1023 | */ |
1024 | |
1025 | -import QtQuick 2.2 |
1026 | +import QtQuick 2.4 |
1027 | |
1028 | Item { |
1029 | id: keyboardRect |
1030 | |
1031 | === modified file 'src/imports/Ubuntu/AddressBook/Base/RemoveContactsDialog.qml' |
1032 | --- src/imports/Ubuntu/AddressBook/Base/RemoveContactsDialog.qml 2015-10-26 13:18:17 +0000 |
1033 | +++ src/imports/Ubuntu/AddressBook/Base/RemoveContactsDialog.qml 2015-10-26 13:18:18 +0000 |
1034 | @@ -14,7 +14,7 @@ |
1035 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1036 | */ |
1037 | |
1038 | -import QtQuick 2.2 |
1039 | +import QtQuick 2.4 |
1040 | import Ubuntu.Components 1.3 |
1041 | import Ubuntu.Components.Popups 1.3 |
1042 | |
1043 | |
1044 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/AvatarImport.qml' |
1045 | --- src/imports/Ubuntu/AddressBook/ContactEditor/AvatarImport.qml 2015-10-26 13:18:17 +0000 |
1046 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/AvatarImport.qml 2015-10-26 13:18:18 +0000 |
1047 | @@ -14,7 +14,7 @@ |
1048 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1049 | */ |
1050 | |
1051 | -import QtQuick 2.2 |
1052 | +import QtQuick 2.4 |
1053 | |
1054 | import Ubuntu.Components 1.3 |
1055 | import Ubuntu.Components.Popups 1.3 |
1056 | |
1057 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ComboButtonAddField.qml' |
1058 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ComboButtonAddField.qml 2015-10-26 13:18:17 +0000 |
1059 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ComboButtonAddField.qml 2015-10-26 13:18:18 +0000 |
1060 | @@ -14,7 +14,7 @@ |
1061 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1062 | */ |
1063 | |
1064 | -import QtQuick 2.2 |
1065 | +import QtQuick 2.4 |
1066 | import QtContacts 5.0 |
1067 | |
1068 | import Ubuntu.Components 1.3 |
1069 | |
1070 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAddressesEditor.qml' |
1071 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAddressesEditor.qml 2015-05-07 17:27:16 +0000 |
1072 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAddressesEditor.qml 2015-10-26 13:18:18 +0000 |
1073 | @@ -14,7 +14,7 @@ |
1074 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1075 | */ |
1076 | |
1077 | -import QtQuick 2.2 |
1078 | +import QtQuick 2.4 |
1079 | import QtContacts 5.0 |
1080 | |
1081 | import Ubuntu.Contacts 0.1 |
1082 | |
1083 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAvatarEditor.qml' |
1084 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAvatarEditor.qml 2015-10-26 13:18:17 +0000 |
1085 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailAvatarEditor.qml 2015-10-26 13:18:18 +0000 |
1086 | @@ -14,7 +14,7 @@ |
1087 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1088 | */ |
1089 | |
1090 | -import QtQuick 2.2 |
1091 | +import QtQuick 2.4 |
1092 | import QtContacts 5.0 |
1093 | |
1094 | import Ubuntu.Components 1.3 |
1095 | @@ -73,12 +73,12 @@ |
1096 | radius: "medium" |
1097 | anchors.fill: parent |
1098 | source: avatarImage.source != defaultAvatar ? avatarImage : null |
1099 | + sourceFillMode: UbuntuShape.PreserveAspectCrop |
1100 | |
1101 | Image { |
1102 | id: avatarImage |
1103 | objectName: "avatarImage" |
1104 | |
1105 | - fillMode: Image.PreserveAspectCrop |
1106 | asynchronous: true |
1107 | source: root.getAvatar(root.detail) |
1108 | anchors.centerIn: visible ? avatar : undefined |
1109 | |
1110 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailEmailsEditor.qml' |
1111 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailEmailsEditor.qml 2015-05-07 17:27:16 +0000 |
1112 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailEmailsEditor.qml 2015-10-26 13:18:18 +0000 |
1113 | @@ -14,7 +14,7 @@ |
1114 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1115 | */ |
1116 | |
1117 | -import QtQuick 2.2 |
1118 | +import QtQuick 2.4 |
1119 | import QtContacts 5.0 |
1120 | |
1121 | import Ubuntu.Contacts 0.1 |
1122 | |
1123 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailGroupWithTypeEditor.qml' |
1124 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailGroupWithTypeEditor.qml 2015-10-26 13:18:17 +0000 |
1125 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailGroupWithTypeEditor.qml 2015-10-26 13:18:18 +0000 |
1126 | @@ -14,7 +14,7 @@ |
1127 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1128 | */ |
1129 | |
1130 | -import QtQuick 2.2 |
1131 | +import QtQuick 2.4 |
1132 | import QtContacts 5.0 |
1133 | |
1134 | import Ubuntu.Components 1.3 |
1135 | |
1136 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailNameEditor.qml' |
1137 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailNameEditor.qml 2015-10-26 13:18:17 +0000 |
1138 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailNameEditor.qml 2015-10-26 13:18:18 +0000 |
1139 | @@ -14,7 +14,7 @@ |
1140 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1141 | */ |
1142 | |
1143 | -import QtQuick 2.2 |
1144 | +import QtQuick 2.4 |
1145 | import QtContacts 5.0 |
1146 | |
1147 | import Ubuntu.Components 1.3 |
1148 | |
1149 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOnlineAccountsEditor.qml' |
1150 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOnlineAccountsEditor.qml 2015-05-07 17:27:16 +0000 |
1151 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOnlineAccountsEditor.qml 2015-10-26 13:18:18 +0000 |
1152 | @@ -14,7 +14,7 @@ |
1153 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1154 | */ |
1155 | |
1156 | -import QtQuick 2.2 |
1157 | +import QtQuick 2.4 |
1158 | import QtContacts 5.0 |
1159 | |
1160 | import Ubuntu.Contacts 0.1 |
1161 | |
1162 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOrganizationsEditor.qml' |
1163 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOrganizationsEditor.qml 2015-05-07 17:27:16 +0000 |
1164 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailOrganizationsEditor.qml 2015-10-26 13:18:18 +0000 |
1165 | @@ -14,7 +14,7 @@ |
1166 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1167 | */ |
1168 | |
1169 | -import QtQuick 2.2 |
1170 | +import QtQuick 2.4 |
1171 | import QtContacts 5.0 |
1172 | |
1173 | ContactDetailGroupWithTypeEditor { |
1174 | |
1175 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailPhoneNumbersEditor.qml' |
1176 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailPhoneNumbersEditor.qml 2015-05-07 17:27:16 +0000 |
1177 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailPhoneNumbersEditor.qml 2015-10-26 13:18:18 +0000 |
1178 | @@ -14,7 +14,7 @@ |
1179 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1180 | */ |
1181 | |
1182 | -import QtQuick 2.2 |
1183 | +import QtQuick 2.4 |
1184 | import QtContacts 5.0 |
1185 | |
1186 | import Ubuntu.Contacts 0.1 |
1187 | |
1188 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailSyncTargetEditor.qml' |
1189 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailSyncTargetEditor.qml 2015-10-26 13:18:17 +0000 |
1190 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailSyncTargetEditor.qml 2015-10-26 13:18:18 +0000 |
1191 | @@ -14,7 +14,7 @@ |
1192 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1193 | */ |
1194 | |
1195 | -import QtQuick 2.2 |
1196 | +import QtQuick 2.4 |
1197 | import QtContacts 5.0 |
1198 | |
1199 | import Ubuntu.Components 1.3 |
1200 | |
1201 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailWithTypeEditor.qml' |
1202 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailWithTypeEditor.qml 2015-10-26 13:18:17 +0000 |
1203 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactDetailWithTypeEditor.qml 2015-10-26 13:18:18 +0000 |
1204 | @@ -14,7 +14,7 @@ |
1205 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1206 | */ |
1207 | |
1208 | -import QtQuick 2.2 |
1209 | +import QtQuick 2.4 |
1210 | import QtContacts 5.0 |
1211 | |
1212 | import Ubuntu.Components 1.3 |
1213 | |
1214 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ContactEditorPage.qml' |
1215 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ContactEditorPage.qml 2015-10-26 13:18:17 +0000 |
1216 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ContactEditorPage.qml 2015-10-26 13:18:18 +0000 |
1217 | @@ -14,7 +14,7 @@ |
1218 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1219 | */ |
1220 | |
1221 | -import QtQuick 2.2 |
1222 | +import QtQuick 2.4 |
1223 | import QtContacts 5.0 |
1224 | |
1225 | import Ubuntu.Components 1.3 |
1226 | @@ -55,7 +55,11 @@ |
1227 | field.cancel() |
1228 | } |
1229 | } |
1230 | - pageStack.removePages(contactEditor) |
1231 | + if (pageStack.removePages) { |
1232 | + pageStack.removePages(contactEditor) |
1233 | + } else { |
1234 | + pageStack.pop() |
1235 | + } |
1236 | } |
1237 | |
1238 | function save() { |
1239 | @@ -93,7 +97,11 @@ |
1240 | contactEditor.contactSaved(contact) |
1241 | } |
1242 | } |
1243 | - pageStack.removePages(contactEditor) |
1244 | + if (pageStack.removePages) { |
1245 | + pageStack.removePages(contactEditor) |
1246 | + } else { |
1247 | + pageStack.pop() |
1248 | + } |
1249 | } |
1250 | |
1251 | function makeMeVisible(item) { |
1252 | @@ -136,7 +144,6 @@ |
1253 | nameEditor.fieldDelegates[0].forceActiveFocus() |
1254 | break; |
1255 | } |
1256 | - contactEditor.initialFocusSection = "" |
1257 | } |
1258 | |
1259 | function focusToLastPhoneField() |
1260 | @@ -473,7 +480,12 @@ |
1261 | // WORKAROUND: SDK element crash if pop the page where the dialog was created |
1262 | Component.onDestruction: { |
1263 | if (popPages) { |
1264 | - contactEditor.pageStack.removePages(contactEditor) |
1265 | + if (contactEditor.pageStack.removePages) { |
1266 | + contactEditor.pageStack.removePages(contactEditor) |
1267 | + } else { |
1268 | + contactEditor.pageStack.pop() // editor page |
1269 | + contactEditor.pageStack.pop() // view page |
1270 | + } |
1271 | } |
1272 | } |
1273 | } |
1274 | |
1275 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/TextInputDetail.qml' |
1276 | --- src/imports/Ubuntu/AddressBook/ContactEditor/TextInputDetail.qml 2015-10-26 13:18:17 +0000 |
1277 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/TextInputDetail.qml 2015-10-26 13:18:18 +0000 |
1278 | @@ -14,7 +14,7 @@ |
1279 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1280 | */ |
1281 | |
1282 | -import QtQuick 2.2 |
1283 | +import QtQuick 2.4 |
1284 | import Ubuntu.Components 1.3 |
1285 | import Ubuntu.Keyboard 0.1 |
1286 | import Ubuntu.Telephony.PhoneNumber 0.1 |
1287 | |
1288 | === modified file 'src/imports/Ubuntu/AddressBook/ContactEditor/ValueSelector.qml' |
1289 | --- src/imports/Ubuntu/AddressBook/ContactEditor/ValueSelector.qml 2015-10-26 13:18:17 +0000 |
1290 | +++ src/imports/Ubuntu/AddressBook/ContactEditor/ValueSelector.qml 2015-10-26 13:18:18 +0000 |
1291 | @@ -14,7 +14,7 @@ |
1292 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1293 | */ |
1294 | |
1295 | -import QtQuick 2.2 |
1296 | +import QtQuick 2.4 |
1297 | import Ubuntu.Components 1.3 |
1298 | |
1299 | Item { |
1300 | |
1301 | === modified file 'src/imports/Ubuntu/AddressBook/ContactShare/ContactSharePage.qml' |
1302 | --- src/imports/Ubuntu/AddressBook/ContactShare/ContactSharePage.qml 2015-10-26 13:18:17 +0000 |
1303 | +++ src/imports/Ubuntu/AddressBook/ContactShare/ContactSharePage.qml 2015-10-26 13:18:18 +0000 |
1304 | @@ -14,7 +14,7 @@ |
1305 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1306 | */ |
1307 | |
1308 | -import QtQuick 2.2 |
1309 | +import QtQuick 2.4 |
1310 | import QtContacts 5.0 |
1311 | |
1312 | import Ubuntu.Components 1.3 |
1313 | @@ -31,6 +31,8 @@ |
1314 | signal canceled() |
1315 | signal completed() |
1316 | |
1317 | + // invisible header |
1318 | + header: Item { height: 0 } |
1319 | ContentHub.ContentPeerPicker { |
1320 | visible: true |
1321 | anchors.fill: parent |
1322 | |
1323 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ActionButton.qml' |
1324 | --- src/imports/Ubuntu/AddressBook/ContactView/ActionButton.qml 2015-10-26 13:18:17 +0000 |
1325 | +++ src/imports/Ubuntu/AddressBook/ContactView/ActionButton.qml 2015-10-26 13:18:18 +0000 |
1326 | @@ -14,7 +14,7 @@ |
1327 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1328 | */ |
1329 | |
1330 | -import QtQuick 2.2 |
1331 | +import QtQuick 2.4 |
1332 | import Ubuntu.Components 1.3 |
1333 | |
1334 | AbstractButton { |
1335 | |
1336 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/BasicFieldView.qml' |
1337 | --- src/imports/Ubuntu/AddressBook/ContactView/BasicFieldView.qml 2015-10-26 13:18:17 +0000 |
1338 | +++ src/imports/Ubuntu/AddressBook/ContactView/BasicFieldView.qml 2015-10-26 13:18:18 +0000 |
1339 | @@ -14,7 +14,7 @@ |
1340 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1341 | */ |
1342 | |
1343 | -import QtQuick 2.2 |
1344 | +import QtQuick 2.4 |
1345 | import Ubuntu.Components 1.3 |
1346 | |
1347 | Item { |
1348 | |
1349 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAddressesView.qml' |
1350 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAddressesView.qml 2015-10-26 13:18:17 +0000 |
1351 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAddressesView.qml 2015-10-26 13:18:18 +0000 |
1352 | @@ -14,7 +14,7 @@ |
1353 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1354 | */ |
1355 | |
1356 | -import QtQuick 2.2 |
1357 | +import QtQuick 2.4 |
1358 | import QtContacts 5.0 as QtContacts |
1359 | import Ubuntu.Components 1.3 |
1360 | |
1361 | |
1362 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAvatarView.qml' |
1363 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAvatarView.qml 2015-10-26 13:18:17 +0000 |
1364 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailAvatarView.qml 2015-10-26 13:18:18 +0000 |
1365 | @@ -14,7 +14,7 @@ |
1366 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1367 | */ |
1368 | |
1369 | -import QtQuick 2.2 |
1370 | +import QtQuick 2.4 |
1371 | import QtGraphicalEffects 1.0 |
1372 | import QtContacts 5.0 |
1373 | import Ubuntu.Components 1.3 |
1374 | |
1375 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailEmailsView.qml' |
1376 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailEmailsView.qml 2015-10-26 13:18:17 +0000 |
1377 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailEmailsView.qml 2015-10-26 13:18:18 +0000 |
1378 | @@ -14,7 +14,7 @@ |
1379 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1380 | */ |
1381 | |
1382 | -import QtQuick 2.2 |
1383 | +import QtQuick 2.4 |
1384 | import QtContacts 5.0 as QtContacts |
1385 | import Ubuntu.Components 1.3 |
1386 | |
1387 | |
1388 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailGroupWithTypeView.qml' |
1389 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailGroupWithTypeView.qml 2015-10-26 13:18:17 +0000 |
1390 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailGroupWithTypeView.qml 2015-10-26 13:18:18 +0000 |
1391 | @@ -14,7 +14,7 @@ |
1392 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1393 | */ |
1394 | |
1395 | -import QtQuick 2.2 |
1396 | +import QtQuick 2.4 |
1397 | import QtContacts 5.0 as QtContacts |
1398 | |
1399 | import Ubuntu.Components 1.3 |
1400 | |
1401 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailNameView.qml' |
1402 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailNameView.qml 2015-10-26 13:18:17 +0000 |
1403 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailNameView.qml 2015-10-26 13:18:18 +0000 |
1404 | @@ -14,7 +14,7 @@ |
1405 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1406 | */ |
1407 | |
1408 | -import QtQuick 2.2 |
1409 | +import QtQuick 2.4 |
1410 | import Ubuntu.Components 1.3 |
1411 | import QtContacts 5.0 |
1412 | |
1413 | |
1414 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOnlineAccountsView.qml' |
1415 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOnlineAccountsView.qml 2015-10-26 13:18:17 +0000 |
1416 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOnlineAccountsView.qml 2015-10-26 13:18:18 +0000 |
1417 | @@ -14,7 +14,7 @@ |
1418 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1419 | */ |
1420 | |
1421 | -import QtQuick 2.2 |
1422 | +import QtQuick 2.4 |
1423 | import QtContacts 5.0 as QtContacts |
1424 | |
1425 | import Ubuntu.Components 1.3 |
1426 | |
1427 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOrganizationsView.qml' |
1428 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOrganizationsView.qml 2015-05-07 17:27:16 +0000 |
1429 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailOrganizationsView.qml 2015-10-26 13:18:18 +0000 |
1430 | @@ -14,7 +14,7 @@ |
1431 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1432 | */ |
1433 | |
1434 | -import QtQuick 2.2 |
1435 | +import QtQuick 2.4 |
1436 | import QtContacts 5.0 as QtContacts |
1437 | |
1438 | |
1439 | |
1440 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumberView.qml' |
1441 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumberView.qml 2015-05-14 18:12:33 +0000 |
1442 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumberView.qml 2015-10-26 13:18:18 +0000 |
1443 | @@ -14,7 +14,7 @@ |
1444 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1445 | */ |
1446 | |
1447 | -import QtQuick 2.2 |
1448 | +import QtQuick 2.4 |
1449 | |
1450 | import Ubuntu.AddressBook.Base 0.1 |
1451 | |
1452 | |
1453 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumbersView.qml' |
1454 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumbersView.qml 2015-10-26 13:18:17 +0000 |
1455 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailPhoneNumbersView.qml 2015-10-26 13:18:18 +0000 |
1456 | @@ -14,7 +14,7 @@ |
1457 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1458 | */ |
1459 | |
1460 | -import QtQuick 2.2 |
1461 | +import QtQuick 2.4 |
1462 | import QtContacts 5.0 as QtContacts |
1463 | |
1464 | import Ubuntu.Contacts 0.1 |
1465 | |
1466 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailSyncTargetView.qml' |
1467 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailSyncTargetView.qml 2015-10-26 13:18:17 +0000 |
1468 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailSyncTargetView.qml 2015-10-26 13:18:18 +0000 |
1469 | @@ -14,7 +14,7 @@ |
1470 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1471 | */ |
1472 | |
1473 | -import QtQuick 2.2 |
1474 | +import QtQuick 2.4 |
1475 | import Ubuntu.Components 1.3 |
1476 | import QtContacts 5.0 |
1477 | import Ubuntu.Contacts 0.1 |
1478 | |
1479 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactDetailWithTypeView.qml' |
1480 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactDetailWithTypeView.qml 2015-10-26 13:18:17 +0000 |
1481 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactDetailWithTypeView.qml 2015-10-26 13:18:18 +0000 |
1482 | @@ -14,7 +14,7 @@ |
1483 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1484 | */ |
1485 | |
1486 | -import QtQuick 2.2 |
1487 | +import QtQuick 2.4 |
1488 | import QtContacts 5.0 |
1489 | |
1490 | import Ubuntu.Components 1.3 |
1491 | |
1492 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactFetchError.qml' |
1493 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactFetchError.qml 2015-10-26 13:18:17 +0000 |
1494 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactFetchError.qml 2015-10-26 13:18:18 +0000 |
1495 | @@ -14,7 +14,7 @@ |
1496 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1497 | */ |
1498 | |
1499 | -import QtQuick 2.2 |
1500 | +import QtQuick 2.4 |
1501 | import Ubuntu.Components 1.3 |
1502 | import Ubuntu.Components.Popups 1.3 |
1503 | |
1504 | |
1505 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactHeaderView.qml' |
1506 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactHeaderView.qml 2015-10-26 13:18:17 +0000 |
1507 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactHeaderView.qml 2015-10-26 13:18:18 +0000 |
1508 | @@ -14,7 +14,7 @@ |
1509 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1510 | */ |
1511 | |
1512 | -import QtQuick 2.2 |
1513 | +import QtQuick 2.4 |
1514 | import Ubuntu.Components 1.3 |
1515 | import Ubuntu.Components.ListItems 1.3 as ListItem |
1516 | |
1517 | |
1518 | === modified file 'src/imports/Ubuntu/AddressBook/ContactView/ContactViewPage.qml' |
1519 | --- src/imports/Ubuntu/AddressBook/ContactView/ContactViewPage.qml 2015-10-26 13:18:17 +0000 |
1520 | +++ src/imports/Ubuntu/AddressBook/ContactView/ContactViewPage.qml 2015-10-26 13:18:18 +0000 |
1521 | @@ -14,7 +14,7 @@ |
1522 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1523 | */ |
1524 | |
1525 | -import QtQuick 2.2 |
1526 | +import QtQuick 2.4 |
1527 | import QtContacts 5.0 |
1528 | |
1529 | import Ubuntu.Components 1.3 |
1530 | |
1531 | === modified file 'src/imports/Ubuntu/Contacts/ActionButton.qml' |
1532 | --- src/imports/Ubuntu/Contacts/ActionButton.qml 2015-10-26 13:18:17 +0000 |
1533 | +++ src/imports/Ubuntu/Contacts/ActionButton.qml 2015-10-26 13:18:18 +0000 |
1534 | @@ -14,7 +14,7 @@ |
1535 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1536 | */ |
1537 | |
1538 | -import QtQuick 2.2 |
1539 | +import QtQuick 2.4 |
1540 | import Ubuntu.Components 1.3 |
1541 | |
1542 | AbstractButton { |
1543 | |
1544 | === modified file 'src/imports/Ubuntu/Contacts/ContactAvatar.qml' |
1545 | --- src/imports/Ubuntu/Contacts/ContactAvatar.qml 2015-10-26 13:18:17 +0000 |
1546 | +++ src/imports/Ubuntu/Contacts/ContactAvatar.qml 2015-10-26 13:18:18 +0000 |
1547 | @@ -14,7 +14,7 @@ |
1548 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1549 | */ |
1550 | |
1551 | -import QtQuick 2.2 |
1552 | +import QtQuick 2.4 |
1553 | import QtContacts 5.0 |
1554 | import Ubuntu.Components 1.3 |
1555 | import Ubuntu.Contacts 0.1 |
1556 | @@ -51,12 +51,13 @@ |
1557 | |
1558 | anchors.centerIn: parent |
1559 | text: Contacts.contactInitialsFromString(contactDisplayName) |
1560 | - font.pointSize: 88 |
1561 | color: UbuntuColors.lightAubergine |
1562 | visible: (img.status != Image.Ready) |
1563 | + fontSize: "large" |
1564 | } |
1565 | |
1566 | source: !img.visible ? img : null |
1567 | + sourceFillMode: UbuntuShape.PreserveAspectCrop |
1568 | |
1569 | Image { |
1570 | id: img |
1571 | @@ -65,7 +66,6 @@ |
1572 | property string avatarUrl: ContactsJS.getAvatar(contactElement, fallbackAvatarUrl) |
1573 | |
1574 | anchors.centerIn: visible ? avatar : undefined |
1575 | - fillMode: Image.PreserveAspectCrop |
1576 | asynchronous: true |
1577 | source: avatar.showAvatarPicture ? avatar.avatarUrl : "" |
1578 | height: visible ? units.gu(3) : avatar.height |
1579 | |
1580 | === modified file 'src/imports/Ubuntu/Contacts/ContactDelegate.qml' |
1581 | --- src/imports/Ubuntu/Contacts/ContactDelegate.qml 2015-10-26 13:18:17 +0000 |
1582 | +++ src/imports/Ubuntu/Contacts/ContactDelegate.qml 2015-10-26 13:18:18 +0000 |
1583 | @@ -14,7 +14,7 @@ |
1584 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1585 | */ |
1586 | |
1587 | -import QtQuick 2.2 |
1588 | +import QtQuick 2.4 |
1589 | import QtContacts 5.0 |
1590 | import Ubuntu.Components 1.3 |
1591 | import Ubuntu.Components.ListItems 1.3 as ListItem |
1592 | |
1593 | === modified file 'src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml' |
1594 | --- src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml 2015-05-07 17:27:16 +0000 |
1595 | +++ src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml 2015-10-26 13:18:18 +0000 |
1596 | @@ -14,7 +14,7 @@ |
1597 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1598 | */ |
1599 | |
1600 | -import QtQuick 2.2 |
1601 | +import QtQuick 2.4 |
1602 | import QtContacts 5.0 as QtContacts |
1603 | |
1604 | ListModel { |
1605 | |
1606 | === modified file 'src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml' |
1607 | --- src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml 2015-05-07 17:27:16 +0000 |
1608 | +++ src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml 2015-10-26 13:18:18 +0000 |
1609 | @@ -14,7 +14,7 @@ |
1610 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1611 | */ |
1612 | |
1613 | -import QtQuick 2.2 |
1614 | +import QtQuick 2.4 |
1615 | import QtContacts 5.0 as QtContacts |
1616 | |
1617 | ListModel { |
1618 | |
1619 | === modified file 'src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml' |
1620 | --- src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml 2015-10-26 13:18:17 +0000 |
1621 | +++ src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml 2015-10-26 13:18:18 +0000 |
1622 | @@ -14,7 +14,7 @@ |
1623 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1624 | */ |
1625 | |
1626 | -import QtQuick 2.2 |
1627 | +import QtQuick 2.4 |
1628 | import Ubuntu.Components 1.3 |
1629 | import QtContacts 5.0 as QtContacts |
1630 | |
1631 | |
1632 | === modified file 'src/imports/Ubuntu/Contacts/ContactFetch.qml' |
1633 | --- src/imports/Ubuntu/Contacts/ContactFetch.qml 2015-06-01 22:13:47 +0000 |
1634 | +++ src/imports/Ubuntu/Contacts/ContactFetch.qml 2015-10-26 13:18:18 +0000 |
1635 | @@ -14,7 +14,7 @@ |
1636 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1637 | */ |
1638 | |
1639 | -import QtQuick 2.2 |
1640 | +import QtQuick 2.4 |
1641 | |
1642 | Item { |
1643 | id: root |
1644 | |
1645 | === modified file 'src/imports/Ubuntu/Contacts/ContactListButtonDelegate.qml' |
1646 | --- src/imports/Ubuntu/Contacts/ContactListButtonDelegate.qml 2015-10-26 13:18:17 +0000 |
1647 | +++ src/imports/Ubuntu/Contacts/ContactListButtonDelegate.qml 2015-10-26 13:18:18 +0000 |
1648 | @@ -14,7 +14,7 @@ |
1649 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1650 | */ |
1651 | |
1652 | -import QtQuick 2.0 |
1653 | +import QtQuick 2.4 |
1654 | import Ubuntu.Components 1.3 |
1655 | |
1656 | Item { |
1657 | |
1658 | === modified file 'src/imports/Ubuntu/Contacts/ContactListModel.qml' |
1659 | --- src/imports/Ubuntu/Contacts/ContactListModel.qml 2015-06-29 15:35:07 +0000 |
1660 | +++ src/imports/Ubuntu/Contacts/ContactListModel.qml 2015-10-26 13:18:18 +0000 |
1661 | @@ -14,7 +14,7 @@ |
1662 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1663 | */ |
1664 | |
1665 | -import QtQuick 2.2 |
1666 | +import QtQuick 2.4 |
1667 | import QtContacts 5.0 |
1668 | import Ubuntu.Contacts 0.1 |
1669 | |
1670 | |
1671 | === modified file 'src/imports/Ubuntu/Contacts/ContactListView.qml' |
1672 | --- src/imports/Ubuntu/Contacts/ContactListView.qml 2015-10-26 13:18:17 +0000 |
1673 | +++ src/imports/Ubuntu/Contacts/ContactListView.qml 2015-10-26 13:18:18 +0000 |
1674 | @@ -14,7 +14,7 @@ |
1675 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1676 | */ |
1677 | |
1678 | -import QtQuick 2.2 |
1679 | +import QtQuick 2.4 |
1680 | import QtContacts 5.0 |
1681 | |
1682 | import Ubuntu.Components 1.3 |
1683 | @@ -202,6 +202,18 @@ |
1684 | */ |
1685 | property bool showAddNewButton: false |
1686 | /*! |
1687 | + \qmlproperty bool prepareNewContact |
1688 | + |
1689 | + This property holds if space for a draft new contact should be made available or not |
1690 | + */ |
1691 | + property bool prepareNewContact: false |
1692 | + /*! |
1693 | + \qmlproperty bool showNewContact |
1694 | + |
1695 | + This property holds if a draft new contact should be visible or not |
1696 | + */ |
1697 | + property bool showNewContact: false |
1698 | + /*! |
1699 | \qmlproperty bool syncing |
1700 | |
1701 | This property holds if the list is running a sync with online accounts or not |
1702 | @@ -230,6 +242,18 @@ |
1703 | This property holds if the busy indicator should became visible |
1704 | */ |
1705 | property bool showBusyIndicator: true |
1706 | + /*! |
1707 | + \qmlproperty real verticalVelocity |
1708 | + |
1709 | + This property holds the vertical velocity of the list |
1710 | + */ |
1711 | + readonly property real verticalVelocity: view.verticalVelocity |
1712 | + /*! |
1713 | + \qmlproperty Contact highlightedContact |
1714 | + |
1715 | + This property holds a reference to the Contact that should be highlighted |
1716 | + */ |
1717 | + property Contact highlightedContact: null |
1718 | |
1719 | property var _busyDialog: null |
1720 | |
1721 | @@ -358,6 +382,7 @@ |
1722 | property bool showFavourites: true |
1723 | property alias favouritesIsSelected: contactsModel.onlyFavorites |
1724 | property bool contactsLoaded: false |
1725 | + highlightedContact: root.highlightedContact |
1726 | |
1727 | function getSectionText(index) { |
1728 | var tag = listModel.contacts[index].tag.tag |
1729 | @@ -396,12 +421,26 @@ |
1730 | anchors { |
1731 | left: parent.left |
1732 | right: parent.right |
1733 | - margins: units.gu(1) |
1734 | - } |
1735 | - height: childrenRect.height |
1736 | + } |
1737 | + |
1738 | + Connections { |
1739 | + target: root |
1740 | + onPrepareNewContactChanged: { |
1741 | + if (root.prepareNewContact) { |
1742 | + view.contentY = Qt.binding(function() {return -view.headerItem.height}); |
1743 | + } else { |
1744 | + view.contentY = view.contentY; |
1745 | + } |
1746 | + } |
1747 | + } |
1748 | |
1749 | // AddNewButton |
1750 | ContactListButtonDelegate { |
1751 | + anchors { |
1752 | + left: parent.left |
1753 | + right: parent.right |
1754 | + margins: units.gu(1) |
1755 | + } |
1756 | objectName: "addNewButton" |
1757 | |
1758 | iconSource: "image://theme/add" |
1759 | @@ -411,6 +450,22 @@ |
1760 | visible: root.showAddNewButton |
1761 | } |
1762 | |
1763 | + ContactDelegate { |
1764 | + property var contact: Contact { |
1765 | + Name { |
1766 | + firstName: i18n.tr("New contact") |
1767 | + } |
1768 | + Avatar { |
1769 | + imageUrl: "image://theme/contact" |
1770 | + } |
1771 | + } |
1772 | + selected: true |
1773 | + visible: root.prepareNewContact |
1774 | + height: root.prepareNewContact ? defaultHeight : 0 |
1775 | + Behavior on height {UbuntuNumberAnimation {}} |
1776 | + opacity: root.showNewContact ? 1.0 : 0.0 |
1777 | + } |
1778 | + |
1779 | Column { |
1780 | id: importFromButtons |
1781 | objectName: "importFromButtons" |
1782 | @@ -420,6 +475,7 @@ |
1783 | anchors { |
1784 | left: parent.left |
1785 | right: parent.right |
1786 | + margins: units.gu(1) |
1787 | } |
1788 | height: visible ? childrenRect.height : 0 |
1789 | |
1790 | @@ -480,6 +536,7 @@ |
1791 | anchors { |
1792 | left: parent.left |
1793 | right: parent.right |
1794 | + margins: units.gu(1) |
1795 | } |
1796 | parentView: view |
1797 | visible: view.favouritesIsSelected |
1798 | |
1799 | === modified file 'src/imports/Ubuntu/Contacts/ContactSimpleListView.qml' |
1800 | --- src/imports/Ubuntu/Contacts/ContactSimpleListView.qml 2015-10-26 13:18:17 +0000 |
1801 | +++ src/imports/Ubuntu/Contacts/ContactSimpleListView.qml 2015-10-26 13:18:18 +0000 |
1802 | @@ -14,7 +14,7 @@ |
1803 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1804 | */ |
1805 | |
1806 | -import QtQuick 2.2 |
1807 | +import QtQuick 2.4 |
1808 | import QtContacts 5.0 |
1809 | import Ubuntu.Components 1.3 |
1810 | import Ubuntu.Components.ListItems 1.3 as ListItem |
1811 | @@ -144,6 +144,13 @@ |
1812 | */ |
1813 | property list<Action> rightSideActions |
1814 | |
1815 | + /*! |
1816 | + \qmlproperty Contact highlightedContact |
1817 | + |
1818 | + This property holds a reference to the Contact that should be highlighted |
1819 | + */ |
1820 | + property Contact highlightedContact: null |
1821 | + |
1822 | /* internal */ |
1823 | property var _currentSwipedItem: null |
1824 | |
1825 | @@ -227,6 +234,7 @@ |
1826 | } |
1827 | } |
1828 | |
1829 | + highlightFollowsCurrentItem: true |
1830 | currentIndex: -1 |
1831 | section { |
1832 | property: showSections ? "contact.tag.tag" : "" |
1833 | @@ -261,7 +269,7 @@ |
1834 | flicking: contactListView.flicking |
1835 | width: parent.width |
1836 | selected: (contactListView.multiSelectionEnabled && contactListView.isSelected(contactDelegate)) |
1837 | - || index === contactListView.currentIndex |
1838 | + || (contactListView.highlightedContact && contactListView.highlightedContact.contactId == contact.contactId) |
1839 | selectionMode: contactListView.isInSelectionMode |
1840 | defaultAvatarUrl: contactListView.defaultAvatarImageUrl |
1841 | isCurrentItem: ListView.isCurrentItem |
1842 | |
1843 | === modified file 'src/imports/Ubuntu/Contacts/FastScroll.qml' |
1844 | --- src/imports/Ubuntu/Contacts/FastScroll.qml 2015-10-26 13:18:17 +0000 |
1845 | +++ src/imports/Ubuntu/Contacts/FastScroll.qml 2015-10-26 13:18:18 +0000 |
1846 | @@ -40,7 +40,7 @@ |
1847 | ****************************************************************************/ |
1848 | |
1849 | // FastScroll.qml |
1850 | -import QtQuick 2.2 |
1851 | +import QtQuick 2.4 |
1852 | import Ubuntu.Components 1.3 |
1853 | import "FastScroll.js" as Sections |
1854 | |
1855 | |
1856 | === modified file 'src/imports/Ubuntu/Contacts/ListItemWithActions.qml' |
1857 | --- src/imports/Ubuntu/Contacts/ListItemWithActions.qml 2015-10-26 13:18:17 +0000 |
1858 | +++ src/imports/Ubuntu/Contacts/ListItemWithActions.qml 2015-10-26 13:18:18 +0000 |
1859 | @@ -14,7 +14,7 @@ |
1860 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1861 | */ |
1862 | |
1863 | -import QtQuick 2.2 |
1864 | +import QtQuick 2.4 |
1865 | import Ubuntu.Components 1.3 |
1866 | |
1867 | Item { |
1868 | |
1869 | === modified file 'src/imports/Ubuntu/Contacts/ListItemWithActionsCheckBox.qml' |
1870 | --- src/imports/Ubuntu/Contacts/ListItemWithActionsCheckBox.qml 2015-10-26 13:18:17 +0000 |
1871 | +++ src/imports/Ubuntu/Contacts/ListItemWithActionsCheckBox.qml 2015-10-26 13:18:18 +0000 |
1872 | @@ -14,7 +14,7 @@ |
1873 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1874 | */ |
1875 | |
1876 | -import QtQuick 2.2 |
1877 | +import QtQuick 2.4 |
1878 | import Ubuntu.Components 1.3 |
1879 | |
1880 | CheckBox { |
1881 | |
1882 | === modified file 'src/imports/Ubuntu/Contacts/MostCalledList.qml' |
1883 | --- src/imports/Ubuntu/Contacts/MostCalledList.qml 2015-05-13 22:26:05 +0000 |
1884 | +++ src/imports/Ubuntu/Contacts/MostCalledList.qml 2015-10-26 13:18:18 +0000 |
1885 | @@ -14,7 +14,7 @@ |
1886 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1887 | */ |
1888 | |
1889 | -import QtQuick 2.2 |
1890 | +import QtQuick 2.4 |
1891 | |
1892 | Column { |
1893 | id: root |
1894 | |
1895 | === modified file 'src/imports/Ubuntu/Contacts/MostCalledModel.qml' |
1896 | --- src/imports/Ubuntu/Contacts/MostCalledModel.qml 2015-05-14 02:37:01 +0000 |
1897 | +++ src/imports/Ubuntu/Contacts/MostCalledModel.qml 2015-10-26 13:18:18 +0000 |
1898 | @@ -15,7 +15,7 @@ |
1899 | */ |
1900 | |
1901 | |
1902 | -import QtQuick 2.2 |
1903 | +import QtQuick 2.4 |
1904 | import QtContacts 5.0 |
1905 | |
1906 | import Ubuntu.History 0.1 |
1907 | |
1908 | === modified file 'src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml' |
1909 | --- src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml 2015-10-26 13:18:17 +0000 |
1910 | +++ src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml 2015-10-26 13:18:18 +0000 |
1911 | @@ -14,7 +14,7 @@ |
1912 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1913 | */ |
1914 | |
1915 | -import QtQuick 2.2 |
1916 | +import QtQuick 2.4 |
1917 | import Ubuntu.Components 1.3 |
1918 | import Ubuntu.Components.Popups 1.3 as Popups |
1919 | |
1920 | |
1921 | === modified file 'src/imports/Ubuntu/Contacts/MultipleSelectionVisualModel.qml' |
1922 | --- src/imports/Ubuntu/Contacts/MultipleSelectionVisualModel.qml 2015-05-07 17:27:16 +0000 |
1923 | +++ src/imports/Ubuntu/Contacts/MultipleSelectionVisualModel.qml 2015-10-26 13:18:18 +0000 |
1924 | @@ -14,7 +14,7 @@ |
1925 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1926 | */ |
1927 | |
1928 | -import QtQuick 2.2 |
1929 | +import QtQuick 2.4 |
1930 | |
1931 | VisualDataModel { |
1932 | id: contactVisualModel |
1933 | |
1934 | === modified file 'src/imports/Ubuntu/Contacts/Ofono.qml' |
1935 | --- src/imports/Ubuntu/Contacts/Ofono.qml 2015-03-17 17:14:09 +0000 |
1936 | +++ src/imports/Ubuntu/Contacts/Ofono.qml 2015-10-26 13:18:18 +0000 |
1937 | @@ -14,7 +14,7 @@ |
1938 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1939 | */ |
1940 | |
1941 | -import QtQuick 2.0 |
1942 | +import QtQuick 2.4 |
1943 | import MeeGo.QOfono 0.2 |
1944 | |
1945 | Item { |
1946 | |
1947 | === modified file 'src/imports/Ubuntu/Contacts/OnlineAccountsDummy.qml' |
1948 | --- src/imports/Ubuntu/Contacts/OnlineAccountsDummy.qml 2015-02-06 16:37:12 +0000 |
1949 | +++ src/imports/Ubuntu/Contacts/OnlineAccountsDummy.qml 2015-10-26 13:18:18 +0000 |
1950 | @@ -14,7 +14,7 @@ |
1951 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1952 | */ |
1953 | |
1954 | -import QtQuick 2.2 |
1955 | +import QtQuick 2.4 |
1956 | |
1957 | Item { |
1958 | id: root |
1959 | |
1960 | === modified file 'src/imports/Ubuntu/Contacts/OnlineAccountsHelper.qml' |
1961 | --- src/imports/Ubuntu/Contacts/OnlineAccountsHelper.qml 2015-10-26 13:18:17 +0000 |
1962 | +++ src/imports/Ubuntu/Contacts/OnlineAccountsHelper.qml 2015-10-26 13:18:18 +0000 |
1963 | @@ -14,7 +14,7 @@ |
1964 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1965 | */ |
1966 | |
1967 | -import QtQuick 2.2 |
1968 | +import QtQuick 2.4 |
1969 | import Ubuntu.Components 1.3 |
1970 | import Ubuntu.OnlineAccounts 0.1 |
1971 | import Ubuntu.OnlineAccounts.Client 0.1 |
1972 | |
1973 | === modified file 'src/imports/Ubuntu/Contacts/PageWithBottomEdge.qml' |
1974 | --- src/imports/Ubuntu/Contacts/PageWithBottomEdge.qml 2015-10-26 13:18:17 +0000 |
1975 | +++ src/imports/Ubuntu/Contacts/PageWithBottomEdge.qml 2015-10-26 13:18:18 +0000 |
1976 | @@ -62,7 +62,7 @@ |
1977 | |
1978 | */ |
1979 | |
1980 | -import QtQuick 2.2 |
1981 | +import QtQuick 2.4 |
1982 | import Ubuntu.Components 1.3 |
1983 | |
1984 | Page { |
1985 | @@ -103,7 +103,7 @@ |
1986 | { |
1987 | if (edgeLoader.status === Loader.Ready) { |
1988 | edgeLoader.item.active = true |
1989 | - page.pageStack.addPageToCurrentColumn(page, edgeLoader.item) |
1990 | + page.pageStack.push(edgeLoader.item) |
1991 | if (edgeLoader.item.flickable) { |
1992 | edgeLoader.item.flickable.contentY = -page.header.height |
1993 | edgeLoader.item.flickable.returnToBounds() |
1994 | |
1995 | === modified file 'src/imports/Ubuntu/Contacts/SIMCardImportPage.qml' |
1996 | --- src/imports/Ubuntu/Contacts/SIMCardImportPage.qml 2015-10-26 13:18:17 +0000 |
1997 | +++ src/imports/Ubuntu/Contacts/SIMCardImportPage.qml 2015-10-26 13:18:18 +0000 |
1998 | @@ -14,7 +14,7 @@ |
1999 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2000 | */ |
2001 | |
2002 | -import QtQuick 2.2 |
2003 | +import QtQuick 2.4 |
2004 | import QtContacts 5.0 |
2005 | |
2006 | import Ubuntu.Components 1.3 |
2007 | |
2008 | === modified file 'src/imports/Ubuntu/Contacts/SIMList.qml' |
2009 | --- src/imports/Ubuntu/Contacts/SIMList.qml 2015-03-17 17:14:09 +0000 |
2010 | +++ src/imports/Ubuntu/Contacts/SIMList.qml 2015-10-26 13:18:18 +0000 |
2011 | @@ -14,7 +14,7 @@ |
2012 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2013 | */ |
2014 | |
2015 | -import QtQuick 2.2 |
2016 | +import QtQuick 2.4 |
2017 | |
2018 | import MeeGo.QOfono 0.2 |
2019 | |
2020 | |
2021 | === modified file 'src/imports/Ubuntu/Contacts/SectionDelegate.qml' |
2022 | --- src/imports/Ubuntu/Contacts/SectionDelegate.qml 2015-10-26 13:18:17 +0000 |
2023 | +++ src/imports/Ubuntu/Contacts/SectionDelegate.qml 2015-10-26 13:18:18 +0000 |
2024 | @@ -14,7 +14,7 @@ |
2025 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2026 | */ |
2027 | |
2028 | -import QtQuick 2.2 |
2029 | +import QtQuick 2.4 |
2030 | import Ubuntu.Components 1.3 |
2031 | import Ubuntu.Components.ListItems 1.3 |
2032 | |
2033 | @@ -28,7 +28,6 @@ |
2034 | |
2035 | anchors.fill: parent |
2036 | verticalAlignment: Text.AlignVCenter |
2037 | - font.pointSize: 76 |
2038 | height: units.gu(3) |
2039 | } |
2040 | ThinDivider { |
2041 | |
2042 | === modified file 'src/imports/Ubuntu/Contacts/SubtitledWithColors.qml' |
2043 | --- src/imports/Ubuntu/Contacts/SubtitledWithColors.qml 2015-10-26 13:18:17 +0000 |
2044 | +++ src/imports/Ubuntu/Contacts/SubtitledWithColors.qml 2015-10-26 13:18:18 +0000 |
2045 | @@ -14,7 +14,7 @@ |
2046 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2047 | */ |
2048 | |
2049 | -import QtQuick 2.0 |
2050 | +import QtQuick 2.4 |
2051 | import Ubuntu.Components 1.3 |
2052 | |
2053 | MouseArea { |
2054 | |
2055 | === modified file 'src/imports/Ubuntu/Contacts/VCardParser.qml' |
2056 | --- src/imports/Ubuntu/Contacts/VCardParser.qml 2014-08-13 20:52:57 +0000 |
2057 | +++ src/imports/Ubuntu/Contacts/VCardParser.qml 2015-10-26 13:18:18 +0000 |
2058 | @@ -14,7 +14,7 @@ |
2059 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2060 | */ |
2061 | |
2062 | -import QtQuick 2.2 |
2063 | +import QtQuick 2.4 |
2064 | import QtContacts 5.0 |
2065 | |
2066 | QtObject { |
2067 | |
2068 | === modified file 'src/imports/Ubuntu/Contacts/qmldir' |
2069 | --- src/imports/Ubuntu/Contacts/qmldir 2015-04-29 14:22:40 +0000 |
2070 | +++ src/imports/Ubuntu/Contacts/qmldir 2015-10-26 13:18:18 +0000 |
2071 | @@ -3,6 +3,7 @@ |
2072 | plugin ubuntu-contacts-qml |
2073 | |
2074 | ContactAvatar 0.1 ContactAvatar.qml |
2075 | +ContactDelegate 0.1 ContactDelegate.qml |
2076 | ContactDetailOnlineAccountTypeModel 0.1 ContactDetailOnlineAccountTypeModel.qml |
2077 | ContactDetailPhoneNumberTypeModel 0.1 ContactDetailPhoneNumberTypeModel.qml |
2078 | ContactFetch 0.1 ContactFetch.qml |
2079 | @@ -20,7 +21,6 @@ |
2080 | SIMList 0.1 SIMList.qml |
2081 | |
2082 | internal ContactAvatar ContactAvatar.qml |
2083 | -internal ContactDelegate ContactDelegate.qml |
2084 | internal ContactDetailPickerPhoneNumberDelegate ContactDetailPickerPhoneNumberDelegate.qml |
2085 | internal ContactImportButton ContactImportButton.qml |
2086 | internal ContactList ContactList.js |
2087 | |
2088 | === modified file 'src/imports/VCardImportDialog.qml' |
2089 | --- src/imports/VCardImportDialog.qml 2015-10-26 13:18:17 +0000 |
2090 | +++ src/imports/VCardImportDialog.qml 2015-10-26 13:18:18 +0000 |
2091 | @@ -14,7 +14,7 @@ |
2092 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2093 | */ |
2094 | |
2095 | -import QtQuick 2.2 |
2096 | +import QtQuick 2.4 |
2097 | import QtContacts 5.0 |
2098 | import Ubuntu.Components 1.3 |
2099 | import Ubuntu.Components.Popups 1.3 as Popups |
2100 | |
2101 | === modified file 'tests/autopilot/address_book_app/__init__.py' |
2102 | --- tests/autopilot/address_book_app/__init__.py 2015-10-26 13:18:17 +0000 |
2103 | +++ tests/autopilot/address_book_app/__init__.py 2015-10-26 13:18:18 +0000 |
2104 | @@ -32,7 +32,6 @@ |
2105 | from address_book_app import pages |
2106 | from address_book_app import address_book |
2107 | |
2108 | - |
2109 | logger = logging.getLogger(__name__) |
2110 | |
2111 | |
2112 | @@ -65,30 +64,18 @@ |
2113 | # ContactListPage is the only page that can appears multiple times |
2114 | # Ex.: During the pick mode we alway push a new contactListPage, to |
2115 | # preserve the current application status. |
2116 | - contact_list_pages = self.select_many( |
2117 | - pages.ABContactListPage, objectName='contactListPage') |
2118 | - |
2119 | - # alway return the page without pickMode |
2120 | - for p in contact_list_pages: |
2121 | - if not p.pickMode: |
2122 | - return p |
2123 | - return None |
2124 | + return self.wait_select_single(pages.ABContactListPage, |
2125 | + objectName='contactListPage', pickMode=False) |
2126 | |
2127 | def get_contact_edit_page(self): |
2128 | # We can have two contact editor page because of bottom edge page |
2129 | # but we will return only the active one |
2130 | - list_page = self.get_contact_list_page() |
2131 | - list_page.bottomEdgePageLoaded.wait_for(True) |
2132 | - contact_editor_pages = self.select_many( |
2133 | - pages.ABContactEditorPage, objectName="contactEditorPage") |
2134 | - for p in contact_editor_pages: |
2135 | - if p.active: |
2136 | - return p |
2137 | - raise exceptions.StateNotFoundError('contactEditorPage not found') |
2138 | + return self.wait_select_single(objectName="contactEditorPage", active=True) |
2139 | |
2140 | def get_contact_view_page(self): |
2141 | return self.wait_select_single(pages.ABContactViewPage, |
2142 | - objectName="contactViewPage") |
2143 | + objectName="contactViewPage", |
2144 | + active=True) |
2145 | |
2146 | def get_contact_list_pick_page(self): |
2147 | contact_list_pages = self.select_many( |
2148 | @@ -100,10 +87,10 @@ |
2149 | |
2150 | def get_share_page(self): |
2151 | return self.wait_select_single("ContactSharePage", |
2152 | - objectName="contactSharePage") |
2153 | + objectName="contactSharePage", |
2154 | + active=True) |
2155 | |
2156 | def start_import_contacts(self): |
2157 | - self.open_header() |
2158 | view = self.get_contact_list_view() |
2159 | if view.count > 0: |
2160 | self.click_action_button("importFromSimHeaderButton") |
2161 | @@ -114,19 +101,37 @@ |
2162 | self.pointing_device.click_object(import_buttom) |
2163 | |
2164 | return self.wait_select_single(address_book.SIMCardImportPage, |
2165 | - objectName="simCardImportPage") |
2166 | + objectName="simCardImportPage", |
2167 | + active=True) |
2168 | |
2169 | def get_contact_list_view(self): |
2170 | """ |
2171 | - Returns a ContactListView iobject for the current window |
2172 | + Returns a ContactListView object for the current window |
2173 | """ |
2174 | return self.wait_select_single("ContactListView", |
2175 | objectName="contactListView") |
2176 | |
2177 | - def get_button(self, buttonName): |
2178 | - actionbar = self.select_single('ActionBar', objectName='headerActionBar') |
2179 | - return actionbar._get_action_button(buttonName) |
2180 | + def get_action(self, action_name): |
2181 | + actionbars = self.select_many('ActionBar', objectName='headerActionBar') |
2182 | + for actionbar in actionbars: |
2183 | + object_name = action_name + "_action_button" |
2184 | + try: |
2185 | + button = actionbar.select_single(objectName=object_name) |
2186 | + if button: |
2187 | + return button |
2188 | + except introspection.dbus.StateNotFoundError: |
2189 | + continue |
2190 | + return None |
2191 | |
2192 | + def click_action_button(self, action_name): |
2193 | + actionbars = self.select_many('ActionBar', objectName='headerActionBar') |
2194 | + for actionbar in actionbars: |
2195 | + try: |
2196 | + actionbar.click_action_button(action_name) |
2197 | + return |
2198 | + except ubuntuuitoolkit.ToolkitException: |
2199 | + continue |
2200 | + raise exceptions.StateNotFoundError('Action %s not found.' % action_name) |
2201 | |
2202 | def open_header(self): |
2203 | header = self.get_header() |
2204 | @@ -153,22 +158,36 @@ |
2205 | """ |
2206 | Press the 'Cancel' button |
2207 | """ |
2208 | - header = self.open_header() |
2209 | - header.click_custom_back_button() |
2210 | + buttons = self.select_many(objectName='customBackButton') |
2211 | + for button in buttons: |
2212 | + if button.enabled and button.visible: |
2213 | + self.pointing_device.click_object(button) |
2214 | + return |
2215 | + |
2216 | + #self.click_action_button("customBackButton") |
2217 | |
2218 | def save(self): |
2219 | """ |
2220 | Press the 'Save' button |
2221 | """ |
2222 | - bottom_swipe_page = self.get_contact_list_page() |
2223 | self.click_action_button("save") |
2224 | - bottom_swipe_page.isCollapsed.wait_for(True) |
2225 | + |
2226 | + def edit(self): |
2227 | + """ |
2228 | + Press the 'Save' button |
2229 | + """ |
2230 | + self.click_action_button("edit") |
2231 | + |
2232 | + def delete(self): |
2233 | + """ |
2234 | + Press the 'Delete' button |
2235 | + """ |
2236 | + self.click_action_button("delete") |
2237 | |
2238 | def confirm_import(self): |
2239 | """ |
2240 | Press the 'confirm' button |
2241 | """ |
2242 | - self.open_header() |
2243 | self.click_action_button("confirmImport") |
2244 | |
2245 | def get_toolbar(self): |
2246 | @@ -182,4 +201,5 @@ |
2247 | """ |
2248 | bottom_swipe_page = self.get_contact_list_page() |
2249 | bottom_swipe_page.reveal_bottom_edge_page() |
2250 | + |
2251 | return self.get_contact_edit_page() |
2252 | |
2253 | === modified file 'tests/autopilot/address_book_app/address_book/_contact_view_page.py' |
2254 | --- tests/autopilot/address_book_app/address_book/_contact_view_page.py 2015-05-11 14:21:03 +0000 |
2255 | +++ tests/autopilot/address_book_app/address_book/_contact_view_page.py 2015-10-26 13:18:18 +0000 |
2256 | @@ -19,10 +19,4 @@ |
2257 | |
2258 | class ContactViewPage(_common.PageWithHeader): |
2259 | """Autopilot helper for the ContactView page.""" |
2260 | - |
2261 | - def go_to_edit_contact(self): |
2262 | - self.get_header().click_action_button('edit') |
2263 | - return self.get_root_instance().select_single( |
2264 | - _contact_editor_page.ContactEditorPage, |
2265 | - objectName='contactEditorPage', |
2266 | - active=True) |
2267 | + pass |
2268 | |
2269 | === modified file 'tests/autopilot/address_book_app/address_book/_sim_card_import_page.py' |
2270 | --- tests/autopilot/address_book_app/address_book/_sim_card_import_page.py 2015-05-12 15:43:25 +0000 |
2271 | +++ tests/autopilot/address_book_app/address_book/_sim_card_import_page.py 2015-10-26 13:18:18 +0000 |
2272 | @@ -72,7 +72,7 @@ |
2273 | """Return a list with the names of the contacts.""" |
2274 | contact_delegates = self._get_sorted_contact_delegates() |
2275 | name_labels = [ |
2276 | - delegate.select_single('Label', objectName='nameLabel') for |
2277 | + delegate.select_single('UCLabel', objectName='nameLabel') for |
2278 | delegate in contact_delegates |
2279 | ] |
2280 | return [label.text for label in name_labels] |
2281 | @@ -96,6 +96,6 @@ |
2282 | contact = self._get_contact_delegate(index) |
2283 | self.pointing_device.click_object(contact) |
2284 | contacts.append(contact.select_single( |
2285 | - 'Label', objectName='nameLabel').text) |
2286 | + 'UCLabel', objectName='nameLabel').text) |
2287 | |
2288 | return contacts |
2289 | |
2290 | === modified file 'tests/autopilot/address_book_app/pages/_ab_contact_list_page.py' |
2291 | --- tests/autopilot/address_book_app/pages/_ab_contact_list_page.py 2015-05-13 13:25:18 +0000 |
2292 | +++ tests/autopilot/address_book_app/pages/_ab_contact_list_page.py 2015-10-26 13:18:18 +0000 |
2293 | @@ -21,9 +21,9 @@ |
2294 | |
2295 | import autopilot.logging |
2296 | import ubuntuuitoolkit |
2297 | - |
2298 | import address_book_app.address_book as address_book |
2299 | |
2300 | +from autopilot.introspection import dbus |
2301 | from address_book_app.pages import ABContactViewPage |
2302 | |
2303 | |
2304 | @@ -32,7 +32,7 @@ |
2305 | log_action_debug = autopilot.logging.log_action(logging.debug) |
2306 | |
2307 | |
2308 | -class ABContactListPage(address_book.PageWithHeader, address_book.PageWithBottomEdge): |
2309 | +class ABContactListPage(address_book.PageWithHeader): |
2310 | |
2311 | """Autopilot helper for the Contact List page.""" |
2312 | |
2313 | @@ -46,8 +46,10 @@ |
2314 | """ |
2315 | contact_delegate = self._get_contact_delegate(index) |
2316 | self.pointing_device.click_object(contact_delegate) |
2317 | + # WORKAROUND: give some time to the view became available |
2318 | + time.sleep(5.0) |
2319 | return self.get_root_instance().select_single( |
2320 | - ABContactViewPage, objectName='contactViewPage') |
2321 | + ABContactViewPage, objectName='contactViewPage', active=True) |
2322 | |
2323 | def _get_contact_delegate(self, index): |
2324 | contact_delegates = self._get_sorted_contact_delegates() |
2325 | @@ -108,9 +110,9 @@ |
2326 | 'ContactListView', objectName='contactListView') |
2327 | |
2328 | @log_action_info |
2329 | - def delete_selected_contacts(self): |
2330 | - self.get_header().click_action_button('delete') |
2331 | - self.isCollapsed.wait_for(True) |
2332 | + def delete_selected_contacts(self, main_window): |
2333 | + main_window.delete() |
2334 | + self.bottomEdgePageOpened.wait_for(False) |
2335 | dialog = self.get_root_instance().wait_select_single( |
2336 | address_book.RemoveContactsDialog, objectName='removeContactsDialog') |
2337 | dialog.confirm_removal() |
2338 | @@ -119,7 +121,7 @@ |
2339 | """Return a list with the names of the contacts.""" |
2340 | contact_delegates = self._get_sorted_contact_delegates() |
2341 | name_labels = [ |
2342 | - delegate.select_single('Label', objectName='nameLabel') for |
2343 | + delegate.select_single('UCLabel', objectName='nameLabel') for |
2344 | delegate in contact_delegates |
2345 | ] |
2346 | return [label.text for label in name_labels] |
2347 | @@ -136,3 +138,20 @@ |
2348 | objectName='contactListView.importFromSimCardButton') |
2349 | return import_from_sim_button.visible |
2350 | |
2351 | + def reveal_bottom_edge_page(self): |
2352 | + """Bring the bottom edge page to the screen""" |
2353 | + self.bottomEdgePageOpened.wait_for(False) |
2354 | + try: |
2355 | + action_item = self.wait_select_single(objectName='bottomEdgeDragArea') |
2356 | + action_item.enabled.wait_for(True) |
2357 | + start_x = (action_item.globalRect.x + |
2358 | + (action_item.globalRect.width * 0.5)) |
2359 | + start_y = action_item.globalRect.y + (action_item.height * 0.2) |
2360 | + stop_y = start_y - (self.height * 0.7) |
2361 | + self.pointing_device.drag( |
2362 | + start_x, start_y, start_x, stop_y, rate=2) |
2363 | + #self pointer became invalid at this point |
2364 | + #self.bottomEdgePageOpened.wait_for(True) |
2365 | + except dbus.StateNotFoundError: |
2366 | + logger.error('ButtomEdge element not found.') |
2367 | + raise |
2368 | |
2369 | === modified file 'tests/autopilot/address_book_app/tests/__init__.py' |
2370 | --- tests/autopilot/address_book_app/tests/__init__.py 2015-04-14 22:19:01 +0000 |
2371 | +++ tests/autopilot/address_book_app/tests/__init__.py 2015-10-26 13:18:18 +0000 |
2372 | @@ -169,12 +169,12 @@ |
2373 | list_page = self.main_window.get_contact_list_page() |
2374 | list_page.open_contact(index) |
2375 | |
2376 | - self.assertThat(list_page.visible, Eventually(Equals(False))) |
2377 | view_page = self.main_window.get_contact_view_page() |
2378 | self.assertThat(view_page.visible, Eventually(Equals(True))) |
2379 | |
2380 | # Edit contact |
2381 | - edit_page = view_page.go_to_edit_contact() |
2382 | + self.main_window.edit() |
2383 | + edit_page = self.main_window.get_contact_edit_page() |
2384 | self.assertThat(edit_page.visible, Eventually(Equals(True))) |
2385 | |
2386 | return edit_page |
2387 | |
2388 | === modified file 'tests/autopilot/address_book_app/tests/test_add_contact.py' |
2389 | --- tests/autopilot/address_book_app/tests/test_add_contact.py 2015-05-12 15:43:25 +0000 |
2390 | +++ tests/autopilot/address_book_app/tests/test_add_contact.py 2015-10-26 13:18:18 +0000 |
2391 | @@ -36,14 +36,17 @@ |
2392 | contact_editor = self.app.main_window.go_to_add_contact() |
2393 | |
2394 | # Check if the contact list disapear and contact editor appears |
2395 | - self.assertThat(list_page.visible, Eventually(Equals(False))) |
2396 | + #FIXME: list_page became an invalid pointer after push a new page |
2397 | + #self.assertThat(list_page.bottomEdgePageOpened, Eventually(Equals(True))) |
2398 | self.assertThat(contact_editor.visible, Eventually(Equals(True))) |
2399 | + self.assertThat(contact_editor.active, Eventually(Equals(True))) |
2400 | |
2401 | # cancel new contact without save |
2402 | self.app.main_window.cancel() |
2403 | |
2404 | # Check if the contact list is visible again |
2405 | self.assertThat(list_page.visible, Eventually(Equals(True))) |
2406 | + self.assertThat(list_page.bottomEdgePageOpened, Eventually(Equals(False))) |
2407 | |
2408 | # Check if the contact list still empty |
2409 | list_view = self.app.main_window.get_contact_list_view() |
2410 | @@ -115,11 +118,11 @@ |
2411 | # Check if they have the correct label |
2412 | for idx in range(3): |
2413 | email_type = view_page.select_single( |
2414 | - "Label", |
2415 | + "UCLabel", |
2416 | objectName="type_email_" + str(idx)) |
2417 | |
2418 | email_label = view_page.select_single( |
2419 | - "Label", |
2420 | + "UCLabel", |
2421 | objectName="label_emailAddress_" + str(idx) + ".0") |
2422 | |
2423 | self.assertThat(emails[email_label.text], Equals(email_type.text)) |
2424 | @@ -166,11 +169,11 @@ |
2425 | # Check if they have the correct label |
2426 | for idx in range(5): |
2427 | phone_type = view_page.select_single( |
2428 | - "Label", |
2429 | + "UCLabel", |
2430 | objectName="type_phoneNumber_" + str(idx)) |
2431 | |
2432 | phone_label = view_page.select_single( |
2433 | - "Label", |
2434 | + "UCLabel", |
2435 | objectName="label_phoneNumber_" + str(idx) + ".0") |
2436 | |
2437 | self.assertThat(phones[phone_label.text], Equals(phone_type.text)) |
2438 | |
2439 | === modified file 'tests/autopilot/address_book_app/tests/test_create_new_from_uri.py' |
2440 | --- tests/autopilot/address_book_app/tests/test_create_new_from_uri.py 2014-09-02 19:23:05 +0000 |
2441 | +++ tests/autopilot/address_book_app/tests/test_create_new_from_uri.py 2015-10-26 13:18:18 +0000 |
2442 | @@ -23,16 +23,17 @@ |
2443 | |
2444 | def test_save_new_contact(self): |
2445 | list_page = self.app.main_window.get_contact_list_page() |
2446 | - list_page.isReady.wait_for(True) |
2447 | + #FIXME: contacts list object became invalid after push a new page |
2448 | + #list_page.bottomEdgePageOpened.wait_for(True) |
2449 | |
2450 | edit_page = self.app.main_window.get_contact_edit_page() |
2451 | self.assertThat(edit_page.visible, Eventually(Equals(True))) |
2452 | |
2453 | # add name to the contact |
2454 | - firstNameField = self.app.main_window.wait_select_single( |
2455 | + firstNameField = edit_page.wait_select_single( |
2456 | "TextInputDetail", |
2457 | objectName="firstName") |
2458 | - lastNameField = self.app.main_window.wait_select_single( |
2459 | + lastNameField = edit_page.wait_select_single( |
2460 | "TextInputDetail", |
2461 | objectName="lastName") |
2462 | |
2463 | @@ -43,6 +44,7 @@ |
2464 | self.app.main_window.save() |
2465 | |
2466 | # open contact view |
2467 | + list_page = self.app.main_window.get_contact_list_page() |
2468 | list_page.open_contact(0) |
2469 | view_page = self.app.main_window.get_contact_view_page() |
2470 | self.assertThat(view_page.visible, Eventually(Equals(True))) |
2471 | @@ -53,10 +55,10 @@ |
2472 | objectName="phones") |
2473 | self.assertThat(phone_group.detailsCount, Eventually(Equals(1))) |
2474 | phone_type = view_page.select_single( |
2475 | - "Label", |
2476 | + "UCLabel", |
2477 | objectName="type_phoneNumber_0") |
2478 | phone_label = view_page.select_single( |
2479 | - "Label", |
2480 | + "UCLabel", |
2481 | objectName="label_phoneNumber_0.0") |
2482 | self.assertThat(phone_label.text, Eventually(Equals("1234567890"))) |
2483 | self.assertThat(phone_type.text, Eventually(Equals("Mobile"))) |
2484 | |
2485 | === modified file 'tests/autopilot/address_book_app/tests/test_delete_contact.py' |
2486 | --- tests/autopilot/address_book_app/tests/test_delete_contact.py 2014-09-02 19:23:05 +0000 |
2487 | +++ tests/autopilot/address_book_app/tests/test_delete_contact.py 2015-10-26 13:18:18 +0000 |
2488 | @@ -69,6 +69,6 @@ |
2489 | if self.action == "cancel": |
2490 | self.app.main_window.cancel() |
2491 | elif self.action == "delete": |
2492 | - list_page.delete_selected_contacts() |
2493 | + list_page.delete_selected_contacts(self.app.main_window) |
2494 | |
2495 | self.assertEqual(list_page.get_contacts(), self.expected_result) |
2496 | |
2497 | === modified file 'tests/autopilot/address_book_app/tests/test_edit_contact.py' |
2498 | --- tests/autopilot/address_book_app/tests/test_edit_contact.py 2015-05-12 15:43:25 +0000 |
2499 | +++ tests/autopilot/address_book_app/tests/test_edit_contact.py 2015-10-26 13:18:18 +0000 |
2500 | @@ -59,7 +59,7 @@ |
2501 | |
2502 | # check if the new value is correct |
2503 | phone_label_1 = view_page.select_single( |
2504 | - "Label", |
2505 | + "UCLabel", |
2506 | objectName="label_phoneNumber_1.0") |
2507 | self.assertThat(phone_label_1.text, |
2508 | Eventually(Equals(self.PHONE_NUMBERS[1]))) |
2509 | @@ -89,14 +89,14 @@ |
2510 | |
2511 | # check if we have onlye one phone |
2512 | view_page = list_page.open_contact(0) |
2513 | - phone_group = view_page.select_single( |
2514 | + phone_group = self.main_window.wait_select_single( |
2515 | "ContactDetailGroupWithTypeView", |
2516 | objectName="phones") |
2517 | self.assertThat(phone_group.detailsCount, Eventually(Equals(1))) |
2518 | |
2519 | # check if the new value is correct |
2520 | - phone_label_1 = view_page.select_single( |
2521 | - "Label", |
2522 | + phone_label_1 = phone_group.wait_select_single( |
2523 | + "UCLabel", |
2524 | objectName="label_phoneNumber_0.0") |
2525 | self.assertThat(phone_label_1.text, |
2526 | Eventually(Equals(self.PHONE_NUMBERS[1]))) |
2527 | @@ -119,14 +119,14 @@ |
2528 | self.assertThat(view_page.visible, Eventually(Equals(True))) |
2529 | |
2530 | # check if we have a new email |
2531 | - email_group = view_page.select_single( |
2532 | + email_group = self.main_window.select_single( |
2533 | "ContactDetailGroupWithTypeView", |
2534 | objectName="emails") |
2535 | self.assertThat(email_group.detailsCount, Eventually(Equals(1))) |
2536 | |
2537 | # check if the new value is correct |
2538 | - email_label_1 = view_page.select_single( |
2539 | - "Label", |
2540 | + email_label_1 = email_group.select_single( |
2541 | + "UCLabel", |
2542 | objectName="label_emailAddress_0.0") |
2543 | self.assertThat(email_label_1.text, |
2544 | Eventually(Equals("fulano@internet.com.br"))) |
2545 | @@ -146,7 +146,7 @@ |
2546 | |
2547 | # check if the email list is empty |
2548 | view_page = self.app.main_window.get_contact_view_page() |
2549 | - emails_group = view_page.select_single( |
2550 | + emails_group = self.main_window.select_single( |
2551 | "ContactDetailGroupWithTypeView", |
2552 | objectName="emails") |
2553 | self.assertThat(emails_group.detailsCount, Eventually(Equals(0))) |
2554 | @@ -168,7 +168,7 @@ |
2555 | |
2556 | # check if is possible to save a contact without name |
2557 | self.app.main_window.save() |
2558 | - accept_button = self.app.main_window.get_button("save") |
2559 | + accept_button = self.app.main_window.get_action("save") |
2560 | self.assertThat(accept_button.enabled, Eventually(Equals(False))) |
2561 | |
2562 | # Cancel edit |
2563 | @@ -213,6 +213,6 @@ |
2564 | |
2565 | # check if the type was saved correct |
2566 | im_type = view_page.select_single( |
2567 | - "Label", |
2568 | + "UCLabel", |
2569 | objectName="type_onlineAccount_0") |
2570 | self.assertThat(im_type.text, Eventually(Equals("Aim"))) |
2571 | |
2572 | === modified file 'tests/qml/tst_ContactAvatar.qml' |
2573 | --- tests/qml/tst_ContactAvatar.qml 2014-07-08 14:20:01 +0000 |
2574 | +++ tests/qml/tst_ContactAvatar.qml 2015-10-26 13:18:18 +0000 |
2575 | @@ -14,7 +14,7 @@ |
2576 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2577 | */ |
2578 | |
2579 | -import QtQuick 2.2 |
2580 | +import QtQuick 2.4 |
2581 | import QtContacts 5.0 |
2582 | import QtTest 1.0 |
2583 | import Ubuntu.Test 0.1 |
2584 | |
2585 | === modified file 'tests/qml/tst_ContactEditor.qml' |
2586 | --- tests/qml/tst_ContactEditor.qml 2015-10-26 13:18:17 +0000 |
2587 | +++ tests/qml/tst_ContactEditor.qml 2015-10-26 13:18:18 +0000 |
2588 | @@ -14,7 +14,7 @@ |
2589 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2590 | */ |
2591 | |
2592 | -import QtQuick 2.2 |
2593 | +import QtQuick 2.4 |
2594 | import QtTest 1.0 |
2595 | import Ubuntu.Components 1.3 |
2596 | import Ubuntu.Test 0.1 |
2597 | |
2598 | === modified file 'tests/qml/tst_ContactList.qml' |
2599 | --- tests/qml/tst_ContactList.qml 2015-10-26 13:18:17 +0000 |
2600 | +++ tests/qml/tst_ContactList.qml 2015-10-26 13:18:18 +0000 |
2601 | @@ -14,7 +14,7 @@ |
2602 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2603 | */ |
2604 | |
2605 | -import QtQuick 2.2 |
2606 | +import QtQuick 2.4 |
2607 | import QtTest 1.0 |
2608 | import Ubuntu.Components 1.3 |
2609 | import Ubuntu.Test 0.1 |
2610 | |
2611 | === modified file 'tests/qml/tst_ContactListModel.qml' |
2612 | --- tests/qml/tst_ContactListModel.qml 2015-10-26 13:18:17 +0000 |
2613 | +++ tests/qml/tst_ContactListModel.qml 2015-10-26 13:18:18 +0000 |
2614 | @@ -14,7 +14,7 @@ |
2615 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2616 | */ |
2617 | |
2618 | -import QtQuick 2.2 |
2619 | +import QtQuick 2.4 |
2620 | import QtTest 1.0 |
2621 | import Ubuntu.Components 1.3 |
2622 | import Ubuntu.Test 0.1 |
2623 | |
2624 | === modified file 'tests/qml/tst_ContactListView.qml' |
2625 | --- tests/qml/tst_ContactListView.qml 2015-10-26 13:18:17 +0000 |
2626 | +++ tests/qml/tst_ContactListView.qml 2015-10-26 13:18:18 +0000 |
2627 | @@ -14,7 +14,7 @@ |
2628 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2629 | */ |
2630 | |
2631 | -import QtQuick 2.2 |
2632 | +import QtQuick 2.4 |
2633 | import QtTest 1.0 |
2634 | import Ubuntu.Components 1.3 |
2635 | import Ubuntu.Test 0.1 |
2636 | |
2637 | === modified file 'tests/qml/tst_ContactPreviewPage.qml' |
2638 | --- tests/qml/tst_ContactPreviewPage.qml 2015-10-26 13:18:17 +0000 |
2639 | +++ tests/qml/tst_ContactPreviewPage.qml 2015-10-26 13:18:18 +0000 |
2640 | @@ -14,7 +14,7 @@ |
2641 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2642 | */ |
2643 | |
2644 | -import QtQuick 2.2 |
2645 | +import QtQuick 2.4 |
2646 | import QtTest 1.0 |
2647 | import Ubuntu.Test 0.1 |
2648 | import QtContacts 5.0 |
2649 | |
2650 | === modified file 'tests/qml/tst_ListWithActions.qml' |
2651 | --- tests/qml/tst_ListWithActions.qml 2015-10-26 13:18:17 +0000 |
2652 | +++ tests/qml/tst_ListWithActions.qml 2015-10-26 13:18:18 +0000 |
2653 | @@ -14,7 +14,7 @@ |
2654 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2655 | */ |
2656 | |
2657 | -import QtQuick 2.2 |
2658 | +import QtQuick 2.4 |
2659 | import Ubuntu.Components 1.3 |
2660 | import QtTest 1.0 |
2661 | import Ubuntu.Test 0.1 |
2662 | |
2663 | === modified file 'tests/qml/tst_UbuntuContacts.qml' |
2664 | --- tests/qml/tst_UbuntuContacts.qml 2015-06-29 15:02:45 +0000 |
2665 | +++ tests/qml/tst_UbuntuContacts.qml 2015-10-26 13:18:18 +0000 |
2666 | @@ -14,7 +14,7 @@ |
2667 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2668 | */ |
2669 | |
2670 | -import QtQuick 2.2 |
2671 | +import QtQuick 2.4 |
2672 | import QtTest 1.0 |
2673 | import Ubuntu.Contacts 0.1 |
2674 | |
2675 | |
2676 | === modified file 'tests/qml/tst_VCardParser.qml' |
2677 | --- tests/qml/tst_VCardParser.qml 2014-08-13 20:52:57 +0000 |
2678 | +++ tests/qml/tst_VCardParser.qml 2015-10-26 13:18:18 +0000 |
2679 | @@ -14,7 +14,7 @@ |
2680 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
2681 | */ |
2682 | |
2683 | -import QtQuick 2.2 |
2684 | +import QtQuick 2.4 |
2685 | import QtTest 1.0 |
2686 | import Ubuntu.Test 0.1 |
2687 | import QtContacts 5.0 |
FAILED: Continuous integration, rev:474 jenkins. qa.ubuntu. com/job/ address- book-app- ci/912/ jenkins. qa.ubuntu. com/job/ address- book-app- vivid-i386- ci/215/ console jenkins. qa.ubuntu. com/job/ generic- deb-autopilot- vivid-touch/ 4104/console jenkins. qa.ubuntu. com/job/ generic- mediumtests- builder- vivid-armhf/ 4101/console
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/address- book-app- ci/912/ rebuild
http://