=== removed file 'po/gd.po'
--- po/gd.po	2014-05-22 06:49:05 +0000
+++ po/gd.po	1970-01-01 00:00:00 +0000
@@ -1,274 +0,0 @@
-# Gaelic; Scottish translation for address-book-app
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the address-book-app package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
-# Michael Bauer <fios@akerbeltz.org>, 2014.
-msgid ""
-msgstr ""
-"Project-Id-Version: address-book-app\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2014-05-13 15:51-0300\n"
-"PO-Revision-Date: 2014-05-20 05:04+0000\n"
-"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
-"Language-Team: Akerbeltz\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-05-22 06:49+0000\n"
-"X-Generator: Launchpad (build 17017)\n"
-"Language: gd\n"
-
-#: src/imports/ContactList/ContactListPage.qml:193
-msgid "Add"
-msgstr "Cuir ris"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:23
-#: src/imports/ContactView/ContactDetailAddressesView.qml:24
-msgid "Address"
-msgstr "Seòladh"
-
-#: src/imports/ContactEdit/ContactDetailSyncTargetEditor.qml:73
-#: src/imports/ContactView/ContactDetailSyncTargetView.qml:48
-msgid "Addressbook"
-msgstr "Leabhar nan seòladh"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:61
-msgid "Aim"
-msgstr "Aim"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:66
-msgid "All"
-msgstr "Na h-uile"
-
-#: src/imports/ContactEdit/ContactEditor.qml:300
-#: src/imports/ContactEdit/EditToolbar.qml:42
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:37
-msgid "Cancel"
-msgstr "Sguir dheth"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:26
-msgid "Contact not found"
-msgstr "Cha deach an neach-aithne a lorg"
-
-#: data/address-book-app.desktop.in:6 data/address-book-app.desktop.in:7
-#: src/imports/ContactList/ContactListPage.qml:57
-msgid "Contacts"
-msgstr "Luchd-aithne"
-
-#: data/address-book-app.desktop.in:8
-msgid "Contacts Address Book"
-msgstr "Leabhar sheòlaidhean an luchd-aithne"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:35
-msgid "Country"
-msgstr "Dùthaich"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactView/ContactView.qml:181
-#: src/imports/Ubuntu/Contacts/ContactSimpleListView.qml:288
-msgid "Delete"
-msgstr "Sguab às"
-
-#: src/imports/ContactEdit/EditToolbar.qml:57
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:53
-msgid "Done"
-msgstr "Deiseil"
-
-#: src/imports/ContactView/ContactView.qml:193
-msgid "Edit"
-msgstr "Deasaich"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:26
-msgid "Email"
-msgstr "Post-d"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:28
-msgid "Enter a number"
-msgstr "Cuir a-steach àireamh"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:28
-msgid "Enter a social alias"
-msgstr "Cuir a-steach ainm-brèige sòisealta"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:27
-msgid "Enter an email address"
-msgstr "Cuir a-steach seòladh puist-d"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:25
-#: src/imports/MainWindow.qml:94
-msgid "Error"
-msgstr "Mearachd"
-
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:33
-msgid "Favorite"
-msgstr "Annsachd"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:93
-msgid "Favourites"
-msgstr "Annsachdan"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "First name"
-msgstr "Ainm"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:116
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:94
-msgid "Home"
-msgstr "Dachaigh"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:62
-msgid "ICQ"
-msgstr "ICQ"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:24
-msgid "IM"
-msgstr "IM"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:64
-msgid "Jabber"
-msgstr "Jabber"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "Last name"
-msgstr "Sloinneadh"
-
-#: src/imports/ContactEdit/ContactDetailAvatarEditor.qml:85
-msgid "Loading"
-msgstr "'Ga luchdadh"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Loading..."
-msgstr "'Ga luchdadh..."
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:32
-msgid "Locality"
-msgstr "Àite"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:65
-msgid "MSN"
-msgstr "MSN"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:98
-msgid "Mobile"
-msgstr "Fòn-làimhe"
-
-#: src/imports/ContactEdit/TextInputDetail.qml:46
-msgid "Next"
-msgstr "Air adhart"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:48
-msgid "No"
-msgstr "Chan eil"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:30
-msgid "Organization"
-msgstr "Buidheann"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:118
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:102
-msgid "Other"
-msgstr "Eile"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:24
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:30
-msgid "Phone"
-msgstr "Fòn"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:34
-msgid "Post code"
-msgstr "Còd-puist"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:23
-#: src/imports/ContactView/ContactDetailOrganizationsView.qml:27
-msgid "Professional details"
-msgstr "Fiosrachadh obrach"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:33
-msgid "Region"
-msgstr "Roinn-dùthcha"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:31
-msgid "Role"
-msgstr "Dreuchd"
-
-#: src/imports/ContactEdit/ContactEditor.qml:295
-msgid "Save"
-msgstr "Sàbhail"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactList/ContactListPage.qml:185
-msgid "Select"
-msgstr "Tagh"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:67
-msgid "Skype"
-msgstr "Skype"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:27
-msgid "Social"
-msgstr "Sòisealta"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:31
-msgid "Street"
-msgstr "Sràid"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Sync"
-msgstr "Sioncronaich"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Syncing"
-msgstr "'Ga shioncronachadh"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Syncing..."
-msgstr "'Ga shioncronachadh..."
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:32
-msgid "Title"
-msgstr "Tiotal"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:30
-msgid "Touch"
-msgstr "Beantainn"
-
-#. TRANSLATORS: This value is used as default value for phone number format, when no coutry code is provided
-#. the supported values can be found in: https://www.iso.org/obp/ui/#search
-#: src/imports/ContactEdit/TextInputDetail.qml:41
-msgid "US"
-msgstr "GB"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml:111
-msgid "View contact's profile"
-msgstr "Seall pròifil an neach-aithne"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:117
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:96
-msgid "Work"
-msgstr "Obair"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:100
-msgid "Work Mobile"
-msgstr "Fòn-làimhe na h-obrach"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:28
-msgid ""
-"Would you like to sync contacts\n"
-"from online accounts now?"
-msgstr ""
-"A bheil thu airson an luchd-aithne a shioncronachadh\n"
-"o na cunntasan air loidhne an-dràsta?"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:68
-msgid "Yahoo"
-msgstr "Yahoo"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:36
-msgid "Yes"
-msgstr "Tha"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:27
-msgid "You have no contacts."
-msgstr "Chan eil neach-aithne agad."

=== removed file 'po/lv.po'
--- po/lv.po	2014-05-29 05:49:17 +0000
+++ po/lv.po	1970-01-01 00:00:00 +0000
@@ -1,273 +0,0 @@
-# Latvian translation for address-book-app
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the address-book-app package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: address-book-app\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2014-05-13 15:51-0300\n"
-"PO-Revision-Date: 2014-05-28 14:34+0000\n"
-"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
-"Language-Team: Latvian <lv@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-05-29 05:49+0000\n"
-"X-Generator: Launchpad (build 17017)\n"
-
-#: src/imports/ContactList/ContactListPage.qml:193
-msgid "Add"
-msgstr "Pievienot"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:23
-#: src/imports/ContactView/ContactDetailAddressesView.qml:24
-msgid "Address"
-msgstr "Adrese"
-
-#: src/imports/ContactEdit/ContactDetailSyncTargetEditor.qml:73
-#: src/imports/ContactView/ContactDetailSyncTargetView.qml:48
-msgid "Addressbook"
-msgstr ""
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:61
-msgid "Aim"
-msgstr "Aim"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:66
-msgid "All"
-msgstr "Visi"
-
-#: src/imports/ContactEdit/ContactEditor.qml:300
-#: src/imports/ContactEdit/EditToolbar.qml:42
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:37
-msgid "Cancel"
-msgstr "Atcelt"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:26
-msgid "Contact not found"
-msgstr "Kontakts nav atrasts"
-
-#: data/address-book-app.desktop.in:6 data/address-book-app.desktop.in:7
-#: src/imports/ContactList/ContactListPage.qml:57
-msgid "Contacts"
-msgstr "Kontakti"
-
-#: data/address-book-app.desktop.in:8
-msgid "Contacts Address Book"
-msgstr ""
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:35
-msgid "Country"
-msgstr "Valsts"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactView/ContactView.qml:181
-#: src/imports/Ubuntu/Contacts/ContactSimpleListView.qml:288
-msgid "Delete"
-msgstr "Dzēst"
-
-#: src/imports/ContactEdit/EditToolbar.qml:57
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:53
-msgid "Done"
-msgstr "Pabeigts"
-
-#: src/imports/ContactView/ContactView.qml:193
-msgid "Edit"
-msgstr "Labot"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:26
-msgid "Email"
-msgstr "E-pasts"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:28
-msgid "Enter a number"
-msgstr "Ievadiet numuru"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:28
-msgid "Enter a social alias"
-msgstr ""
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:27
-msgid "Enter an email address"
-msgstr "Ievadīt epastu adresi"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:25
-#: src/imports/MainWindow.qml:94
-msgid "Error"
-msgstr "Kļūda"
-
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:33
-msgid "Favorite"
-msgstr "Iecienītais"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:93
-msgid "Favourites"
-msgstr "Favorīti"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "First name"
-msgstr "Vārds"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:116
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:94
-msgid "Home"
-msgstr "Mājas"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:62
-msgid "ICQ"
-msgstr "ICQ"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:24
-msgid "IM"
-msgstr "IM"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:64
-msgid "Jabber"
-msgstr "Jabber"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "Last name"
-msgstr "Uzvārds"
-
-#: src/imports/ContactEdit/ContactDetailAvatarEditor.qml:85
-msgid "Loading"
-msgstr "Ielādē"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Loading..."
-msgstr "Ielādē..."
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:32
-msgid "Locality"
-msgstr "Apgabals"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:65
-msgid "MSN"
-msgstr "MSN"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:98
-msgid "Mobile"
-msgstr "Mob. tālr."
-
-#: src/imports/ContactEdit/TextInputDetail.qml:46
-msgid "Next"
-msgstr "Nākamais"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:48
-msgid "No"
-msgstr "Nē"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:30
-msgid "Organization"
-msgstr "Uzņēmums"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:118
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:102
-msgid "Other"
-msgstr "Cits"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:24
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:30
-msgid "Phone"
-msgstr "Telefons"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:34
-msgid "Post code"
-msgstr "Pasta indekss"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:23
-#: src/imports/ContactView/ContactDetailOrganizationsView.qml:27
-msgid "Professional details"
-msgstr ""
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:33
-msgid "Region"
-msgstr "Reģions"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:31
-msgid "Role"
-msgstr "Amats"
-
-#: src/imports/ContactEdit/ContactEditor.qml:295
-msgid "Save"
-msgstr "Saglabāt"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactList/ContactListPage.qml:185
-msgid "Select"
-msgstr "Izvēlēties"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:67
-msgid "Skype"
-msgstr "Skype"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:27
-msgid "Social"
-msgstr "Sociāls"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:31
-msgid "Street"
-msgstr "Iela"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Sync"
-msgstr "Sinhronizācija"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Syncing"
-msgstr "Sinhronizē"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Syncing..."
-msgstr "Sinhronizē..."
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:32
-msgid "Title"
-msgstr "Nosaukums"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:30
-msgid "Touch"
-msgstr ""
-
-#. TRANSLATORS: This value is used as default value for phone number format, when no coutry code is provided
-#. the supported values can be found in: https://www.iso.org/obp/ui/#search
-#: src/imports/ContactEdit/TextInputDetail.qml:41
-msgid "US"
-msgstr "ASV"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml:111
-msgid "View contact's profile"
-msgstr "Skatīt kontakta profils"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:117
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:96
-msgid "Work"
-msgstr "Darbs"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:100
-msgid "Work Mobile"
-msgstr "Darba Mobilais"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:28
-msgid ""
-"Would you like to sync contacts\n"
-"from online accounts now?"
-msgstr ""
-"Vai vēlāties sinhronizēt kontaktus\n"
-"no tiešsaistes kontiem tagad?"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:68
-msgid "Yahoo"
-msgstr "Yahoo"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:36
-msgid "Yes"
-msgstr "Jā"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:27
-msgid "You have no contacts."
-msgstr "Jums nav kontaktu."

=== removed file 'po/nb.po'
--- po/nb.po	2014-05-22 06:49:05 +0000
+++ po/nb.po	1970-01-01 00:00:00 +0000
@@ -1,273 +0,0 @@
-# Norwegian Bokmal translation for address-book-app
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the address-book-app package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: address-book-app\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2014-05-13 15:51-0300\n"
-"PO-Revision-Date: 2014-05-19 05:58+0000\n"
-"Last-Translator: Åka Sikrom <Unknown>\n"
-"Language-Team: Norwegian Bokmal <nb@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-05-22 06:49+0000\n"
-"X-Generator: Launchpad (build 17017)\n"
-
-#: src/imports/ContactList/ContactListPage.qml:193
-msgid "Add"
-msgstr "Legg til"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:23
-#: src/imports/ContactView/ContactDetailAddressesView.qml:24
-msgid "Address"
-msgstr "Adresse"
-
-#: src/imports/ContactEdit/ContactDetailSyncTargetEditor.qml:73
-#: src/imports/ContactView/ContactDetailSyncTargetView.qml:48
-msgid "Addressbook"
-msgstr "Adressebok"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:61
-msgid "Aim"
-msgstr "Hensikt"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:66
-msgid "All"
-msgstr "Alle"
-
-#: src/imports/ContactEdit/ContactEditor.qml:300
-#: src/imports/ContactEdit/EditToolbar.qml:42
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:37
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:26
-msgid "Contact not found"
-msgstr "Fant ikke kontakten"
-
-#: data/address-book-app.desktop.in:6 data/address-book-app.desktop.in:7
-#: src/imports/ContactList/ContactListPage.qml:57
-msgid "Contacts"
-msgstr "Kontakter"
-
-#: data/address-book-app.desktop.in:8
-msgid "Contacts Address Book"
-msgstr "Adressebok"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:35
-msgid "Country"
-msgstr "Land"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactView/ContactView.qml:181
-#: src/imports/Ubuntu/Contacts/ContactSimpleListView.qml:288
-msgid "Delete"
-msgstr "Slett"
-
-#: src/imports/ContactEdit/EditToolbar.qml:57
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:53
-msgid "Done"
-msgstr "Ferdig"
-
-#: src/imports/ContactView/ContactView.qml:193
-msgid "Edit"
-msgstr "Rediger"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:26
-msgid "Email"
-msgstr "E-post"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:28
-msgid "Enter a number"
-msgstr "Tast et nummer"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:28
-msgid "Enter a social alias"
-msgstr "Skriv et sosialt kallenavn"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:27
-msgid "Enter an email address"
-msgstr "Skriv inn en e-postadresse"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:25
-#: src/imports/MainWindow.qml:94
-msgid "Error"
-msgstr "Feil"
-
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:33
-msgid "Favorite"
-msgstr "Favoritt"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:93
-msgid "Favourites"
-msgstr "Favoritter"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "First name"
-msgstr "Fornavn"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:116
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:94
-msgid "Home"
-msgstr "Hjem"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:62
-msgid "ICQ"
-msgstr "ICQ"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:24
-msgid "IM"
-msgstr "Lynmelding"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:64
-msgid "Jabber"
-msgstr "Jabber"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "Last name"
-msgstr "Etternavn"
-
-#: src/imports/ContactEdit/ContactDetailAvatarEditor.qml:85
-msgid "Loading"
-msgstr "Laster inn"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Loading..."
-msgstr "Laster inn …"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:32
-msgid "Locality"
-msgstr "Sted"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:65
-msgid "MSN"
-msgstr "MSN"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:98
-msgid "Mobile"
-msgstr "Mobil"
-
-#: src/imports/ContactEdit/TextInputDetail.qml:46
-msgid "Next"
-msgstr "Neste"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:48
-msgid "No"
-msgstr "Nei"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:30
-msgid "Organization"
-msgstr "Organisasjon"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:118
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:102
-msgid "Other"
-msgstr "Annet"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:24
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:30
-msgid "Phone"
-msgstr "Telefon"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:34
-msgid "Post code"
-msgstr "Postnummer"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:23
-#: src/imports/ContactView/ContactDetailOrganizationsView.qml:27
-msgid "Professional details"
-msgstr "Profesjonsdetaljer"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:33
-msgid "Region"
-msgstr "Region"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:31
-msgid "Role"
-msgstr "Rolle"
-
-#: src/imports/ContactEdit/ContactEditor.qml:295
-msgid "Save"
-msgstr "Lagre"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactList/ContactListPage.qml:185
-msgid "Select"
-msgstr "Velg"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:67
-msgid "Skype"
-msgstr "Skype"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:27
-msgid "Social"
-msgstr "Sosialt"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:31
-msgid "Street"
-msgstr "Gate"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Sync"
-msgstr "Synkronisering"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Syncing"
-msgstr "Synkroniserer"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Syncing..."
-msgstr "Synkroniserer …"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:32
-msgid "Title"
-msgstr "Tittel"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:30
-msgid "Touch"
-msgstr "Berøring"
-
-#. TRANSLATORS: This value is used as default value for phone number format, when no coutry code is provided
-#. the supported values can be found in: https://www.iso.org/obp/ui/#search
-#: src/imports/ContactEdit/TextInputDetail.qml:41
-msgid "US"
-msgstr "NO"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml:111
-msgid "View contact's profile"
-msgstr "Vis kontaktprofil"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:117
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:96
-msgid "Work"
-msgstr "Jobb"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:100
-msgid "Work Mobile"
-msgstr "Jobbmobil"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:28
-msgid ""
-"Would you like to sync contacts\n"
-"from online accounts now?"
-msgstr ""
-"Vil du synkronisere adresseboka\n"
-"med eventuelle nettkontoer nå?"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:68
-msgid "Yahoo"
-msgstr "Yahoo"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:36
-msgid "Yes"
-msgstr "Ja"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:27
-msgid "You have no contacts."
-msgstr "Du har ingen kontakter."

=== added file 'po/pl.po'
--- po/pl.po	1970-01-01 00:00:00 +0000
+++ po/pl.po	2014-06-06 15:49:21 +0000
@@ -0,0 +1,273 @@
+# Polish translation for address-book-app
+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
+# This file is distributed under the same license as the address-book-app package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: address-book-app\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2014-05-13 15:51-0300\n"
+"PO-Revision-Date: 2014-05-27 15:33+0000\n"
+"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2014-05-28 05:54+0000\n"
+"X-Generator: Launchpad (build 17017)\n"
+
+#: src/imports/ContactList/ContactListPage.qml:193
+msgid "Add"
+msgstr "Dodaj"
+
+#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:23
+#: src/imports/ContactView/ContactDetailAddressesView.qml:24
+msgid "Address"
+msgstr "Adres"
+
+#: src/imports/ContactEdit/ContactDetailSyncTargetEditor.qml:73
+#: src/imports/ContactView/ContactDetailSyncTargetView.qml:48
+msgid "Addressbook"
+msgstr "Książka adresowa"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:61
+msgid "Aim"
+msgstr "Aim"
+
+#: src/imports/Ubuntu/Contacts/ContactListView.qml:66
+msgid "All"
+msgstr "Wszystkie"
+
+#: src/imports/ContactEdit/ContactEditor.qml:300
+#: src/imports/ContactEdit/EditToolbar.qml:42
+#: src/imports/Ubuntu/Contacts/DialogButtons.qml:37
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: src/imports/ContactEdit/ContactFetchError.qml:26
+msgid "Contact not found"
+msgstr "Nie odnaleziono kontaktu"
+
+#: data/address-book-app.desktop.in:6 data/address-book-app.desktop.in:7
+#: src/imports/ContactList/ContactListPage.qml:57
+msgid "Contacts"
+msgstr "Kontakty"
+
+#: data/address-book-app.desktop.in:8
+msgid "Contacts Address Book"
+msgstr "Książka adresowa"
+
+#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:35
+msgid "Country"
+msgstr "Kraj"
+
+#: src/imports/ContactList/ContactListPage.qml:83
+#: src/imports/ContactView/ContactView.qml:181
+#: src/imports/Ubuntu/Contacts/ContactSimpleListView.qml:288
+msgid "Delete"
+msgstr "Usuń"
+
+#: src/imports/ContactEdit/EditToolbar.qml:57
+#: src/imports/Ubuntu/Contacts/DialogButtons.qml:53
+msgid "Done"
+msgstr "Gotowe"
+
+#: src/imports/ContactView/ContactView.qml:193
+msgid "Edit"
+msgstr "Edytuj"
+
+#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:23
+#: src/imports/ContactView/ContactDetailEmailsView.qml:23
+#: src/imports/ContactView/ContactDetailEmailsView.qml:26
+msgid "Email"
+msgstr "e-mail"
+
+#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:28
+msgid "Enter a number"
+msgstr "Podaj numer"
+
+#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:28
+msgid "Enter a social alias"
+msgstr "Podaj alias społecznościowy"
+
+#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:27
+msgid "Enter an email address"
+msgstr "Wprowadź adres e-mail"
+
+#: src/imports/ContactEdit/ContactFetchError.qml:25
+#: src/imports/MainWindow.qml:94
+msgid "Error"
+msgstr "Błąd"
+
+#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:33
+msgid "Favorite"
+msgstr "Ulubiony"
+
+#: src/imports/Ubuntu/Contacts/ContactListView.qml:93
+msgid "Favourites"
+msgstr "Ulubione"
+
+#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
+msgid "First name"
+msgstr "Imię"
+
+#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:116
+#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:94
+msgid "Home"
+msgstr ""
+
+#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:62
+msgid "ICQ"
+msgstr "ICQ"
+
+#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:24
+msgid "IM"
+msgstr "Komunikator (IM)"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:64
+msgid "Jabber"
+msgstr "Jabber"
+
+#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
+msgid "Last name"
+msgstr "Nazwisko"
+
+#: src/imports/ContactEdit/ContactDetailAvatarEditor.qml:85
+msgid "Loading"
+msgstr "Wczytywanie"
+
+#: src/imports/ContactList/ContactListPage.qml:163
+msgid "Loading..."
+msgstr "Ładowanie..."
+
+#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:32
+msgid "Locality"
+msgstr "Miejscowość"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:65
+msgid "MSN"
+msgstr "MSN"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:98
+msgid "Mobile"
+msgstr "Telefon komórkowy"
+
+#: src/imports/ContactEdit/TextInputDetail.qml:46
+msgid "Next"
+msgstr "Następny"
+
+#: src/imports/ContactList/OnlineAccountsMessage.qml:48
+msgid "No"
+msgstr "Nie"
+
+#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:30
+msgid "Organization"
+msgstr "Organizacja"
+
+#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:118
+#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:102
+msgid "Other"
+msgstr "Inne"
+
+#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:24
+#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:30
+msgid "Phone"
+msgstr "Telefon"
+
+#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:34
+msgid "Post code"
+msgstr "Kod pocztowy"
+
+#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:23
+#: src/imports/ContactView/ContactDetailOrganizationsView.qml:27
+msgid "Professional details"
+msgstr "Detale służbowe"
+
+#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:33
+msgid "Region"
+msgstr "Region"
+
+#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:31
+msgid "Role"
+msgstr "Stanowisko"
+
+#: src/imports/ContactEdit/ContactEditor.qml:295
+msgid "Save"
+msgstr "Zapisz"
+
+#: src/imports/ContactList/ContactListPage.qml:83
+#: src/imports/ContactList/ContactListPage.qml:185
+msgid "Select"
+msgstr "Wybierz"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:67
+msgid "Skype"
+msgstr "Skype"
+
+#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:27
+msgid "Social"
+msgstr "Serwisy społecznościowe"
+
+#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:31
+msgid "Street"
+msgstr "Ulica"
+
+#: src/imports/ContactList/ContactListPage.qml:176
+msgid "Sync"
+msgstr "Synchronizacja"
+
+#: src/imports/ContactList/ContactListPage.qml:176
+msgid "Syncing"
+msgstr "Synchronizowanie"
+
+#: src/imports/ContactList/ContactListPage.qml:163
+msgid "Syncing..."
+msgstr "Synchronizacja..."
+
+#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:32
+msgid "Title"
+msgstr "Tytuł"
+
+#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:30
+msgid "Touch"
+msgstr "Dotyk"
+
+#. TRANSLATORS: This value is used as default value for phone number format, when no coutry code is provided
+#. the supported values can be found in: https://www.iso.org/obp/ui/#search
+#: src/imports/ContactEdit/TextInputDetail.qml:41
+msgid "US"
+msgstr "PL"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml:111
+msgid "View contact's profile"
+msgstr "Wyświetl profil kontaktu"
+
+#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:117
+#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:96
+msgid "Work"
+msgstr "Praca"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:100
+msgid "Work Mobile"
+msgstr "Służbowy telefon komórkowy"
+
+#: src/imports/ContactList/OnlineAccountsMessage.qml:28
+msgid ""
+"Would you like to sync contacts\n"
+"from online accounts now?"
+msgstr ""
+"Czy zsynchronizować kontakty\n"
+"z kontami online w tej chwili?"
+
+#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:68
+msgid "Yahoo"
+msgstr "Yahoo!"
+
+#: src/imports/ContactList/OnlineAccountsMessage.qml:36
+msgid "Yes"
+msgstr "Tak"
+
+#: src/imports/ContactList/OnlineAccountsMessage.qml:27
+msgid "You have no contacts."
+msgstr "Brak kontaktów"

=== removed file 'po/pl.po'
--- po/pl.po	2014-05-28 05:54:08 +0000
+++ po/pl.po	1970-01-01 00:00:00 +0000
@@ -1,273 +0,0 @@
-# Polish translation for address-book-app
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the address-book-app package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: address-book-app\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2014-05-13 15:51-0300\n"
-"PO-Revision-Date: 2014-05-27 15:33+0000\n"
-"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
-"Language-Team: Polish <pl@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-05-28 05:54+0000\n"
-"X-Generator: Launchpad (build 17017)\n"
-
-#: src/imports/ContactList/ContactListPage.qml:193
-msgid "Add"
-msgstr "Dodaj"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:23
-#: src/imports/ContactView/ContactDetailAddressesView.qml:24
-msgid "Address"
-msgstr "Adres"
-
-#: src/imports/ContactEdit/ContactDetailSyncTargetEditor.qml:73
-#: src/imports/ContactView/ContactDetailSyncTargetView.qml:48
-msgid "Addressbook"
-msgstr "Książka adresowa"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:61
-msgid "Aim"
-msgstr "Aim"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:66
-msgid "All"
-msgstr "Wszystkie"
-
-#: src/imports/ContactEdit/ContactEditor.qml:300
-#: src/imports/ContactEdit/EditToolbar.qml:42
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:37
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:26
-msgid "Contact not found"
-msgstr "Nie odnaleziono kontaktu"
-
-#: data/address-book-app.desktop.in:6 data/address-book-app.desktop.in:7
-#: src/imports/ContactList/ContactListPage.qml:57
-msgid "Contacts"
-msgstr "Kontakty"
-
-#: data/address-book-app.desktop.in:8
-msgid "Contacts Address Book"
-msgstr "Książka adresowa"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:35
-msgid "Country"
-msgstr "Kraj"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactView/ContactView.qml:181
-#: src/imports/Ubuntu/Contacts/ContactSimpleListView.qml:288
-msgid "Delete"
-msgstr "Usuń"
-
-#: src/imports/ContactEdit/EditToolbar.qml:57
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:53
-msgid "Done"
-msgstr "Gotowe"
-
-#: src/imports/ContactView/ContactView.qml:193
-msgid "Edit"
-msgstr "Edytuj"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:26
-msgid "Email"
-msgstr "e-mail"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:28
-msgid "Enter a number"
-msgstr "Podaj numer"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:28
-msgid "Enter a social alias"
-msgstr "Podaj alias społecznościowy"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:27
-msgid "Enter an email address"
-msgstr "Wprowadź adres e-mail"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:25
-#: src/imports/MainWindow.qml:94
-msgid "Error"
-msgstr "Błąd"
-
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:33
-msgid "Favorite"
-msgstr "Ulubiony"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:93
-msgid "Favourites"
-msgstr "Ulubione"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "First name"
-msgstr "Imię"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:116
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:94
-msgid "Home"
-msgstr ""
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:62
-msgid "ICQ"
-msgstr "ICQ"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:24
-msgid "IM"
-msgstr "Komunikator (IM)"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:64
-msgid "Jabber"
-msgstr "Jabber"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "Last name"
-msgstr "Nazwisko"
-
-#: src/imports/ContactEdit/ContactDetailAvatarEditor.qml:85
-msgid "Loading"
-msgstr "Wczytywanie"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Loading..."
-msgstr "Ładowanie..."
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:32
-msgid "Locality"
-msgstr "Miejscowość"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:65
-msgid "MSN"
-msgstr "MSN"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:98
-msgid "Mobile"
-msgstr "Telefon komórkowy"
-
-#: src/imports/ContactEdit/TextInputDetail.qml:46
-msgid "Next"
-msgstr "Następny"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:48
-msgid "No"
-msgstr "Nie"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:30
-msgid "Organization"
-msgstr "Organizacja"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:118
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:102
-msgid "Other"
-msgstr "Inne"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:24
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:30
-msgid "Phone"
-msgstr "Telefon"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:34
-msgid "Post code"
-msgstr "Kod pocztowy"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:23
-#: src/imports/ContactView/ContactDetailOrganizationsView.qml:27
-msgid "Professional details"
-msgstr "Detale służbowe"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:33
-msgid "Region"
-msgstr "Region"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:31
-msgid "Role"
-msgstr "Stanowisko"
-
-#: src/imports/ContactEdit/ContactEditor.qml:295
-msgid "Save"
-msgstr "Zapisz"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactList/ContactListPage.qml:185
-msgid "Select"
-msgstr "Wybierz"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:67
-msgid "Skype"
-msgstr "Skype"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:27
-msgid "Social"
-msgstr "Serwisy społecznościowe"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:31
-msgid "Street"
-msgstr "Ulica"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Sync"
-msgstr "Synchronizacja"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Syncing"
-msgstr "Synchronizowanie"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Syncing..."
-msgstr "Synchronizacja..."
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:32
-msgid "Title"
-msgstr "Tytuł"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:30
-msgid "Touch"
-msgstr "Dotyk"
-
-#. TRANSLATORS: This value is used as default value for phone number format, when no coutry code is provided
-#. the supported values can be found in: https://www.iso.org/obp/ui/#search
-#: src/imports/ContactEdit/TextInputDetail.qml:41
-msgid "US"
-msgstr "PL"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml:111
-msgid "View contact's profile"
-msgstr "Wyświetl profil kontaktu"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:117
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:96
-msgid "Work"
-msgstr "Praca"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:100
-msgid "Work Mobile"
-msgstr "Służbowy telefon komórkowy"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:28
-msgid ""
-"Would you like to sync contacts\n"
-"from online accounts now?"
-msgstr ""
-"Czy zsynchronizować kontakty\n"
-"z kontami online w tej chwili?"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:68
-msgid "Yahoo"
-msgstr "Yahoo!"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:36
-msgid "Yes"
-msgstr "Tak"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:27
-msgid "You have no contacts."
-msgstr "Brak kontaktów"

=== removed file 'po/zh_CN.po'
--- po/zh_CN.po	2014-05-28 05:54:08 +0000
+++ po/zh_CN.po	1970-01-01 00:00:00 +0000
@@ -1,271 +0,0 @@
-# Chinese (Simplified) translation for address-book-app
-# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
-# This file is distributed under the same license as the address-book-app package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: address-book-app\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2014-05-13 15:51-0300\n"
-"PO-Revision-Date: 2014-05-27 07:36+0000\n"
-"Last-Translator: Shuduo Sang <Unknown>\n"
-"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-05-28 05:54+0000\n"
-"X-Generator: Launchpad (build 17017)\n"
-
-#: src/imports/ContactList/ContactListPage.qml:193
-msgid "Add"
-msgstr "添加"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:23
-#: src/imports/ContactView/ContactDetailAddressesView.qml:24
-msgid "Address"
-msgstr "地址"
-
-#: src/imports/ContactEdit/ContactDetailSyncTargetEditor.qml:73
-#: src/imports/ContactView/ContactDetailSyncTargetView.qml:48
-msgid "Addressbook"
-msgstr "地址簿"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:61
-msgid "Aim"
-msgstr "AIM"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:66
-msgid "All"
-msgstr "全部"
-
-#: src/imports/ContactEdit/ContactEditor.qml:300
-#: src/imports/ContactEdit/EditToolbar.qml:42
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:37
-msgid "Cancel"
-msgstr "取消"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:26
-msgid "Contact not found"
-msgstr "找不到联系人"
-
-#: data/address-book-app.desktop.in:6 data/address-book-app.desktop.in:7
-#: src/imports/ContactList/ContactListPage.qml:57
-msgid "Contacts"
-msgstr "联系人"
-
-#: data/address-book-app.desktop.in:8
-msgid "Contacts Address Book"
-msgstr "联系人地址簿"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:35
-msgid "Country"
-msgstr "国家"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactView/ContactView.qml:181
-#: src/imports/Ubuntu/Contacts/ContactSimpleListView.qml:288
-msgid "Delete"
-msgstr "删除"
-
-#: src/imports/ContactEdit/EditToolbar.qml:57
-#: src/imports/Ubuntu/Contacts/DialogButtons.qml:53
-msgid "Done"
-msgstr "完成"
-
-#: src/imports/ContactView/ContactView.qml:193
-msgid "Edit"
-msgstr "编辑"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:23
-#: src/imports/ContactView/ContactDetailEmailsView.qml:26
-msgid "Email"
-msgstr "电子邮件"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:28
-msgid "Enter a number"
-msgstr "输入号码"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:28
-msgid "Enter a social alias"
-msgstr "输入一个网名"
-
-#: src/imports/ContactEdit/ContactDetailEmailsEditor.qml:27
-msgid "Enter an email address"
-msgstr "输入一个电子邮件地址"
-
-#: src/imports/ContactEdit/ContactFetchError.qml:25
-#: src/imports/MainWindow.qml:94
-msgid "Error"
-msgstr "出错"
-
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:33
-msgid "Favorite"
-msgstr "收藏夹"
-
-#: src/imports/Ubuntu/Contacts/ContactListView.qml:93
-msgid "Favourites"
-msgstr "收藏夹"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "First name"
-msgstr "名字"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:116
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:94
-msgid "Home"
-msgstr "首页"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:62
-msgid "ICQ"
-msgstr "ICQ"
-
-#: src/imports/ContactEdit/ContactDetailOnlineAccountsEditor.qml:24
-msgid "IM"
-msgstr "即时通讯"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:64
-msgid "Jabber"
-msgstr "Jabber"
-
-#: src/imports/ContactEdit/ContactDetailNameEditor.qml:81
-msgid "Last name"
-msgstr "姓氏"
-
-#: src/imports/ContactEdit/ContactDetailAvatarEditor.qml:85
-msgid "Loading"
-msgstr "加载中"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Loading..."
-msgstr "加载中…"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:32
-msgid "Locality"
-msgstr "城市"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:65
-msgid "MSN"
-msgstr "MSN"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:98
-msgid "Mobile"
-msgstr "手机"
-
-#: src/imports/ContactEdit/TextInputDetail.qml:46
-msgid "Next"
-msgstr "下一个"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:48
-msgid "No"
-msgstr "否"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:30
-msgid "Organization"
-msgstr "组织"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:118
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:102
-msgid "Other"
-msgstr "其他"
-
-#: src/imports/ContactEdit/ContactDetailPhoneNumbersEditor.qml:24
-#: src/imports/ContactView/ContactDetailPhoneNumbersView.qml:30
-msgid "Phone"
-msgstr "电话"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:34
-msgid "Post code"
-msgstr "邮政编号"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:23
-#: src/imports/ContactView/ContactDetailOrganizationsView.qml:27
-msgid "Professional details"
-msgstr "专业信息"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:33
-msgid "Region"
-msgstr "地区"
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:31
-msgid "Role"
-msgstr "职务"
-
-#: src/imports/ContactEdit/ContactEditor.qml:295
-msgid "Save"
-msgstr "保存"
-
-#: src/imports/ContactList/ContactListPage.qml:83
-#: src/imports/ContactList/ContactListPage.qml:185
-msgid "Select"
-msgstr "选择"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:67
-msgid "Skype"
-msgstr "Skype"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:27
-msgid "Social"
-msgstr "社交"
-
-#: src/imports/ContactEdit/ContactDetailAddressesEditor.qml:31
-msgid "Street"
-msgstr "街道"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Sync"
-msgstr "同步"
-
-#: src/imports/ContactList/ContactListPage.qml:176
-msgid "Syncing"
-msgstr "同步中"
-
-#: src/imports/ContactList/ContactListPage.qml:163
-msgid "Syncing..."
-msgstr "同步中..."
-
-#: src/imports/ContactEdit/ContactDetailOrganizationsEditor.qml:32
-msgid "Title"
-msgstr "标题"
-
-#: src/imports/ContactView/ContactDetailOnlineAccountsView.qml:30
-msgid "Touch"
-msgstr ""
-
-#. TRANSLATORS: This value is used as default value for phone number format, when no coutry code is provided
-#. the supported values can be found in: https://www.iso.org/obp/ui/#search
-#: src/imports/ContactEdit/TextInputDetail.qml:41
-msgid "US"
-msgstr "CN"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml:111
-msgid "View contact's profile"
-msgstr "查看联系人简况"
-
-#: src/imports/Common/ContactDetailGroupWithTypeBase.qml:117
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:96
-msgid "Work"
-msgstr "工作"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailPhoneNumberTypeModel.qml:100
-msgid "Work Mobile"
-msgstr "办公手机"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:28
-msgid ""
-"Would you like to sync contacts\n"
-"from online accounts now?"
-msgstr "您现在想从网上账号同步联系人吗？"
-
-#: src/imports/Ubuntu/Contacts/ContactDetailOnlineAccountTypeModel.qml:68
-msgid "Yahoo"
-msgstr "雅虎"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:36
-msgid "Yes"
-msgstr "是"
-
-#: src/imports/ContactList/OnlineAccountsMessage.qml:27
-msgid "You have no contacts."
-msgstr "没有任何联系人。"

=== modified file 'src/imports/ContactEdit/ContactEditor.qml'
--- src/imports/ContactEdit/ContactEditor.qml	2014-05-16 01:46:26 +0000
+++ src/imports/ContactEdit/ContactEditor.qml	2014-06-06 15:49:21 +0000
@@ -152,10 +152,13 @@
         }
     }
 
+    flickable: null
     Flickable {
         id: scrollArea
         objectName: "scrollArea"
 
+        // this is necessary to avoid the page to appear bellow the header
+        clip: true
         flickableDirection: Flickable.VerticalFlick
         anchors {
             fill: parent

=== modified file 'src/imports/ContactEdit/ValueSelector.qml'
--- src/imports/ContactEdit/ValueSelector.qml	2014-05-06 13:18:07 +0000
+++ src/imports/ContactEdit/ValueSelector.qml	2014-06-06 15:49:21 +0000
@@ -100,12 +100,11 @@
 
             // style
             fontSize: root.active ? "medium" : "small"
-            color: "#f3f3e7"
         }
 
         Icon {
             name: "chevron"
-            color: "white"
+            color: "black"
             height: units.gu(1)
             width: height
 
@@ -142,7 +141,7 @@
                 bottom: parent.bottom
             }
             width: arrow.width + listLabel.paintedWidth + units.gu(1)
-            opacity: currentIndex == index ? 1.0 : 0.2
+            opacity: currentIndex == index ? 1.0 : 0.4
 
             Label {
                 id: listLabel
@@ -156,7 +155,6 @@
 
                 // style
                 fontSize: "medium"
-                color: "#f3f3e7"
 
                 MouseArea {
                     width: parent.width + units.gu(0.5)

=== modified file 'src/imports/ContactList/ContactListPage.qml'
--- src/imports/ContactList/ContactListPage.qml	2014-06-06 15:49:21 +0000
+++ src/imports/ContactList/ContactListPage.qml	2014-06-06 15:49:21 +0000
@@ -109,6 +109,7 @@
         }
     }
 
+    flickable: null //contactList.fastScrolling ? null : contactList.view
     ContactsUI.ContactListView {
         id: contactList
         objectName: "contactListView"
@@ -119,10 +120,11 @@
             bottom: keyboard.top
             right: parent.right
         }
-        swipeToDelete: !pickMode
+        detailToPick: ContactDetail.PhoneNumber
         multiSelectionEnabled: true
         multipleSelection: !pickMode ||
                            ((contactContentHub && contactContentHub.multipleItems) || mainPage.pickMultipleContacts)
+
         DetailFilter {
             id: nameFilter
 
@@ -133,6 +135,23 @@
         }
 
         filter: (searchField.text != "" ? nameFilter : null)
+
+        anchors.fill: parent
+
+        leftSideAction: Action {
+            iconName: "delete"
+            text: i18n.tr("Delete")
+            onTriggered: {
+                value.makeDisappear()
+            }
+        }
+
+        onContactDisappeared: {
+            if (contact) {
+                contactModel.removeContact(contact.contactId)
+            }
+        }
+
         onCountChanged: {
             if (count > 0)
                 mainPage.contactsLoaded = true
@@ -146,13 +165,20 @@
             }
         }
 
-        onContactClicked: {
+        onInfoRequested: {
             mainPage.searching = false
             pageStack.push(Qt.resolvedUrl("../ContactView/ContactView.qml"),
                            {model: contactList.listModel,
                             contact: contact})
         }
 
+        onDetailClicked: {
+            if (action == "call")
+                Qt.openUrlExternally("tel:///" + encodeURIComponent(detail.number))
+            else if (action == "message")
+                Qt.openUrlExternally("message:///" + encodeURIComponent(detail.number))
+        }
+
         onSelectionDone: {
             if (pickMode) {
                 var contacts = []
@@ -185,26 +211,26 @@
         }
 
         onError: pageStack.contactModelError(error)
-
-        Column {
-            id: indicator
-
-            anchors.centerIn: parent
-            spacing: units.gu(2)
-            visible: ((contactList.loading && !mainPage.contactsLoaded) ||
-                      (application.syncing && (contactList.count === 0)))
-
-
-            ActivityIndicator {
-                id: activity
-
-                anchors.horizontalCenter: parent.horizontalCenter
-                running: indicator.visible
-            }
-            Label {
-                anchors.horizontalCenter: activity.horizontalCenter
-                text: contactList.loading ?  i18n.tr("Loading...") : i18n.tr("Syncing...")
-            }
+    }
+
+    Column {
+        id: indicator
+
+        anchors.centerIn: contactList
+        spacing: units.gu(2)
+        visible: ((contactList.loading && !mainPage.contactsLoaded) ||
+                  (application.syncing && (contactList.count === 0)))
+
+
+        ActivityIndicator {
+            id: activity
+
+            anchors.horizontalCenter: parent.horizontalCenter
+            running: indicator.visible
+        }
+        Label {
+            anchors.horizontalCenter: activity.horizontalCenter
+            text: contactList.loading ?  i18n.tr("Loading...") : i18n.tr("Syncing...")
         }
     }
 
@@ -385,7 +411,6 @@
         }
     }
 
-
     KeyboardRectangle {
         id: keyboard
     }

=== modified file 'src/imports/ContactView/ActionButton.qml'
--- src/imports/ContactView/ActionButton.qml	2014-05-06 13:18:07 +0000
+++ src/imports/ContactView/ActionButton.qml	2014-06-06 15:49:21 +0000
@@ -29,6 +29,5 @@
         anchors.centerIn: parent
         height: units.gu(3)
         width: height
-        color: "white"
     }
 }

=== modified file 'src/imports/ContactView/BasicFieldView.qml'
--- src/imports/ContactView/BasicFieldView.qml	2014-05-13 18:53:02 +0000
+++ src/imports/ContactView/BasicFieldView.qml	2014-06-06 15:49:21 +0000
@@ -62,8 +62,7 @@
 
         // style
         fontSize: "small"
-        color: "#f3f3e7"
-        opacity: 0.2
+        opacity: 0.8
     }
 
     Column {
@@ -94,7 +93,7 @@
 
                 // style
                 fontSize: "medium"
-                color: "#f3f3e7"
+                color: UbuntuColors.lightAubergine
             }
         }
     }

=== modified file 'src/imports/ContactView/ContactDetailGroupWithTypeView.qml'
--- src/imports/ContactView/ContactDetailGroupWithTypeView.qml	2014-05-06 13:18:07 +0000
+++ src/imports/ContactView/ContactDetailGroupWithTypeView.qml	2014-06-06 15:49:21 +0000
@@ -45,8 +45,7 @@
 
             // style
             fontSize: "medium"
-            color: "#f3f3e7"
-            opacity: 0.2
+            opacity: 0.8
         }
     }
 

=== modified file 'src/imports/Ubuntu/Contacts/CMakeLists.txt'
--- src/imports/Ubuntu/Contacts/CMakeLists.txt	2014-06-06 15:49:21 +0000
+++ src/imports/Ubuntu/Contacts/CMakeLists.txt	2014-06-06 15:49:21 +0000
@@ -1,9 +1,9 @@
 set(CONTACT_COMPONENTS_QMLS
     ContactList.js
+    ContactAvatar.qml
     ContactDelegate.qml
     ContactDetailOnlineAccountTypeModel.qml
     ContactDetailPhoneNumberTypeModel.qml
-    ContactDetailPickerDelegate.qml
     ContactDetailPickerPhoneNumberDelegate.qml
     ContactFetch.qml
     ContactListView.qml
@@ -11,6 +11,8 @@
     ContactSearchListView.qml
     ContactSimpleListView.qml
     DialogButtons.qml
+    FastScroll.qml
+    FastScroll.js
     MultipleSelectionListView.qml
     MultipleSelectionVisualModel.qml
     qmldir

=== added file 'src/imports/Ubuntu/Contacts/ContactAvatar.qml'
--- src/imports/Ubuntu/Contacts/ContactAvatar.qml	1970-01-01 00:00:00 +0000
+++ src/imports/Ubuntu/Contacts/ContactAvatar.qml	2014-06-06 15:49:21 +0000
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2014 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.2
+import QtContacts 5.0
+import Ubuntu.Components 0.1
+import "Contacts.js" as ContactsJS
+
+UbuntuShape {
+    id: avatar
+
+    property var contactElement: null
+    property string displayName: ContactsJS.formatToDisplay(contactElement, ContactDetail.Name, [Name.FirstName, Name.LastName])
+    readonly property string avatarUrl: ContactsJS.getAvatar(contactElement, "")
+
+    radius: "medium"
+    color: Theme.palette.normal.overlay
+
+    Label {
+         anchors.centerIn: parent
+         text: ContactsJS.getNameItials(displayName)
+         font.pointSize: 88
+         color: UbuntuColors.lightAubergine
+         visible: avatarUrl === ""
+    }
+
+    image: Image {
+        fillMode: Image.PreserveAspectCrop
+        asynchronous: true
+        source: avatarUrl
+        visible: source !== ""
+    }
+}

=== added file 'src/imports/Ubuntu/Contacts/ContactDelegate.qml'
--- src/imports/Ubuntu/Contacts/ContactDelegate.qml	1970-01-01 00:00:00 +0000
+++ src/imports/Ubuntu/Contacts/ContactDelegate.qml	2014-06-06 15:49:21 +0000
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2012-2013 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.2
+import QtContacts 5.0
+import Ubuntu.Components 0.1
+import Ubuntu.Components.ListItems 0.1 as ListItem
+import "Contacts.js" as ContactsJS
+
+Item {
+    id: root
+
+    property bool showAvatar: true
+    property bool selected: false
+    property string defaultAvatarUrl: ""
+    property int titleDetail: ContactDetail.Name
+    property variant titleFields: [ Name.FirstName, Name.LastName ]
+    property bool detailsShown: false
+    property int loaderOpacity: 0.0
+
+    signal clicked(int index, QtObject contact)
+    signal pressAndHold(int index, QtObject contact)
+    signal detailClicked(QtObject contact, QtObject detail, string action)
+    signal infoRequested(int index, QtObject contact)
+
+    function _onDetailClicked(detail, action)
+    {
+        detailClicked(contact, detail, action)
+    }
+
+    // ListItemWithActions
+    //onItemClicked: root.clicked(index, contact)
+    //onItemPressAndHold: root.pressAndHold(index, contact)
+
+    height: delegate.height
+    implicitHeight: delegate.height + (pickerLoader.item ? pickerLoader.item.height : 0)
+    width: parent ? parent.width : 0
+
+    Item {
+        id: delegate
+
+        height: units.gu(8)
+        anchors {
+            left: parent.left
+            right: parent.right
+        }
+
+        Rectangle {
+            id: selectionMark
+
+            anchors.fill: parent
+            color: root.selected ? "black" : Theme.palette.selected.background
+            opacity: root.selected ? 0.2 : 1.0
+            visible: root.selected || root.detailsShown
+        }
+
+        MouseArea {
+            anchors.fill: parent
+            onClicked: root.clicked(index, contact)
+            onPressAndHold: root.pressAndHold(index, contact)
+        }
+
+        ContactAvatar {
+            id: avatar
+
+            contactElement: contact
+            displayName: name.text
+            anchors {
+                left: parent.left
+                top: parent.top
+                bottom: parent.bottom
+                margins: units.gu(1)
+            }
+            width: root.showAvatar ? height : 0
+            visible: width > 0
+        }
+
+        Label {
+            id: name
+
+            anchors {
+                left: avatar.right
+                leftMargin: units.gu(2)
+                verticalCenter: parent.verticalCenter
+                right: infoIcon.left
+            }
+            font.pointSize: 88
+            color: UbuntuColors.lightAubergine
+            text: ContactsJS.formatToDisplay(contact, root.titleDetail, root.titleFields)
+            elide: Text.ElideRight
+        }
+
+        Icon {
+            id: infoIcon
+
+
+            anchors {
+                right: parent.right
+                rightMargin: units.gu(2)
+                verticalCenter: parent.verticalCenter
+            }
+            name: "contact"
+            height: units.gu(3)
+            width: opacity > 0.0 ? height : 0
+            opacity: root.detailsShown ? 1.0 : 0.0
+            Behavior on opacity {
+                UbuntuNumberAnimation { }
+            }
+
+            MouseArea {
+               anchors.fill: parent
+               onClicked: root.infoRequested(index, contact)
+            }
+        }
+
+    }
+
+    Loader {
+        id: pickerLoader
+
+        source: {
+            switch(root.detailToPick) {
+            case ContactDetail.PhoneNumber:
+            default:
+                return Qt.resolvedUrl("ContactDetailPickerPhoneNumberDelegate.qml")
+            }
+        }
+        active: root.detailsShown
+        asynchronous: true
+        anchors {
+            top: delegate.bottom
+            left: parent.left
+            right: parent.right
+        }
+
+        opacity: root.loaderOpacity
+        Behavior on opacity {
+            UbuntuNumberAnimation { }
+        }
+
+        onStatusChanged: {
+            if (status == Loader.Ready) {
+                pickerLoader.item.contactsModel = listModel
+                pickerLoader.item.contactId = contact.contactId
+                pickerLoader.item.detailClicked.connect(root._onDetailClicked)
+            }
+        }
+    }
+}

=== removed file 'src/imports/Ubuntu/Contacts/ContactDelegate.qml'
--- src/imports/Ubuntu/Contacts/ContactDelegate.qml	2014-05-06 13:18:07 +0000
+++ src/imports/Ubuntu/Contacts/ContactDelegate.qml	1970-01-01 00:00:00 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2012-2013 Canonical, Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-import QtQuick 2.2
-import QtContacts 5.0
-import Ubuntu.Components 0.1
-import Ubuntu.Components.ListItems 0.1 as ListItem
-import "Contacts.js" as ContactsJS
-
-Item {
-   id: item
-
-   property int index: -1
-   property bool showAvatar: true
-   property alias selected: delegate.selected
-   property alias removable: delegate.removable
-   property bool selectMode: false
-   property string defaultAvatarUrl: ""
-   property int titleDetail: ContactDetail.Name
-   property variant titleFields: [ Name.FirstName, Name.LastName ]
-   property bool detailsShown: false
-
-   signal contactClicked(var index, var contact)
-   signal pressAndHold(var index, var contact)
-
-   implicitHeight: delegate.height + (item.detailsShown ? pickerLoader.item.height : 0)
-   width: parent ? parent.width : 0
-   clip: true
-
-    ListItem.Empty {
-        id: delegate
-
-        height: units.gu(6)
-        showDivider: false
-        confirmRemoval: removable
-        UbuntuShape {
-            id: avatar
-
-            height: units.gu(4)
-            width: item.showAvatar ? units.gu(4) : 0
-            visible: width > 0
-            radius: "medium"
-            anchors {
-                left: parent.left
-                leftMargin: units.gu(2)
-                verticalCenter: parent.verticalCenter
-            }
-            image: Image {
-                property bool isDefaultAvatar: (source == item.defaultAvatarUrl)
-                fillMode: Image.PreserveAspectCrop
-                asynchronous: true
-                source: ContactsJS.getAvatar(contact, item.defaultAvatarUrl)
-                sourceSize.width: isDefaultAvatar ? undefined : width * 1.5
-                sourceSize.height: isDefaultAvatar ? undefined : height * 1.5
-            }
-        }
-
-        Label {
-            id: name
-
-            anchors {
-                left: avatar.right
-                leftMargin: units.gu(2)
-                verticalCenter: parent.verticalCenter
-                right: selectionMark.left
-            }
-
-            height: paintedHeight
-            text: ContactsJS.formatToDisplay(contact, item.titleDetail, item.titleFields)
-            fontSize: "medium"
-        }
-
-        Rectangle {
-            id: selectionMark
-            objectName: "selectionMark"
-
-            anchors {
-                top: parent.top
-                bottom: parent.bottom
-                right: parent.right
-            }
-
-            color: "black"
-            width: item.selectMode ? units.gu(5) : 0
-            visible: width > 0
-
-            Behavior on width {
-                UbuntuNumberAnimation { }
-            }
-
-            Image {
-                id: tickImage
-
-                height: units.gu(3)
-                width: height
-                anchors.centerIn: parent
-                source: Qt.resolvedUrl("./artwork/tick-dark.png")
-                opacity: item.selected ? 1.0 : 0.2
-            }
-        }
-
-        onClicked: item.contactClicked(index, contact)
-        onPressAndHold: item.pressAndHold(index, contact)
-
-        onItemRemoved: {
-            listModel.removeContact(contact.contactId)
-        }
-    }
-
-    Loader {
-        id: pickerLoader
-
-        source: item.detailsShown ? Qt.resolvedUrl("ContactDetailPickerDelegate.qml") : ""
-        anchors {
-            top: delegate.bottom
-            left: parent.left
-            right: parent.right
-        }
-        onStatusChanged: {
-            if (status == Loader.Ready) {
-                pickerLoader.item.contactsModel = listModel
-                pickerLoader.item.detailType = detailToPick
-                pickerLoader.item.contactId = contact.contactId
-            }
-        }
-    }
-
-    ListItem.ThinDivider {
-        anchors {
-            bottom: parent.bottom
-            right: parent.right
-            left: parent.left
-        }
-    }
-
-    Connections {
-        target: pickerLoader.item
-        onDetailClicked: detailClicked(contact, detail)
-    }
-}

=== removed file 'src/imports/Ubuntu/Contacts/ContactDetailPickerDelegate.qml'
--- src/imports/Ubuntu/Contacts/ContactDetailPickerDelegate.qml	2014-05-06 13:18:07 +0000
+++ src/imports/Ubuntu/Contacts/ContactDetailPickerDelegate.qml	1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2012-2013 Canonical, Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-import QtQuick 2.2
-import QtContacts 5.0
-
-Item {
-    id: detailPickerDelegate
-
-    property string contactId
-    property QtObject contact: null
-    property int currentOperation: -1
-    property int detailType: 0
-    property QtObject contactsModel
-
-    signal detailClicked(QtObject contact, QtObject detail)
-
-    width: parent ? parent.width : 0
-    height: (delegateLoaderPicker.status === Loader.Ready) && delegateLoaderPicker.item ? delegateLoaderPicker.item.height : 0
-
-    onContactIdChanged: {
-        currentOperation = contactsModel.fetchContacts(contactId)
-    }
-
-    Loader {
-        id: delegateLoaderPicker
-        anchors.left: parent.left
-        anchors.right: parent.right
-    }
-
-    Connections {
-        target: contactsModel
-        onContactsFetched: {
-            if (currentOperation == requestId) {
-                detailPickerDelegate.contact = fetchedContacts[0]
-                // TODO: add more types and delegates
-                switch(detailType) {
-                case ContactDetail.PhoneNumber:
-                    delegateLoaderPicker.source = Qt.resolvedUrl("ContactDetailPickerPhoneNumberDelegate.qml")
-                    break
-                default:
-                }
-                delegateLoaderPicker.item.contact = contact
-            }
-        }
-    }
-
-    Connections {
-        target: delegateLoaderPicker.item
-        onDetailClicked: detailClicked(contact, detail)
-    }
-}

=== modified file 'src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml'
--- src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml	2014-05-28 19:56:00 +0000
+++ src/imports/Ubuntu/Contacts/ContactDetailPickerPhoneNumberDelegate.qml	2014-06-06 15:49:21 +0000
@@ -19,119 +19,113 @@
 import Ubuntu.Components 0.1
 
 Item {
-    property QtObject contact: null
-
-    signal detailClicked(QtObject detail)
-
-    ContactDetailPhoneNumberTypeModel {
-        id: phoneTypeModel
+    id: root
+
+    property string contactId
+    property alias contactsModel: contactFetch.model
+    property alias contact: contactFetch.contact
+
+    signal detailClicked(QtObject detail, string action)
+
+    function containsPointer(item, point)
+    {
+        return ((point.x >= item.x) && (point.x <= item.x + item.width) &&
+                (point.y >= item.y) && (point.y <= item.y + item.height));
     }
 
-    height: details.height + units.gu(2)
+    height: detailItems.height + units.gu(2)
     anchors {
         left: parent.left
         right: parent.right
     }
 
-    UbuntuShape {
-        id: details
-        height: childrenRect.height
-        color: Qt.rgba(0,0,0,0.1)
+    onContactIdChanged: contactFetch.fetchContact(contactId)
+
+    Column {
+        id: detailItems
+
         anchors {
             top: parent.top
-            //topMargin: units.gu(2)
             left: parent.left
-            leftMargin: units.gu(2)
             right: parent.right
-            rightMargin: units.gu(2)
-        }
-
-        Column {
-            id: detailItems
-            anchors.top: parent.top
-            height: childrenRect.height
-            width: parent.width
-
-            Repeater {
-                id: phoneNumberEntries
-                model: contact ? contact.phoneNumbers : undefined
-                ListItem.Empty {
-                    showDivider: false
-                    Column {
+        }
+        height: childrenRect.height
+        width: parent.width
+
+        ListItem.Standard {
+            showDivider: false
+            text: "No phone numbers."
+            visible: phoneNumberEntries.count == 0
+        }
+
+        Repeater {
+            id: phoneNumberEntries
+
+            model: contact ? contact.phoneNumbers : undefined
+            ListItem.Subtitled {
+                anchors {
+                    left: parent.left
+                    leftMargin: units.gu(7)
+                    right: parent.right
+                }
+                showDivider: false
+                // TODO: change text font color to UbuntuColors.lightAubergine
+                // see bug #1324128
+                text: number
+                subText: phoneTypeModel.get(phoneTypeModel.getTypeIndex(modelData)).label
+                onClicked: root.detailClicked(modelData, "")
+
+                Row {
+                    id: icons
+
+                    anchors {
+                        top: parent.top
+                        right: parent.right
+                        bottom: parent.bottom
+                    }
+
+                    width: childrenRect.width
+                    spacing: units.gu(2)
+
+                    Icon {
+                        id: messageIcon
+
+                        name: "messages"
+                        height: units.gu(3)
+                        width: height
                         anchors.verticalCenter: parent.verticalCenter
-                        anchors.left: parent.left
-                        anchors.right: parent.right
-                        anchors.leftMargin: units.gu(2)
-                        anchors.rightMargin: units.gu(2)
-                        Label {
-                            id: context
-                            text: phoneTypeModel.get(phoneTypeModel.getTypeIndex(modelData)).label
-                            fontSize: "small"
-                            opacity: 0.2
-                        }
-                        Label {
-                            text: number
-                            fontSize: "medium"
-                        }
                     }
+                    Icon {
+                        id: callIcon
 
-                    onClicked: detailClicked(modelData)
-                    Icon {
-                        height: units.gu(2)
-                        width: units.gu(2)
                         name: "call-start"
-                        color: "white"
-                        rotation: 90
-                        anchors {
-                            right: parent.right
-                            rightMargin: units.gu(2)
-                            verticalCenter: parent.verticalCenter
-                        }
-                    }
-                    ListItem.ThinDivider {
-                        visible: index != 0
-                        anchors {
-                            bottom: parent.top
-                            right: parent.right
-                            left: parent.left
-                        }
-                    }
-                }
-            }
-            ListItem.Empty {
-                showDivider: false
-                height: units.gu(5)
-                Column {
-                    anchors.verticalCenter: parent.verticalCenter
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    anchors.leftMargin: units.gu(2)
-                    anchors.rightMargin: units.gu(2)
-                    Label {
-                        text: i18n.dtr("address-book-app", "View contact's profile")
-                        fontSize: "medium"
-                    }
-                }
-                onClicked: Qt.openUrlExternally("addressbook:///contact?id=" + encodeURIComponent(contact.contactId))
-                Icon {
-                    height: units.gu(2)
-                    width: units.gu(2)
-                    name: "contact"
-                    anchors {
-                        right: parent.right
-                        rightMargin: units.gu(2)
-                        verticalCenter: parent.verticalCenter
-                    }
-                }
-                ListItem.ThinDivider {
-                    visible: phoneNumberEntries.count !== 0
-                    anchors {
-                        bottom: parent.top
-                        right: parent.right
-                        left: parent.left
+                        height: units.gu(3)
+                        width: height
+                        anchors.verticalCenter: parent.verticalCenter
+                    }
+                }
+                // WORKAROUND: SDK ListItem.Subtitled does not provide the mouse arg on onClicked event
+                // without that we can not check where the user clicked
+                MouseArea {
+                    anchors.fill: icons
+                    z: 100
+                    onClicked: {
+                        var point = Qt.point(mouse.x, mouse.y)
+                        if (root.containsPointer(messageIcon, point))
+                            root.detailClicked(modelData, "message")
+                        if (root.containsPointer(callIcon, point))
+                            root.detailClicked(modelData, "call")
                     }
                 }
             }
         }
     }
+
+    ContactDetailPhoneNumberTypeModel {
+        id: phoneTypeModel
+    }
+
+    ContactFetch {
+        id: contactFetch
+    }
 }

=== modified file 'src/imports/Ubuntu/Contacts/ContactFetch.qml'
--- src/imports/Ubuntu/Contacts/ContactFetch.qml	2014-05-06 13:18:07 +0000
+++ src/imports/Ubuntu/Contacts/ContactFetch.qml	2014-06-06 15:49:21 +0000
@@ -74,6 +74,7 @@
         property QtObject contact: null
         property string contactId: contact ? contact.contactId : ""
 
+        ignoreUnknownSignals: true
         onContactsFetched: {
             // currentQueryId == -2 is used during a fetch using "memory" manager
             if ((currentQueryId == -2) || (requestId == currentQueryId)) {

=== modified file 'src/imports/Ubuntu/Contacts/ContactListView.qml'
--- src/imports/Ubuntu/Contacts/ContactListView.qml	2014-06-06 15:49:21 +0000
+++ src/imports/Ubuntu/Contacts/ContactListView.qml	2014-06-06 15:49:21 +0000
@@ -38,18 +38,89 @@
         }
     \endqml
 */
-ContactSimpleListView {
+Item {
     id: root
 
-    property bool showFavourites: false
-
-    header: Rectangle {
+    property alias view: view
+    property alias count: view.count
+
+    property alias showFavourites: view.showFavourites
+    property alias showAvatar: view.showAvatar
+    property alias titleDetail: view.titleDetail
+    property alias titleFields: view.titleFields
+    property alias sortOrders: view.sortOrders
+    property alias fetchHint: view.fetchHint
+    property alias filter: view.filter
+    property alias multiSelectionEnabled: view.multiSelectionEnabled
+    property alias defaultAvatarImageUrl: view.defaultAvatarImageUrl
+    readonly property alias loading: view.loading
+    property alias detailToPick: view.detailToPick
+    property alias currentContactExpanded: view.currentContactExpanded
+    property alias showSections: view.showSections
+    property alias manager: view.manager
+    property alias fastScrolling: fastScroll.fastScrolling
+    property alias leftSideAction: view.leftSideAction
+    property alias rightSideActions: view.rightSideActions
+
+    readonly property alias selectedItems: view.selectedItems
+    property alias multipleSelection: view.multipleSelection
+    property alias listModel: view.listModel
+    property alias listDelegate: view.listDelegate
+    readonly property alias isInSelectionMode: view.isInSelectionMode
+
+    signal selectionDone(var items)
+    signal selectionCanceled()
+    signal error(string message)
+    signal infoRequested(QtObject contact)
+    signal detailClicked(QtObject contact, QtObject detail, string action)
+    signal contactDisappeared(QtObject contact)
+
+    function startSelection()
+    {
+        view.startSelection()
+    }
+
+    function isSelected(item)
+    {
+        return view.isSelected(item)
+    }
+    function selectItem(item)
+    {
+        return view.selectItem(item)
+    }
+    function deselectItem(item)
+    {
+        return view.deselectItem(item)
+    }
+    function endSelection()
+    {
+        view.endSelection()
+    }
+    function cancelSelection()
+    {
+        view.cancelSelection()
+    }
+    function clearSelection()
+    {
+        view.clearSelection()
+    }
+    function selectAll()
+    {
+        view.selectAll()
+    }
+    function returnToBounds()
+    {
+        view.returnToBounds()
+    }
+
+    Rectangle {
         id: itemHeader
 
-        height: units.gu(4)
+        height: units.gu(2)
         anchors {
             left: parent.left
             right: parent.right
+            top: parent.top
         }
         color: Theme.palette.normal.overlay
 
@@ -109,67 +180,113 @@
         }
     }
 
-    DetailFilter {
-        id: favouritesFilter
-
-        detail: ContactDetail.Favorite
-        field: Favorite.Favorite
-        value: true
-        matchFlags: DetailFilter.MatchExactly
-    }
-
-    InvalidFilter {
-        id: invalidFilter
-    }
-
-    IntersectionFilter {
-        id: contactsFilter
-
-        filters: {
-            var filters = []
-            if (root.showFavourites) {
-                filters.push(favouritesFilter)
-            }
-            if (root.filter) {
-                filters.push(root.filter)
-            }
-            return filters
-        }
-    }
-
-    ContactModel {
-        id: contactsModel
-
-        property bool _clearModel: false
-
-        manager: root.manager
-        sortOrders: root.sortOrders
-        fetchHint: root.fetchHint
-        filter: {
-            if (contactsModel._clearModel) {
-                return invalidFilter
-            } else if (root.showFavourites || root.filter) {
-                return contactsFilter
-            } else {
-                return null
-            }
-        }
-        onErrorChanged: {
-            if (error) {
-                console.error("Contact List error:" + error)
-            }
-        }
-        onContactsChanged: {
-            //WORKAROUND: clear the model before start populate it with the new contacts
-            //otherwise the model will wait for all contacts before show any new contact
-
-            //after all contacts get removed we can populate the model again, this will show
-            //new contacts as soon as it arrives in the model
-            if (contactsModel._clearModel && contacts.length === 0) {
-                contactsModel._clearModel = false
-            }
-        }
-    }
-
-    listModel: contactsModel
+    ContactSimpleListView {
+        id: view
+
+        property bool showFavourites: false
+
+        function getSectionText(index) {
+            var tag = listModel.contacts[index].tag.tag
+            if (tag == "")
+                return "#"
+            else
+                return tag
+        }
+
+        anchors {
+            top: itemHeader.bottom
+            left: parent.left
+            right: parent.right
+            rightMargin: fastScroll.showing ? fastScroll.width - units.gu(1) : 0
+            bottom: parent.bottom
+
+            Behavior on rightMargin {
+                UbuntuNumberAnimation {}
+            }
+        }
+        onError: root.error(message)
+        onInfoRequested: root.infoRequested(contact)
+        onDetailClicked: root.detailClicked(contact, detail, action)
+        onSelectionDone: root.selectionDone(items)
+        onSelectionCanceled: root.selectionCanceled()
+        onContactDisappeared: root.contactDisappeared(contact)
+        clip: true
+
+        DetailFilter {
+            id: favouritesFilter
+
+            detail: ContactDetail.Favorite
+            field: Favorite.Favorite
+            value: true
+            matchFlags: DetailFilter.MatchExactly
+        }
+
+        //FIXME: enable it back when this get merged (https://codereview.qt-project.org/85112)
+        InvalidFilter {
+            id: invalidFilter
+        }
+
+        IntersectionFilter {
+            id: contactsFilter
+
+            filters: {
+                var filters = []
+                if (root.showFavourites) {
+                    filters.push(favouritesFilter)
+                }
+                if (root.filter) {
+                    filters.push(root.filter)
+                }
+                return filters
+            }
+        }
+
+        listModel: ContactModel {
+            id: contactsModel
+
+            property bool _clearModel: false
+
+            manager: root.manager
+            sortOrders: root.sortOrders
+            fetchHint: root.fetchHint
+            filter: {
+                if (contactsModel._clearModel) {
+                    return invalidFilter
+                } else if (root.showFavourites || root.filter) {
+                    return contactsFilter
+                } else {
+                    return null
+                }
+            }
+            onErrorChanged: {
+                if (error) {
+                    console.error("Contact List error:" + error)
+                }
+            }
+            onContactsChanged: {
+                //WORKAROUND: clear the model before start populate it with the new contacts
+                //otherwise the model will wait for all contacts before show any new contact
+
+                //after all contacts get removed we can populate the model again, this will show
+                //new contacts as soon as it arrives in the model
+                if (contactsModel._clearModel && contacts.length === 0) {
+                    contactsModel._clearModel = false
+                }
+            }
+        }
+    }
+    FastScroll {
+        id: fastScroll
+
+        listView: view
+        // only enable FastScroll if the we have more than 2 pages of content
+        enabled: view.contentHeight > (view.height * 2)
+
+        anchors {
+            top: itemHeader.bottom
+            topMargin: units.gu(0.5)
+            bottom: parent.bottom
+            right: parent.right
+        }
+    }
 }

=== modified file 'src/imports/Ubuntu/Contacts/ContactSimpleListView.qml'
--- src/imports/Ubuntu/Contacts/ContactSimpleListView.qml	2014-06-06 15:49:21 +0000
+++ src/imports/Ubuntu/Contacts/ContactSimpleListView.qml	2014-06-06 15:49:21 +0000
@@ -52,20 +52,7 @@
       By default this is set to true.
     */
     property bool showAvatar: true
-    /*!
-      \qmlproperty bool swipeToDelete
-
-      This property holds if the swipe to delete contact gesture is enabled or not
-      By default this is set to false.
-    */
-    property bool swipeToDelete: false
-    /*!
-      \qmlproperty bool expanded
-
-      This property holds if the list is expaned or not
-      By default this is set to true.
-    */
-    property bool expanded: true
+
     /*!
       \qmlproperty int titleDetail
 
@@ -162,13 +149,6 @@
     property int currentContactExpanded: -1
 
     /*!
-      \qmlproperty bool animating
-
-      This property holds if the list is on animating state (expanding/collapsing)
-    */
-    readonly property alias animating: priv.animating
-
-    /*!
       \qmlproperty bool showSections
 
       This property holds if the listview will show or not the section headers
@@ -185,18 +165,35 @@
     property string manager: (typeof(QTCONTACTS_MANAGER_OVERRIDE) !== "undefined") && (QTCONTACTS_MANAGER_OVERRIDE != "") ? QTCONTACTS_MANAGER_OVERRIDE : "galera"
 
     /*!
+      \qmlproperty Action leftSideAction
+
+      This property holds the available actions when swipe the contact item from left to right
+    */
+    property Action leftSideAction
+
+    /*!
+      \qmlproperty list<Action> rightSideActions
+
+      This property holds the available actions when swipe the contact item from right to left
+    */
+    property list<Action> rightSideActions
+
+    /*!
       This handler is called when any error occurs in the contact model
     */
     signal error(string message)
     /*!
-      This handler is called when any contact int the list receives a click.
-    */
-    signal contactClicked(QtObject contact)
-    /*!
       This handler is called when any contact detail in the list receives a click
     */
-    signal detailClicked(QtObject contact, QtObject detail)
-
+    signal detailClicked(QtObject contact, QtObject detail, string action)
+    /*!
+      This handler is called when details button on contact delegate is clicked
+    */
+    signal infoRequested(QtObject contact)
+    /*!
+      This handler is called when the contact delegate disapear (height === 0) caused by the function call makeDisappear
+    */
+    signal contactDisappeared(QtObject contact)
     /*!
       Retrieve the contact index inside of the list based on contact id or contact name if the id is empty
     */
@@ -235,14 +232,7 @@
     */
     function positionViewAtContact(contact)
     {
-        if (expanded) {
-            positionViewAtIndex(getIndex(contact), ListView.Center)
-        } else {
-            priv.pendingTargetIndex = getIndex(contact)
-            priv.pendingTargetMode = ListView.Center
-            expanded = true
-            dirtyHeightTimer.restart()
-        }
+        positionViewAtIndex(getIndex(contact), ListView.Center)
     }
 
     /*!
@@ -255,30 +245,30 @@
         contactFetch.fetchContact(contact.contactId)
     }
 
-    clip: true
     snapMode: ListView.SnapToItem
     section {
         property: showSections ? "contact.tag.tag" : ""
         criteria: ViewSection.FirstCharacter
-        labelPositioning: ViewSection.InlineLabels | ViewSection.CurrentLabelAtStart
-        delegate: ListItem.Header {
-            id: listHeader
-            text: section != "" ? section : "#"
-            height: units.gu(4)
-
-            Rectangle {
-                z: -1
-                anchors.fill: parent
-                color: Theme.palette.normal.background
-            }
-
-            MouseArea {
-                anchors.fill: parent
-                onClicked: {
-                    if (!priv.animating) {
-                        priv.activeSection = listHeader.text
-                        contactListView.expanded = !contactListView.expanded
-                    }
+        labelPositioning: ViewSection.InlineLabels
+        delegate: Rectangle {
+            color: Theme.palette.normal.background
+            anchors {
+                left: parent.left
+                right: parent.right
+                margins: units.gu(1)
+            }
+            height: units.gu(3)
+            Label {
+                anchors.fill: parent
+                verticalAlignment: Text.AlignVCenter
+                text: section != "" ? section : "#"
+                font.pointSize: 76
+            }
+            ListItem.ThinDivider {
+                anchors {
+                    left: parent.left
+                    right: parent.right
+                    bottom: parent.bottom
                 }
             }
         }
@@ -289,203 +279,113 @@
         dirtyModel.restart()
     }
 
-    listDelegate: Loader {
-        id: loaderDelegate
-
-        property bool loaded: false
-        property var contact: model.contact
-        property int _index: index
-        property int delegateHeight: item ? item.implicitHeight : 0
-        property int targetHeight: ((currentContactExpanded == index) && detailToPick != 0) ?  delegateHeight : units.gu(6)
-        property bool detailsShown: false
-
-        source: Qt.resolvedUrl("ContactDelegate.qml")
-        active: true
+    listDelegate: ContactDelegate {
+        id: contactDelegate
+
+        // overwrite
+        function disappeared()
+        {
+            contactListView.contactDisappeared(contact)
+        }
+
         width: parent.width
-        visible: loaderDelegate.status == Loader.Ready
-        state: contactListView.expanded ? "" : "collapsed"
+        selected: contactListView.multiSelectionEnabled && contactListView.isSelected(contactDelegate)
+        defaultAvatarUrl: contactListView.defaultAvatarImageUrl
+        titleDetail: contactListView.titleDetail
+        titleFields: contactListView.titleFields
+
+        // ListItemWithActions
+        //locked: contactListView.isInSelectionMode || detailsShown
+        //triggerActionOnMouseRelease: true
+        //leftSideAction: contactListView.leftSideAction
+        //rightSideActions: contactListView.rightSideActions
+
+        onDetailClicked: contactListView.detailClicked(contact, detail, action)
+        onInfoRequested: contactListView._fetchContact(index, contact)
 
         Behavior on height {
-            enabled: currentContactExpanded == index || detailsShown
-            UbuntuNumberAnimation {}
-        }
-
-        Connections {
-            target: contactListView
-            onCurrentContactExpandedChanged: {
-                if (index != currentContactExpanded) {
-                    loaderDelegate.detailsShown = false
-                }
-            }
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "index"
-            value: loaderDelegate._index
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "selected"
-            value: contactListView.multiSelectionEnabled &&
-                   contactListView.isSelected &&
-                   contactListView.isSelected(loaderDelegate)
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "removable"
-            value: contactListView &&
-                   contactListView.swipeToDelete &&
-                   !detailsShown &&
-                   !contactListView.isInSelectionMode
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "defaultAvatarUrl"
-            value: contactListView.defaultAvatarImageUrl
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "detailsShown"
-            value: loaderDelegate.detailsShown
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "selectMode"
-            value: contactListView.isInSelectionMode
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "titleDetail"
-            value: contactListView.titleDetail
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        Binding {
-            target: loaderDelegate.item
-            property: "titleFields"
-            value: contactListView.titleFields
-            when: (loaderDelegate.status == Loader.Ready)
-        }
-
-        // this will avoid the binding to be broken during the PropertyAction
-        Binding {
-            target: loaderDelegate
-            property: "height"
-            value: targetHeight
-            when: loaderDelegate.state == ""
-        }
-
-        Connections {
-            target: loaderDelegate.item
-            onContactClicked: {
-                if (contactListView.isInSelectionMode) {
-                    if (!contactListView.selectItem(loaderDelegate)) {
-                        contactListView.deselectItem(loaderDelegate)
-                    }
-                    return
-                }
-                if (contactListView.currentContactExpanded == index) {
-                    contactListView.currentContactExpanded = -1
-                    loaderDelegate.detailsShown = false
-                    return
-                // check if we should expand and display the details picker
-                } else if (detailToPick !== 0) {
-                    contactListView.currentContactExpanded = index
-                    loaderDelegate.detailsShown = !detailsShown
-                    return
-                }
-
-                contactListView._fetchContact(index, contact)
-            }
-            onPressAndHold: {
-                if (contactListView.multiSelectionEnabled) {
-                    contactListView.startSelection()
-                    contactListView.selectItem(loaderDelegate)
-                }
-            }
-        }
-
-        Timer {
-            id: dirtyItem
-
-            interval: 100
-            running: false
-            repeat: false
-            onTriggered: loaderDelegate.active = (state == "")
-        }
-
+            id: behaviorOnHeight
+
+            enabled: false
+            UbuntuNumberAnimation { }
+        }
+
+        onClicked: {
+            if (contactListView.isInSelectionMode) {
+                if (!contactListView.selectItem(contactDelegate)) {
+                    contactListView.deselectItem(contactDelegate)
+                }
+                return
+            }
+            if (contactListView.currentContactExpanded === index) {
+                contactListView.currentContactExpanded = -1
+                return
+            // check if we should expand and display the details picker
+            } else if (detailToPick !== 0) {
+                contactListView.currentContactExpanded = index
+                return
+            }
+        }
+
+        onPressAndHold: {
+            if (contactListView.multiSelectionEnabled) {
+                contactListView.currentContactExpanded = -1
+                contactListView.startSelection()
+                contactListView.selectItem(contactDelegate)
+            }
+        }
+
+        state: (index === contactListView.currentContactExpanded) ? "expanded" : ""
         states: [
             State {
-                name: "collapsed"
+                name: "expanded"
                 PropertyChanges {
-                    target: loaderDelegate
-                    height: 0
-                    restoreEntryValues: false
+                    target: contactDelegate
+                    clip: true
+                    height: contactDelegate.implicitHeight
+                    loaderOpacity: 1.0
+                    // FIXME: Setting detailsShown to true on expanded state cause the property to change to false and true during the state transition, and that
+                    // causes the loader to load twice
+                    //detailsShown: true
                 }
                 PropertyChanges {
-                    target: loaderDelegate
-                    active: false
-                    restoreEntryValues: false
+                    target: behaviorOnHeight
+                    enabled: true
                 }
             }
         ]
-
-        // control the property change order
         transitions: [
             Transition {
-                to: "collapsed"
-                onRunningChanged: priv.animating = running
-            },
-
-            Transition {
+                from: "expanded"
                 to: ""
-                onRunningChanged: priv.animating = running
                 SequentialAnimation {
-                    // expand the item
-                    PropertyAction {
-                        target: loaderDelegate
-                        property: "height"
-                        value: targetHeight
-                    }
-                    // give some time to listview to destroy the cache and load the delegate on the remaning items
-                    ScriptAction {
-                        // wait for list get fully expanded and cached delegates updated
-                        script: dirtyItem.restart()
-                    }
-                }
-
+                    UbuntuNumberAnimation {
+                        target: contactDelegate
+                        properties: "height, loaderOpacity"
+                    }
+                    PropertyAction {
+                        target: contactDelegate
+                        property: "clip"
+                    }
+                    PropertyAction {
+                        target: contactDelegate
+                        property: "detailsShown"
+                        value: false
+                    }
+                }
+            },
+            Transition {
+                from: ""
+                to: "expanded"
+                PropertyAction {
+                    target: contactDelegate
+                    property: "detailsShown"
+                    value: true
+                }
             }
         ]
     }
 
-    onContentHeightChanged: {
-        if (priv.activeSection !== "") {
-            dirtyHeightTimer.restart()
-        }
-    }
-
-    Timer {
-        id: dirtyHeightTimer
-
-        interval: 1
-        running: false
-        repeat: false
-        onTriggered: priv.scrollList()
-    }
-
     ContactFetch {
         id: contactFetch
 
@@ -499,10 +399,7 @@
         }
 
         model: root.manager == "memory" ? root.listModel : contactFetchModel
-        onContactFetched: {
-            console.debug("Contact fetched")
-            contactListView.contactClicked(contact)
-        }
+        onContactFetched: contactListView.infoRequested(contact)
     }
 
     // This is a workaround to make sure the spinner will disappear if the model is empty
@@ -542,24 +439,8 @@
         id: priv
 
         property int currentOperation: -1
-        property string activeSection: ""
-        property bool animating: false
-
         property int pendingTargetIndex: 0
         property variant pendingTargetMode: null
-
-        function scrollList() {
-            if (activeSection) {
-                var targetSection = activeSection
-                activeSection = ""
-                var index = Sections.getIndexFor(targetSection)
-                contactListView.positionViewAtIndex(index, ListView.Beginning)
-            } else if (priv.pendingTargetIndex != -1) {
-                contactListView.positionViewAtIndex(priv.pendingTargetIndex, priv.pendingTargetMode)
-                priv.pendingTargetIndex = -1
-                priv.pendingTargetMode = null
-            }
-        }
     }
 
     Connections {

=== modified file 'src/imports/Ubuntu/Contacts/Contacts.js'
--- src/imports/Ubuntu/Contacts/Contacts.js	2013-10-09 00:15:07 +0000
+++ src/imports/Ubuntu/Contacts/Contacts.js	2014-06-06 15:49:21 +0000
@@ -27,6 +27,19 @@
     return values
 }
 
+function getNameItials(name)
+{
+    var names = name.trim().split(' ')
+    var initials = ""
+    if (names.length > 0) {
+        initials = names[0].charAt(0)
+    }
+    if (names.length > 1) {
+        initials += names[1].charAt(0)
+    }
+    return initials.toUpperCase()
+}
+
 function getAvatar(contact, defaultValue)
 {
     // use this verbose mode to avoid problems with binding loops

=== added file 'src/imports/Ubuntu/Contacts/FastScroll.js'
--- src/imports/Ubuntu/Contacts/FastScroll.js	1970-01-01 00:00:00 +0000
+++ src/imports/Ubuntu/Contacts/FastScroll.js	2014-06-06 15:49:21 +0000
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2014 Canonical Ltda
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Components project.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// FastScroll.js - this is just SectionScroller.js with a fix for
+// section.criteria == ViewSection.FirstCharacter
+var sectionData = [];
+var _sections = [];
+
+function initialize(list) {
+    initSectionData(list);
+}
+
+function initSectionData(list) {
+    if (!list || !list.model) return;
+    sectionData = [];
+    _sections = [];
+    var current = "",
+        prop = list.section.property,
+        sectionText;
+
+    if (list.section.criteria === ViewSection.FullString) {
+        for (var i = 0, count = list.model.count; i < count; i++) {
+            sectionText = list.getSectionText(i)
+            if (sectionText !== current) {
+                current = sectionText;
+                _sections.push(current);
+                sectionData.push({ index: i, header: current });
+            }
+        }
+    } else if (list.section.criteria === ViewSection.FirstCharacter) {
+        for (var i = 0, count = list.model.count; i < count; i++) {
+            sectionText = list.getSectionText(i).substring(0, 1)
+            if (sectionText !== current) {
+                current = sectionText
+                _sections.push(sectionText);
+                sectionData.push({ index: i, header: current });
+            }
+        }
+    }
+}
+
+function getSectionPositionString(name) {
+    var val = _sections.indexOf(name);
+    return val === 0 ? "first" :
+           val === _sections.length - 1 ? "last" : false;
+}
+
+function getAt(pos) {
+    return _sections[pos] ? _sections[pos] : "";
+}
+
+function getRelativeSections(current) {
+    var val = _sections.indexOf(current),
+        sect = [],
+        sl = _sections.length;
+
+    val = val < 1 ? 1 : val >= sl-1 ? sl-2 : val;
+    sect = [getAt(val - 1), getAt(val), getAt(val + 1)];
+
+    return sect;
+}
+
+function getClosestSection(pos, down) {
+    var tmp = (_sections.length) * pos;
+    var val = Math.ceil(tmp) // TODO: better algorithm
+    val = val < 2 ? 1 : val;
+    return _sections[val-1];
+}
+
+function getNextSection(current) {
+    var val = _sections.indexOf(current);
+    return (val > -1 ? _sections[(val < _sections.length - 1 ? val + 1 : val)] : _sections[0]) || "";
+}
+
+function getPreviousSection(current) {
+    var val = _sections.indexOf(current);
+    return (val > -1 ? _sections[(val > 0 ? val - 1 : val)] : _sections[0]) || "";
+}
+
+function getIndexFor(sectionName) {
+    var data = sectionData[_sections.indexOf(sectionName)]
+    if (data) {
+        var val = data.index;
+        return val === 0 || val > 0 ? val : -1;
+    } else {
+        return -1
+    }
+}

=== added file 'src/imports/Ubuntu/Contacts/FastScroll.qml'
--- src/imports/Ubuntu/Contacts/FastScroll.qml	1970-01-01 00:00:00 +0000
+++ src/imports/Ubuntu/Contacts/FastScroll.qml	2014-06-06 15:49:21 +0000
@@ -0,0 +1,299 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2014 Canonical Ltda
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Components project.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// FastScroll.qml
+import QtQuick 2.2
+import Ubuntu.Components 1.1
+import "FastScroll.js" as Sections
+
+Item {
+    id: root
+
+    property ListView listView
+    property int pinSize: units.gu(2)
+
+    readonly property var letters: ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#"]
+    readonly property alias fastScrolling: internal.fastScrolling
+    readonly property bool showing: (rail.opacity !== 0.0)
+
+    width: units.gu(7)
+    onListViewChanged: {
+        if (listView && listView.model) {
+            internal.initDirtyObserver();
+        } else if (listView) {
+            listView.modelChanged.connect(function() {
+                if (listView.model) {
+                    internal.initDirtyObserver();
+                }
+            });
+        }
+    }
+
+    Rectangle {
+        id: magnified
+
+        color: Theme.palette.normal.overlay
+        radius: height * 0.3
+        height: pinSize * 2
+        width: height
+        opacity: internal.fastScrolling ? 1.0 : 0.0
+        x: -cursor.width - units.gu(3)
+        y: {
+            if (internal.currentItem) {
+                var itemCenterY = rail.y + internal.currentItem.y + (internal.currentItem.height / 2)
+                return (itemCenterY - (magnified.height / 2))
+            } else {
+                return 0
+            }
+        }
+
+        Label {
+            anchors.fill: parent
+            horizontalAlignment: Text.AlignHCenter
+            verticalAlignment: Text.AlignVCenter
+            text: internal.desireSection
+            fontSize: "small"
+        }
+
+        Behavior on opacity {
+            UbuntuNumberAnimation {}
+        }
+    }
+
+
+    Rectangle {
+        id: cursor
+
+        property bool showLabel: false
+        property string currentSectionName: ""
+
+        radius: pinSize * 0.3
+        height: pinSize
+        width: height
+        color: Theme.palette.normal.foreground
+        opacity: rail.opacity
+        x: rail.x
+        y: {
+            if (internal.currentItem) {
+                var itemCenterY = rail.y + internal.currentItem.y + (internal.currentItem.height / 2)
+                return (itemCenterY - (cursor.height / 2))
+            } else {
+                return 0
+            }
+        }
+        Behavior on y {
+            enabled: !internal.fastScrolling
+            UbuntuNumberAnimation { }
+        }
+    }
+
+    Column {
+        id: rail
+
+        property bool isVisible: root.enabled && (listView.moving || dragArea.pressed)
+
+        anchors {
+            right: parent.right
+            rightMargin: units.gu(2)
+            left: parent.left
+            leftMargin: units.gu(2)
+            top: parent.top
+        }
+        height: childrenRect.height
+        opacity: 0.0
+        onIsVisibleChanged: {
+            if (isVisible) {
+                rail.opacity = 1.0
+                hideTimer.stop()
+            } else {
+                hideTimer.restart()
+            }
+        }
+
+        Behavior on opacity {
+            UbuntuNumberAnimation { }
+        }
+
+        Repeater {
+            id: sectionsRepeater
+
+            model: root.letters
+            Label {
+                anchors.left: parent.left
+                height: pinSize
+                width: pinSize
+                verticalAlignment: Text.AlignVCenter
+                horizontalAlignment: Text.AlignHCenter
+                text: internal.fastScrolling && internal.targetSection == modelData ? "" : modelData
+                fontSize: "x-small"
+                color: internal.targetSection == text ? Theme.palette.selected.foregroundText : Theme.palette.selected.backgroundText
+            }
+        }
+
+        Timer {
+            id: hideTimer
+
+            running: false
+            interval: 2000
+            onTriggered: rail.opacity = 0.0
+        }
+    }
+
+    MouseArea {
+        id: dragArea
+
+        anchors {
+            left: parent.left
+            right: parent.right
+        }
+        y: rail.y
+        height: rail.height
+        visible: rail.opacity == 1.0
+
+        preventStealing: true
+        onPressed: {
+            internal.adjustContentPosition(mouseY)
+            dragginTimer.start()
+        }
+
+        onReleased: {
+            dragginTimer.stop()
+            internal.desireSection = ""
+            internal.fastScrolling = false
+        }
+
+        onPositionChanged: internal.adjustContentPosition(mouseY)
+
+        Timer {
+            id: dragginTimer
+
+            running: false
+            interval: 150
+            onTriggered: {
+                internal.fastScrolling = true
+            }
+        }
+    }
+
+    Timer {
+        id: dirtyTimer
+        interval: 500
+        running: false
+        onTriggered: {
+            Sections.initSectionData(listView);
+            internal.modelDirty = false;
+        }
+    }
+
+    Timer {
+        id: timerScroll
+
+        running: false
+        interval: 10
+        onTriggered: {
+            var idx = Sections.getIndexFor(internal.desireSection)
+            if (idx !== -1) {
+                listView.positionViewAtIndex(idx, ListView.Beginning)
+            }
+        }
+    }
+
+    QtObject {
+        id: internal
+
+        property string currentSection: listView.currentSection
+        property string desireSection: ""
+        property string targetSection: fastScrolling ? desireSection : currentSection
+        property int oldY: 0
+        property bool modelDirty: false
+        property bool down: true
+        property bool fastScrolling: false
+        property var currentItem: null
+
+        onTargetSectionChanged: moveIndicator()
+
+        function initDirtyObserver() {
+            Sections.initialize(listView);
+            function dirtyObserver() {
+                if (!internal.modelDirty) {
+                    internal.modelDirty = true;
+                    dirtyTimer.running = true;
+                }
+            }
+
+            if (listView.model.countChanged)
+                listView.model.countChanged.connect(dirtyObserver);
+
+            if (listView.model.itemsChanged)
+                listView.model.itemsChanged.connect(dirtyObserver);
+
+            if (listView.model.itemsInserted)
+                listView.model.itemsInserted.connect(dirtyObserver);
+
+            if (listView.model.itemsMoved)
+                listView.model.itemsMoved.connect(dirtyObserver);
+
+            if (listView.model.itemsRemoved)
+                listView.model.itemsRemoved.connect(dirtyObserver);
+        }
+
+        function adjustContentPosition(mouseY) {
+            var child = rail.childAt(rail.width / 2, mouseY)
+            if (!child || child.text === "") {
+                return
+            }
+            var section = child.text
+            if (internal.desireSection !== section) {
+                internal.desireSection = section
+                moveIndicator()
+                timerScroll.restart()
+            }
+        }
+
+        function moveIndicator()
+        {
+            var index = root.letters.indexOf(targetSection)
+            if (index != -1) {
+                currentItem = sectionsRepeater.itemAt(index)
+            }
+        }
+    }
+}

=== modified file 'src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml'
--- src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml	2014-05-07 18:13:12 +0000
+++ src/imports/Ubuntu/Contacts/MultipleSelectionListView.qml	2014-06-06 15:49:21 +0000
@@ -15,6 +15,7 @@
  */
 
 import QtQuick 2.2
+import Ubuntu.Components 0.1
 import Ubuntu.Components.Popups 0.1 as Popups
 
 /*!
@@ -54,7 +55,7 @@
     \endqml
 */
 
-ListView {
+UbuntuListView {
     id: listView
 
     /*!

=== modified file 'src/imports/Ubuntu/Contacts/qmldir'
--- src/imports/Ubuntu/Contacts/qmldir	2014-02-25 21:04:08 +0000
+++ src/imports/Ubuntu/Contacts/qmldir	2014-06-06 15:49:21 +0000
@@ -1,5 +1,6 @@
 module Ubuntu.Contacts
 
+ContactAvatar 0.1 ContactAvatar.qml
 ContactDetailOnlineAccountTypeModel 0.1 ContactDetailOnlineAccountTypeModel.qml
 ContactDetailPhoneNumberTypeModel 0.1 ContactDetailPhoneNumberTypeModel.qml
 ContactFetch 0.1 ContactFetch.qml
@@ -8,9 +9,11 @@
 ContactSimpleListView 0.1 ContactSimpleListView.qml
 MultipleSelectionListView 0.1 MultipleSelectionListView.qml
 
-internal ContactDetailPickerDelegate ContactDetailPickerDelegate.qml
+internal ContactDelegate ContactDelegate.qml
 internal ContactDetailPickerPhoneNumberDelegate ContactDetailPickerPhoneNumberDelegate.qml
 internal DialogButtons DialogButtons.qml
 internal OrganicView OrganicView.qml
 internal ContactList ContactList.js
 internal ContactJs Contacts.js
+internal FastScroll FastScroll.qml
+internal FastScrollJs FastScroll.js

