summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrint E. Kriebel <bekit@cyngn.com>2014-11-03 19:09:33 -0800
committerBrint E. Kriebel <bekit@cyngn.com>2014-11-03 19:09:33 -0800
commit6decd950b30450b956eb8cd40a30e7c7b6cd478b (patch)
tree2a1a185a271bf2940592565aaeb4966ff11a5b9c
parentb603b4b14db101966d877d941c23b8a9da38013c (diff)
parent6c013c7a71bbb9e81606e98356cd1a76ad0d8699 (diff)
downloadpackages_apps_ContactsCommon-6decd950b30450b956eb8cd40a30e7c7b6cd478b.tar.gz
packages_apps_ContactsCommon-6decd950b30450b956eb8cd40a30e7c7b6cd478b.tar.bz2
packages_apps_ContactsCommon-6decd950b30450b956eb8cd40a30e7c7b6cd478b.zip
Merge branch 'cm-11.0' into stable/cm-11.0
Conflicts: res/values-fr/cm_strings.xml res/values-in/cm_strings.xml res/values-lt/cm_strings.xml res/values-th/cm_strings.xml Change-Id: Ice3d5f0dff664db4ea2b60b5aa3691c11d4e9105
-rw-r--r--res/drawable-hdpi/ic_action_call.pngbin0 -> 1094 bytes
-rw-r--r--res/drawable-mdpi/ic_action_call.pngbin0 -> 741 bytes
-rw-r--r--res/drawable-xhdpi/ic_action_call.pngbin0 -> 1489 bytes
-rw-r--r--res/drawable-xxhdpi/ic_action_call.pngbin0 -> 2245 bytes
-rw-r--r--res/drawable/call_background_activated.xml10
-rw-r--r--res/drawable/call_background_holo.xml10
-rw-r--r--res/drawable/ic_action_call_background.xml27
-rw-r--r--res/values-fr/cm_strings.xml5
-rw-r--r--res/values-in/cm_strings.xml1
-rw-r--r--res/values-iw/cm_strings.xml39
-rw-r--r--res/values-ja/cm_strings.xml2
-rw-r--r--res/values-ku/cm_strings.xml10
-rw-r--r--res/values-lb/cm_strings.xml60
-rw-r--r--res/values-lb/strings.xml167
-rw-r--r--res/values-lt/cm_strings.xml6
-rw-r--r--res/values-lv/cm_strings.xml61
-rw-r--r--res/values-nb/cm_strings.xml1
-rw-r--r--res/values-nl/cm_strings.xml1
-rw-r--r--res/values-pl/cm_strings.xml13
-rw-r--r--res/values-sv/cm_strings.xml2
-rw-r--r--res/values-th/cm_strings.xml1
-rw-r--r--res/values-ug/strings.xml243
-rw-r--r--res/values-uk/cm_strings.xml35
-rw-r--r--res/values-zh-rTW/cm_strings.xml8
-rw-r--r--res/values/attrs.xml3
-rw-r--r--src/com/android/contacts/common/ContactTileLoaderFactory.java2
-rw-r--r--src/com/android/contacts/common/MoreContactUtils.java13
-rw-r--r--src/com/android/contacts/common/interactions/ImportExportDialogFragment.java8
-rw-r--r--src/com/android/contacts/common/list/ContactEntryListAdapter.java9
-rw-r--r--src/com/android/contacts/common/list/ContactEntryListFragment.java9
-rw-r--r--src/com/android/contacts/common/list/ContactListAdapter.java50
-rw-r--r--src/com/android/contacts/common/list/ContactListItemView.java160
-rw-r--r--src/com/android/contacts/common/list/DefaultContactListAdapter.java4
-rw-r--r--src/com/android/contacts/common/model/RawContactDeltaList.java2
-rw-r--r--src/com/android/contacts/common/model/account/ExternalAccountType.java5
35 files changed, 938 insertions, 29 deletions
diff --git a/res/drawable-hdpi/ic_action_call.png b/res/drawable-hdpi/ic_action_call.png
new file mode 100644
index 00000000..7493a607
--- /dev/null
+++ b/res/drawable-hdpi/ic_action_call.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_action_call.png b/res/drawable-mdpi/ic_action_call.png
new file mode 100644
index 00000000..a5a7c371
--- /dev/null
+++ b/res/drawable-mdpi/ic_action_call.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_action_call.png b/res/drawable-xhdpi/ic_action_call.png
new file mode 100644
index 00000000..e16ef951
--- /dev/null
+++ b/res/drawable-xhdpi/ic_action_call.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_action_call.png b/res/drawable-xxhdpi/ic_action_call.png
new file mode 100644
index 00000000..c4cfdac8
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_action_call.png
Binary files differ
diff --git a/res/drawable/call_background_activated.xml b/res/drawable/call_background_activated.xml
new file mode 100644
index 00000000..9fe8d3f6
--- /dev/null
+++ b/res/drawable/call_background_activated.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <gradient android:startColor="#33b5e5" android:endColor="#33b5e5"
+ android:angle="270" />
+ <corners android:radius="2dp" />
+ <stroke android:color="#33b5e5" android:width="1dp" />
+ <padding android:top="5dp" android:bottom="5dp" android:left="5dp"
+ android:right="5dp" />
+</shape> \ No newline at end of file
diff --git a/res/drawable/call_background_holo.xml b/res/drawable/call_background_holo.xml
new file mode 100644
index 00000000..b947b20a
--- /dev/null
+++ b/res/drawable/call_background_holo.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+ <gradient android:startColor="#00000000"
+ android:endColor="#00000000"
+ android:angle="270" />
+ <corners android:radius="2dp" />
+ <padding android:top="5dp" android:bottom="5dp" android:left="5dp"
+ android:right="5dp" />
+</shape> \ No newline at end of file
diff --git a/res/drawable/ic_action_call_background.xml b/res/drawable/ic_action_call_background.xml
new file mode 100644
index 00000000..71ac2a9b
--- /dev/null
+++ b/res/drawable/ic_action_call_background.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_focused="true"
+ android:state_pressed="true"
+ android:drawable="@drawable/call_background_activated" />
+ <item android:state_focused="false"
+ android:state_pressed="true"
+ android:drawable="@drawable/call_background_activated"/>
+ <item android:state_focused="false"
+ android:state_pressed="false"
+ android:drawable="@drawable/call_background_holo"/>
+</selector> \ No newline at end of file
diff --git a/res/values-fr/cm_strings.xml b/res/values-fr/cm_strings.xml
index 0e2915f0..66081a0c 100644
--- a/res/values-fr/cm_strings.xml
+++ b/res/values-fr/cm_strings.xml
@@ -24,6 +24,7 @@
<string name="name_for_sim">Nom</string>
<string name="fail_reason_import_vcard">La vCard \'<xliff:g id="name">%s</xliff:g>\' n\'a pas pu être importée en raison d\'une erreur d\'entrée/sortie</string>
<string name="label_groups">Groupe</string>
+ <string name="contact_share_failed_toast">Impossible de partager plus de <xliff:g id="count">%d</xliff:g> contacts</string>
<string name="exporting">Export\u2026</string>
<string name="reading_vcard_files"><xliff:g id="current_number">%1$s</xliff:g> sur <xliff:g id="total_number">%2$s</xliff:g> fichiers</string>
<string name="export_failed">Échec de l\'exportation</string>
@@ -34,6 +35,7 @@
<item quantity="one">L\'exportation a été annulée, %d élément a été exporté</item>
<item quantity="other">L\'exportation a été annulée, %d éléments ont été exportés</item>
</plurals>
+ <string name="export_no_phone_or_email"><xliff:g id="name">%s</xliff:g> n\'a pas de numéro de téléphone ou d\'adresse courriel</string>
<string name="import_from_sim_select">Choisissez la carte à importer</string>
<string name="no_sdcard_title" product="nosdcard">Stockage non disponible</string>
<string name="no_sdcard_title" product="default">Aucune carte SD</string>
@@ -41,7 +43,10 @@
<string name="deleteConfirmation">Ce contact sera supprimé.</string>
<string name="readOnlyContactDeleteConfirmation">Ce contact contient des informations de plusieurs comptes. Les informations de comptes en lecture seule seront masquées dans vos listes de contacts et non supprimées.</string>
<string name="readOnlyContactWarning">Il est impossible de supprimer des contacts sur les comptes en lecture seule. Cependant, vous pouvez les masquer dans vos listes de contacts.</string>
+ <string name="multipleContactDeleteConfirmation">La suppression de ce contact entraînera la suppression des informations dans plusieurs comptes.</string>
<string name="copy_done">Le contact a été copié avec succès</string>
+ <string name="copy_failure">Copie du contact échoué</string>
+ <string name="card_no_space">Copie du contact échoué, la carte SIM est pleine</string>
<string name="ip_call_by_slot">Appel IP avec <xliff:g id="subName">%s</xliff:g></string>
<string name="no_ip_number">Aucun numéro IP</string>
<string name="no_ip_number_on_sim_card">Aucun numéro IP sur la carte SIM</string>
diff --git a/res/values-in/cm_strings.xml b/res/values-in/cm_strings.xml
index 8618947c..148be0f7 100644
--- a/res/values-in/cm_strings.xml
+++ b/res/values-in/cm_strings.xml
@@ -46,6 +46,7 @@
<string name="copy_done">Kontak berhasil disalin</string>
<string name="copy_failure">Menyalin kontak gagal</string>
<string name="card_no_space">Menyalin kontak gagal, kartu SIM penuh</string>
+ <string name="ip_call_by_slot">Panggilan IP dengan <xliff:g id="subName">%s</xliff:g></string>
<string name="no_ip_number">Tidak ada Nomor IP</string>
<string name="no_ip_number_on_sim_card">Tidak ada Nomor IP pada kartu SIM</string>
<string name="set_ip_number">Atur nomor IP</string>
diff --git a/res/values-iw/cm_strings.xml b/res/values-iw/cm_strings.xml
index 18b49b4f..b94d4015 100644
--- a/res/values-iw/cm_strings.xml
+++ b/res/values-iw/cm_strings.xml
@@ -18,4 +18,43 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="local_storage_account" product="tablet">חשבון טאבלט מקומי</string>
<string name="local_storage_account" product="default">חשבון סמארטפון מקומי</string>
+ <string name="export_to_sim">יצא לכרטיס SIM</string>
+ <string name="select_sim">בחר SIM</string>
+ <string name="account_sim">כרטיס SIM</string>
+ <string name="name_for_sim">שם</string>
+ <string name="fail_reason_import_vcard">לא היתה אפשרות לייבא את \' <xliff:g id="name"> %s\' </xliff:g> ה-vCard עקב שגיאת קלט/פלט</string>
+ <string name="label_groups">קבוצה</string>
+ <string name="contact_share_failed_toast">לא ניתן להוסיף יותר מ- <xliff:g id="count"> %d </xliff:g> אנשי קשר</string>
+ <string name="exporting">מייצא\u2026</string>
+ <string name="reading_vcard_files"><xliff:g id="current_number"> %1$s </xliff:g> מ- <xliff:g id="total_number"> %2$s </xliff:g> קבצים</string>
+ <string name="export_failed">הייצוא נכשל</string>
+ <string name="sim_card_full">כרטיס ה-SIM מלא</string>
+ <string name="export_finished">הייצוא הסתיים</string>
+ <string name="tag_too_long">השם של איש הקשר ארוך מדי</string>
+ <plurals name="export_cancelled">
+ <item quantity="one">הייבוא בוטל, פריט %d יובא</item>
+ <item quantity="other">הייבוא בוטל, %d פריטים יובאו</item>
+ </plurals>
+ <string name="export_no_phone_or_email">ל<xliff:g id="name"> %s </xliff:g> אין מספר טלפון או כתובת דוא\"ל</string>
+ <string name="import_from_sim_select">בחר כרטיס לייבוא</string>
+ <string name="no_sdcard_title" product="nosdcard">שטח אחסון אינו זמין</string>
+ <string name="no_sdcard_title" product="default">אין כרטיס זיכרון</string>
+ <string name="deleteConfirmation_title">למחוק איש קשר?</string>
+ <string name="deleteConfirmation">איש קשר זה יימחק.</string>
+ <string name="readOnlyContactDeleteConfirmation">איש קשר זה מכיל מידע מחשבונות מרובים. מידע מחשבונות לקריאה בלבד יוסתר ברשימות אנשי הקשר ולא יימחק.</string>
+ <string name="readOnlyContactWarning">לא ניתן למחוק אנשי קשר מחשבונות לקריאה בלבד, אך ניתן להסתיר אותם ברשימות אנשי הקשר שלך.</string>
+ <string name="multipleContactDeleteConfirmation">מחיקת איש קשר זה תמחק מידע מחשבונות מרובים.</string>
+ <string name="copy_done">איש הקשר הועתק בהצלחה</string>
+ <string name="copy_failure">העתקת איש הקשר נכשלה</string>
+ <string name="card_no_space">העתקת איש הקשר נכשלה, כרטיס ה-SIM מלא</string>
+ <string name="ip_call_by_slot">שיחת IP עם <xliff:g id="subName"> %s </xliff:g></string>
+ <string name="no_ip_number">אין מספר IP</string>
+ <string name="no_ip_number_on_sim_card">אין מספר IP בכרטיס ה-SIM</string>
+ <string name="set_ip_number">הכנס מספר IP</string>
+ <string name="ipcall_dialog_title">הגדרות שיחת IP</string>
+ <string name="ipcall_dialog_edit_hint">הזן את קידומת ה-IP</string>
+ <string name="select_path">בחר נתיב</string>
+ <string name="sd_card">כרטיס SD</string>
+ <string name="phone_storage">אחסון פנימי</string>
+ <string name="sim_contacts_not_loaded">טעינת אנשי הקשר מה-SIM לא הצליחה בשלמותה</string>
</resources>
diff --git a/res/values-ja/cm_strings.xml b/res/values-ja/cm_strings.xml
index ab163a55..66376fb2 100644
--- a/res/values-ja/cm_strings.xml
+++ b/res/values-ja/cm_strings.xml
@@ -46,7 +46,7 @@
<string name="copy_done">連絡先のコピーが完了しました</string>
<string name="copy_failure">連絡先をコピーできませんでした</string>
<string name="card_no_space">連絡先をコピーできませんでした、SIMカードがいっぱいです</string>
- <string name="ip_call_by_slot"><xliff:g id="subName">%s</xliff:g>のIP電話</string>
+ <string name="ip_call_by_slot"><xliff:g id="subName">%s</xliff:g>のIP電話で発信</string>
<string name="no_ip_number">IP番号がありません</string>
<string name="no_ip_number_on_sim_card">SIMカードにIP番号がありません</string>
<string name="set_ip_number">IP番号を設定</string>
diff --git a/res/values-ku/cm_strings.xml b/res/values-ku/cm_strings.xml
index aa6fa9af..dc472f19 100644
--- a/res/values-ku/cm_strings.xml
+++ b/res/values-ku/cm_strings.xml
@@ -18,4 +18,14 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="local_storage_account" product="tablet">هەژماری ناوخۆی تاتەبژمێر</string>
<string name="local_storage_account" product="default">هەژماری ناوخۆی تەلەفۆن</string>
+ <string name="export_to_sim">ناردنی ناو بۆ سیماکارت</string>
+ <string name="select_sim">دیاریکردنی سیم</string>
+ <string name="account_sim">سیمکارت</string>
+ <string name="name_for_sim">ناو</string>
+ <string name="label_groups">گرووپ</string>
+ <string name="ipcall_dialog_title">ڕێکخستنی تەلەفۆنی IP</string>
+ <string name="select_path">دیاریکردنی ڕێڕەو</string>
+ <string name="sd_card">بیرگەی دەرەکی</string>
+ <string name="phone_storage">بیرگەی تەلەفۆن</string>
+ <string name="sim_contacts_not_loaded">ناوی ناو سیمکارتەکە ناتوانرێت تەواوەتی دابەزێت</string>
</resources>
diff --git a/res/values-lb/cm_strings.xml b/res/values-lb/cm_strings.xml
new file mode 100644
index 00000000..e6544252
--- /dev/null
+++ b/res/values-lb/cm_strings.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="local_storage_account" product="tablet">Lokalen Tabletkont</string>
+ <string name="local_storage_account" product="default">Lokalen Telefonskont</string>
+ <string name="export_to_sim">Op d\'SIM-Kaart exportéieren</string>
+ <string name="select_sim">SIM auswielen</string>
+ <string name="account_sim">SIM-Kaart</string>
+ <string name="name_for_sim">Numm</string>
+ <string name="fail_reason_import_vcard">D\'vCard \'<xliff:g id="name">%s</xliff:g>\' konnt wéinst engem Lies-/Schreiffeeler net importéiert ginn</string>
+ <string name="label_groups">Grupp</string>
+ <string name="contact_share_failed_toast">Et kënne just <xliff:g id="count">%d</xliff:g> Kontakter gedeelt ginn</string>
+ <string name="exporting">Gëtt exportéiert\u2026</string>
+ <string name="reading_vcard_files"><xliff:g id="current_number">%1$s</xliff:g> / <xliff:g id="total_number">%2$s</xliff:g> Fichieren</string>
+ <string name="export_failed">Export feelgeschloen</string>
+ <string name="sim_card_full">D\'SIM-Kaart ass voll</string>
+ <string name="export_finished">Export ofgeschloss</string>
+ <string name="tag_too_long">De Kontaktnumm ass ze laang</string>
+ <plurals name="export_cancelled">
+ <item quantity="one">Den Export gouf ofgebrach, %d Element gouf importéiert</item>
+ <item quantity="other">Den Export gouf ofgebrach, %d Elementer goufen importéiert</item>
+ </plurals>
+ <string name="export_no_phone_or_email"><xliff:g id="name">%s</xliff:g> huet keng Telefonsnummer oder E-Mail-Adress</string>
+ <string name="import_from_sim_select">SIM-Kaart fir den Import auswielen</string>
+ <string name="no_sdcard_title" product="nosdcard">Späicher net disponibel</string>
+ <string name="no_sdcard_title" product="default">Keng SD-Kaart</string>
+ <string name="deleteConfirmation_title">Kontakt läschen?</string>
+ <string name="deleteConfirmation">Dëse Kontakt gëtt geläscht.</string>
+ <string name="readOnlyContactDeleteConfirmation">Dëse Kontakt enhält Informatioune vu verschiddene Konten. Informatiounen aus schreifgeschützte Konte ginn an denge Kontaktlëschte verstoppt, awer net geläscht.</string>
+ <string name="readOnlyContactWarning">Du kanns keng Kontakter aus schreifgeschützte Konte läschen, awer du kanns s\'aus de Kontaktlëschte verstoppen.</string>
+ <string name="multipleContactDeleteConfirmation">D\'Läsche vun dësem Kontakt läscht Informatioune vu méi Konten.</string>
+ <string name="copy_done">De Kontakt gouf erfollegräich kopéiert</string>
+ <string name="copy_failure">De Kontakt konnt net kopéiert ginn</string>
+ <string name="card_no_space">D\'Kopéiere vu Kontakter ass feelgeschloen, d\'SIM-Kaart ass voll</string>
+ <string name="ip_call_by_slot">VOIP-Uruff mam <xliff:g id="subName">%s</xliff:g></string>
+ <string name="no_ip_number">Keng VOIP-Nummer</string>
+ <string name="no_ip_number_on_sim_card">Keng VOIP-Nummer op der SIM-Kaart</string>
+ <string name="set_ip_number">VOIP-Nummer setzen</string>
+ <string name="ipcall_dialog_title">Astellunge fir VOIP-Uriff</string>
+ <string name="ipcall_dialog_edit_hint">Gëff w.e.g. de VOIP-Prefix an</string>
+ <string name="select_path">Pad auswielen</string>
+ <string name="sd_card">SD-Kaart</string>
+ <string name="phone_storage">Telefonsspäicher</string>
+ <string name="sim_contacts_not_loaded">D\'SIM-Kontakter konnten net komplett geluede ginn</string>
+</resources>
diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml
index 625c9c84..a787f567 100644
--- a/res/values-lb/strings.xml
+++ b/res/values-lb/strings.xml
@@ -25,7 +25,9 @@
<string name="call_fax_home">Fax doheem uruffen</string>
<string name="call_pager">Pager uruffen</string>
<string name="call_other">Uruffen</string>
+ <string name="call_callback">Réckruffnummer uruffen</string>
<string name="call_car">Auto uruffen</string>
+ <string name="call_company_main">Firmentelefon uruffen</string>
<string name="call_isdn">ISDN uruffen</string>
<string name="call_main">Haaptnummer uruffen</string>
<string name="call_other_fax">Fax uruffen</string>
@@ -33,53 +35,210 @@
<string name="call_telex">Telex uruffen</string>
<string name="call_tty_tdd">TTY/TDD uruffen</string>
<string name="call_work_mobile">Aarbechtshandy uruffen</string>
+ <string name="call_work_pager">Aarbechtspager uruffen</string>
<string name="call_assistant"><xliff:g id="assistant">%s</xliff:g> uruffen</string>
<string name="call_mms">MMS uruffen</string>
+ <string name="sms_custom"><xliff:g id="custom">%s</xliff:g> eng SMS schreiwen</string>
+ <string name="sms_home">SMS un déi privat Nummer schécken</string>
+ <string name="sms_mobile">SMS un den Handy schécken</string>
+ <string name="sms_work">SMS un d\'Aarbecht schécken</string>
+ <string name="sms_fax_work">SMS un den Aarbechtsfax schécken</string>
+ <string name="sms_fax_home">Fax un déi privat Nummer schécken</string>
+ <string name="sms_pager">SMS un de Pager schécken</string>
+ <string name="sms_other">SMS schécken</string>
+ <string name="sms_callback">SMS zréckschécken</string>
+ <string name="sms_car">SMS un den Auto schécken</string>
+ <string name="sms_company_main">SMS un d\'Haaptnummer vun der Firma schécken</string>
+ <string name="sms_isdn">SMS un d\'ISDN-Nummer schécken</string>
+ <string name="sms_main">SMS un d\'Haaptnummer schécken</string>
+ <string name="sms_other_fax">SMS un de Fax schécken</string>
+ <string name="sms_radio">SMS un de Radio schécken</string>
+ <string name="sms_telex">SMS un den Telex schécken</string>
+ <string name="sms_tty_tdd">SMS un den TTY/TDD schécken</string>
+ <string name="sms_work_mobile">SMS un den Aarbechtshandy schécken</string>
+ <string name="sms_work_pager">SMS un den Aarbechtspager schécken</string>
+ <string name="sms_assistant">Dem <xliff:g id="assistant">%s</xliff:g> eng SMS schécken</string>
+ <string name="sms_mms">MMS schécken</string>
+ <string name="clearFrequentsConfirmation_title">Dacks kontaktéiert eidel maachen?</string>
+ <string name="clearFrequentsConfirmation">Du läschs d\'Lëscht mat den dacks Kontaktéierten an den Appe \"Leit\" an \"Telefon\", an du forcéiers d\'Email-Appen d\'Adressastellungen nei ze léieren.</string>
+ <string name="clearFrequentsProgress_title">Dacks kontaktéiert gëtt eidel gemaach\u2026</string>
<string name="status_available">Disponibel</string>
<string name="status_away">Fort</string>
<string name="status_busy">Beschäftegt</string>
<string name="contactsList">Kontakter</string>
<string name="local_invisible_directory">Aner</string>
- <string name="local_search_label">All Kontakter</string>
+ <string name="directory_search_label">Verzeechnes</string>
+ <string name="local_search_label">All d\'Kontakter</string>
<string name="user_profile_contacts_list_header" msgid="9154761216179882405">Ech</string>
+ <string name="search_results_searching">Gëtt gesicht\u2026</string>
+ <string name="foundTooManyContacts">Méi wéi <xliff:g id="count">%d</xliff:g> fonnt.</string>
<string name="listFoundAllContactsZero">Keng Kontakter</string>
<plurals name="searchFoundContacts">
<item quantity="one">1 fonnt</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> fonnt</item>
</plurals>
+ <string name="description_quick_contact_for">Séiere Kontakt fir <xliff:g id="name">%1$s</xliff:g></string>
<string name="missing_name">(Keen Numm)</string>
<string name="favoritesFrequentCalled">Dacks ugeruff</string>
<string name="favoritesFrequentContacted">Dacks kontaktéiert</string>
<string name="description_view_contact_detail" msgid="2795575601596468581">Kontakt ukucken</string>
+ <string name="list_filter_phones">All d\'Kontakter mat Telefonsnummer</string>
+ <string name="view_updates_from_group">Aktualiséierunge weisen</string>
+ <string name="account_phone" product="tablet">Just Tablet, onsynchroniséiert</string>
+ <string name="account_phone" product="default">Just Telefon, onsynchroniséiert</string>
<string name="nameLabelsGroup">Numm</string>
<string name="nicknameLabelsGroup">Spëtznumm</string>
<string name="full_name">Numm</string>
+ <string name="name_given">Virnumm</string>
+ <string name="name_family">Familljennumm</string>
+ <string name="name_prefix">Nummprefix</string>
+ <string name="name_middle">Zweete Virnumm</string>
+ <string name="name_suffix">Nummsuffix</string>
+ <string name="name_phonetic">Phoneteschen Numm</string>
+ <string name="name_phonetic_given">Phonetesche Virnumm</string>
+ <string name="name_phonetic_middle">Phoneteschen zweete VIrnumm</string>
+ <string name="name_phonetic_family">Phonetesche Familljennumm</string>
<string name="phoneLabelsGroup">Telefon</string>
<string name="emailLabelsGroup">E-Mail</string>
<string name="postalLabelsGroup">Adress</string>
<string name="imLabelsGroup">IM</string>
<string name="organizationLabelsGroup">Organisatioun</string>
+ <string name="relationLabelsGroup">Relatioun</string>
+ <string name="eventLabelsGroup">Speziell Daten</string>
+ <string name="sms">Text-Message</string>
<string name="postal_address">Adress</string>
+ <string name="ghostData_company">Firma</string>
<string name="ghostData_title">Titel</string>
<string name="label_notes">Notten</string>
+ <string name="label_sip_address">Interneturuff</string>
<string name="websiteLabelsGroup">Websäit</string>
<string name="groupsLabel">Gruppen</string>
- <string name="email_other">E-Mail</string>
+ <string name="email_home">E-Mail un déi privat Adress schécken</string>
+ <string name="email_mobile">E-Mail un déi mobil Adress schécken</string>
+ <string name="email_work">E-Mail un d\'Aarbechtsadress schécken</string>
+ <string name="email_other">E-Mail schécken</string>
+ <string name="email_custom">E-Mail (<xliff:g id="custom">%s</xliff:g>)</string>
<string name="email">E-Mail</string>
+ <string name="postal_street">Strooss</string>
+ <string name="postal_pobox">Postfach</string>
+ <string name="postal_neighborhood">Noperschaft</string>
<string name="postal_city">Stad</string>
<string name="postal_region">Staat</string>
+ <string name="postal_postcode">Postleetzuel</string>
<string name="postal_country">Land</string>
+ <string name="map_home">Privatadress ukucken</string>
+ <string name="map_work">Aarbechtsadress ukucken</string>
<string name="map_other">Adress ukucken</string>
+ <string name="map_custom"><xliff:g id="custom">%s</xliff:g>-Adress ukucken</string>
+ <string name="chat_aim">Iwwer AIM chatten</string>
+ <string name="chat_msn">Iwwer Windows Live chatten</string>
+ <string name="chat_yahoo">Iwwer Yahoo chatten</string>
+ <string name="chat_skype">Iwwer Skype chatten</string>
+ <string name="chat_qq">Iwwer QQ chatten</string>
+ <string name="chat_gtalk">Iwwer Google Talk chatten</string>
+ <string name="chat_icq">Iwwer ICQ chatten</string>
+ <string name="chat_jabber">Iwwer Jabber chatten</string>
+ <string name="chat">Chatten</string>
<string name="description_minus_button">läschen</string>
- <string name="list_filter_all_accounts">All Kontakter</string>
+ <string name="expand_collapse_name_fields_description">Felder fir d\'Nimm ausklappen oder zesummeklappen</string>
+ <string name="list_filter_all_accounts">All d\'Kontakter</string>
<string name="list_filter_all_starred">Markéiert</string>
<string name="list_filter_customize">Personaliséieren</string>
<string name="list_filter_single">Kontakt</string>
- <string name="display_all_contacts">All Kontakter</string>
+ <string name="display_ungrouped">All déi aner Kontakter</string>
+ <string name="display_all_contacts">All d\'Kontakter</string>
+ <string name="menu_sync_remove">Synchroniséierungsgrupp läschen</string>
+ <string name="dialog_sync_add">Synchroniséierungsgrupp dobäisetzen</string>
+ <string name="display_more_groups">Méi Gruppen\u2026</string>
+ <string name="display_warn_remove_ungrouped">Wann \"<xliff:g id="group" example="Starred">%s</xliff:g>\" aus der Synchroniséierung geläscht gëtt, ginn och all déi net gruppéiert Kontakter aus der Synchroniséierung geläscht.</string>
+ <string name="savingDisplayGroups">Uweisastellunge gi gespäichert\u2026</string>
<string name="menu_done">Fäerdeg</string>
<string name="menu_doNotSave">Ofbriechen</string>
+ <string name="listAllContactsInAccount">Kontakter am Kont <xliff:g id="name" example="abc@gmail.com">%s</xliff:g></string>
+ <string name="listCustomView">Kontakter an der personaliséierter Usiicht</string>
+ <string name="listSingleContact">Eenzelne Kontakt</string>
+ <string name="dialog_new_contact_account">Kontakt ënner dem Kont uleeën</string>
+ <string name="import_from_sim">Vun der SIM-Kaart importéieren</string>
+ <string name="import_from_sdcard" product="default">Aus dem Späicher importéieren</string>
+ <string name="cancel_import_confirmation_message">Import vum Fichier <xliff:g id="filename" example="import.vcf">%s</xliff:g> ofbriechen?</string>
+ <string name="cancel_export_confirmation_message">Export vum Fichier <xliff:g id="filename" example="import.vcf">%s</xliff:g> ofbriechen?</string>
+ <string name="cancel_vcard_import_or_export_failed">Konnt den Import/Export vun der vCard net ofbriechen</string>
<string name="fail_reason_unknown">Onbekannte Feeler.</string>
+ <string name="fail_reason_could_not_open_file">Konnt \"<xliff:g id="file_name">%s</xliff:g>" net opmaachen: <xliff:g id="exact_reason">%s</xliff:g>.</string>
+ <string name="fail_reason_could_not_initialize_exporter">Konnt den Exportéierprogramm net starten: \"<xliff:g id="exact_reason">%s</xliff:g>\".</string>
+ <string name="fail_reason_no_exportable_contact">Et gëtt kee Kontakt deen exportéiert ka ginn.</string>
+ <string name="fail_reason_error_occurred_during_export">Beim Exportéieren ass e Feeler opgetrueden: \"<xliff:g id="exact_reason">%s</xliff:g>\".</string>
+ <string name="fail_reason_too_long_filename">Den Numm vum Fichier ass ze laang (\"<xliff:g id="filename">%s</xliff:g>\").</string>
+ <string name="fail_reason_too_many_vcard" product="nosdcard">Et sinn ze vill vCard-Fichieren am Späicher.</string>
+ <string name="fail_reason_too_many_vcard" product="default">Et sinn ze vill vCard-Fichieren op der SD-Kaart.</string>
+ <string name="fail_reason_io_error">Lies-/Schreiffeeler</string>
+ <string name="fail_reason_low_memory_during_import">Net genuch Späicher. De Fichier kéint ze grouss ze sinn.</string>
+ <string name="fail_reason_vcard_parse_error">Konnt d\'vCard aus onerwaarte Grënn net liesen.</string>
+ <string name="fail_reason_not_supported">D\'Format ass net ënnerstëtzt.</string>
+ <string name="fail_reason_failed_to_collect_vcard_meta_info">Konnt d\'Metadate vun dëse vCard-Fichieren net liesen.</string>
+ <string name="fail_reason_failed_to_read_files">Een oder méi Fichiere konnten net importéiert ginn (%s).</string>
+ <string name="exporting_vcard_finished_title">Exportéierung vum Fichier <xliff:g id="filename" example="export.vcf">%s</xliff:g> ofgeschloss.</string>
+ <string name="exporting_vcard_canceled_title">Exportéierung vum Fichier <xliff:g id="filename" example="export.vcf">%s</xliff:g> ofgebrach.</string>
+ <string name="exporting_contact_list_title">Kontaktdate ginn exportéiert</string>
+ <string name="exporting_contact_list_message">Deng Kontaktdate ginn exportéiert als: <xliff:g id="file_name">%s</xliff:g>.</string>
+ <string name="composer_failed_to_get_database_infomation">Konnt d\'Datebankinformatiounen net lueden.</string>
+ <string name="composer_has_no_exportable_contact" product="tablet">Et gi keng Kontakter déi exportéiert kënne ginn. Wann s du keng Kontakter op dengem Tablet hues, kéinte verschidden Dateprovidere verbidden d\'Kontakter vum Tablet z\'exportéieren.</string>
+ <string name="composer_has_no_exportable_contact" product="default">Et gi keng Kontakter déi exportéiert kënne ginn. Wann s du keng Kontakter op dengem Telefon hues, kéinte verschidden Dateprovidere verbidden d\'Kontakter vum Telefon z\'exportéieren.</string>
+ <string name="composer_not_initialized">De vCard-Editor konnt net gestart ginn.</string>
+ <string name="exporting_contact_failed_title">Konnt net exportéieren</string>
+ <string name="exporting_contact_failed_message">D\'Kontaktdate goufen net exportéiert.\nGrond: \"<xliff:g id="fail_reason">%s</xliff:g>\"</string>
+ <string name="no_sdcard_message" product="nosdcard">De Späicher gouf net fonnt.</string>
+ <string name="no_sdcard_message" product="default">D\'SD-Kaart gouf net fonnt.</string>
+ <string name="confirm_export_message">Deng Kontaktlëscht gëtt an dëse Fichier exportéiert: <xliff:g id="vcard_filename">%s</xliff:g>.</string>
+ <string name="importing_vcard_description"><xliff:g id="name" example="Joe Due">%s</xliff:g> gëtt importéiert</string>
+ <string name="reading_vcard_failed_title">Konnt d\'vCard-Daten net liesen</string>
+ <string name="reading_vcard_canceled_title">D\'Liese vun de vCard-Date gouf ënnerbrach</string>
+ <string name="importing_vcard_finished_title">D\'vCard <xliff:g id="filename" example="import.vcf">%s</xliff:g> ass fäerdeg importéiert</string>
+ <string name="importing_vcard_canceled_title">Importéiere vum Fichier <xliff:g id="filename" example="export.vcf">%s</xliff:g> ofgebrach</string>
+ <string name="vcard_import_will_start_message"><xliff:g id="filename" example="import.vcf">%s</xliff:g> gëtt geschwënn importéiert.</string>
+ <string name="vcard_import_will_start_message_with_default_name">De Fichier gëtt geschwënn importéiert.</string>
+ <string name="vcard_import_request_rejected_message">D\'vCard-Importufro gouf rejetéiert. Probéier méi spéit nees.</string>
+ <string name="vcard_export_will_start_message"><xliff:g id="filename" example="import.vcf">%s</xliff:g> gëtt geschwënn exportéiert.</string>
+ <string name="vcard_export_request_rejected_message">D\'vCard-Exportufro gouf rejetéiert. Probéier méi spéit nees.</string>
+ <string name="vcard_unknown_filename">Kontakt</string>
+ <string name="caching_vcard_message">D\'vCard-Date ginn an den Tëschespäichere gelueden. Den Import fänkt geschwënn un.</string>
+ <string name="percentage"><xliff:g id="percentage" example="50">%s</xliff:g><xliff:g id="percentsign" example="%">%%</xliff:g></string>
+ <string name="vcard_import_failed">Konnt d\'vCard net importéieren.</string>
+ <string name="import_failure_no_vcard_file" product="nosdcard">Kee vCard-Fichier am Späicher fonnt.</string>
+ <string name="import_failure_no_vcard_file" product="default">Kee vCard-Fichier op der SD-Kaart fonnt.</string>
+ <string name="nfc_vcard_file_name">Kontakt iwwer NFC empfaangen</string>
+ <string name="confirm_export_title">Kontakter exportéieren?</string>
+ <string name="select_vcard_title">vCard-Fichier auswielen</string>
+ <string name="import_one_vcard_string">Ee vCard-Fichier importéieren</string>
+ <string name="import_multiple_vcard_string">Méi vCard-Fichieren importéieren</string>
+ <string name="import_all_vcard_string">All vCard-Fichieren importéieren</string>
+ <string name="searching_vcard_message" product="nosdcard">Sichen no vCard-Daten am Späicher\u2026</string>
+ <string name="searching_vcard_message" product="default">Sichen no vCard-Daten op der SD-Kaart\u2026</string>
+ <string name="caching_vcard_title">Tëschespäicher gëtt gefëllt</string>
+ <string name="scanning_sdcard_failed_message" product="nosdcard">De Späicher konnt net duerchsicht ginn. (Grond: \"<xliff:g id="fail_reason">%s</xliff:g>\")</string>
+ <string name="scanning_sdcard_failed_message" product="default">D\'SD-Kaart konnt net duerchsicht ginn. (Grond: \"<xliff:g id="fail_reason">%s</xliff:g>\")</string>
+ <string name="progress_notifier_message"><xliff:g id="current_number">%s</xliff:g>/<xliff:g id="total_number">%s</xliff:g>: <xliff:g id="name" example="Joe Due">%s</xliff:g> gëtt importéiert</string>
+ <string name="export_to_sdcard" product="default">An de Späicher exportéieren</string>
+ <string name="share_visible_contacts">Siichtbar Kontakter deelen</string>
+ <string name="dialog_import_export">Kontakter importéieren/exportéieren</string>
+ <string name="dialog_import">Kontakter importéieren</string>
+ <string name="share_error">Dëse Kontakt kann net gedeelt ginn.</string>
<string name="menu_search">Sichen</string>
+ <string name="menu_contacts_filter">Kontakter fir unzeweisen</string>
+ <string name="activity_title_contacts_filter">Kontakter fir unzeweisen</string>
+ <string name="custom_list_filter">Personaliséiert Usiicht definéieren</string>
+ <string name="hint_findContacts">Kontakter fannen</string>
<string name="contactsFavoritesLabel">Favoritten</string>
<string name="listTotalAllContactsZero">Keng Kontakter.</string>
+ <string name="listTotalAllContactsZeroCustom">Keng siichtbar Kontakter.</string>
+ <string name="listTotalAllContactsZeroStarred">Keng Favoritten.</string>
+ <string name="listTotalAllContactsZeroGroup">Keng Kontakter an der Grupp <xliff:g id="name" example="Friends">%s</xliff:g></string>
+ <string name="menu_clear_frequents">Dacks kontaktéiert eidel maachen</string>
+ <string name="menu_accounts">Konten</string>
+ <string name="menu_import_export">Import/Export</string>
+ <string name="description_send_message">Dem <xliff:g id="name">%1$s</xliff:g> e Message schécken</string>
+ <string name="description_dial_phone_number">Dem <xliff:g id="name">%1$s</xliff:g> uruffen</string>
+ <string name="contact_status_update_attribution">iwwer <xliff:g id="source" example="Google Talk">%1$s</xliff:g></string>
+ <string name="contact_status_update_attribution_with_date"><xliff:g id="date" example="3 hours ago">%1$s</xliff:g> iwwer <xliff:g id="source" example="Google Talk">%2$s</xliff:g></string>
+ <string name="letter_tile_letter_font_family">sans-serif-thin</string>
</resources>
diff --git a/res/values-lt/cm_strings.xml b/res/values-lt/cm_strings.xml
index 8d30fad8..4be776e9 100644
--- a/res/values-lt/cm_strings.xml
+++ b/res/values-lt/cm_strings.xml
@@ -33,7 +33,7 @@
<string name="tag_too_long">Kontakto vardas per ilgas</string>
<plurals name="export_cancelled">
<item quantity="one">Eksportavimas buvo atšauktas, %d elementas buvo eksportuotas</item>
- <item quantity="few">Eksportavimas buvo atšauktas, %d elementų buvo eksportuota</item>
+ <item quantity="few">Eksportavimas buvo atšauktas, %d elementai buvo eksportuoti</item>
<item quantity="other">Eksportavimas buvo atšauktas, %d elementų buvo eksportuota</item>
</plurals>
<string name="export_no_phone_or_email"><xliff:g id="name">%s</xliff:g> neturi telefono numerio arba el. pašto</string>
@@ -42,9 +42,9 @@
<string name="no_sdcard_title" product="default">Nėras SD kortelės</string>
<string name="deleteConfirmation_title">Ištrinti kontaktą?</string>
<string name="deleteConfirmation">Šis kontaktas bus ištrintas.</string>
- <string name="readOnlyContactDeleteConfirmation">Šiame kontakte yra informacijos iš kelių paskyrų. Informacija iš tik skaitymui skirtų paskyrų bus paslėpta iš jūsų kontaktų sąrašo, bet netrinama.</string>
+ <string name="readOnlyContactDeleteConfirmation">Šiame kontakte yra informacijos iš kelių paskyrų. Informacija tik iš skaitymui skirtų paskyrų bus paslėpta iš jūsų kontaktų sąrašo, neištrinta.</string>
<string name="readOnlyContactWarning">Jūs negalite ištrinti kontaktų tik iš skaitomų paskyrų, tačiau galite paslėpti juos savo kontaktų sąraše.</string>
- <string name="multipleContactDeleteConfirmation">Panaikinus šį kontaktą bus panaikinta informacija iš kelių paskyrų.</string>
+ <string name="multipleContactDeleteConfirmation">Ištrynus šį kontaktą bus ištrinta informacija iš kelių paskyrų.</string>
<string name="copy_done">Kontaktas buvo nukopijuotas sėkmingai</string>
<string name="copy_failure">Nepavyko nukopijuoti kontakto</string>
<string name="card_no_space">Nukopijuoti kontakto nepavyko, SIM kortelė pilna</string>
diff --git a/res/values-lv/cm_strings.xml b/res/values-lv/cm_strings.xml
new file mode 100644
index 00000000..2d4e6057
--- /dev/null
+++ b/res/values-lv/cm_strings.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ Copyright (C) 2014 The CyanogenMod Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="local_storage_account" product="tablet">Vietējais planšetes konts</string>
+ <string name="local_storage_account" product="default">Vietējais telefona konts</string>
+ <string name="export_to_sim">Eksportēt uz SIM karti</string>
+ <string name="select_sim">Izvēlieties SIM</string>
+ <string name="account_sim">SIM karte</string>
+ <string name="name_for_sim">Vārds</string>
+ <string name="fail_reason_import_vcard">Neizdevās importēt vCard \'<xliff:g id="name">%s</xliff:g>\' sakarā ar ievadizvades kļūdu</string>
+ <string name="label_groups">Grupa</string>
+ <string name="contact_share_failed_toast">Var kopīgot ne vairāk kā <xliff:g id="count">%d</xliff:g> kontaktus</string>
+ <string name="exporting">Eksportē\u2026</string>
+ <string name="reading_vcard_files"><xliff:g id="current_number">%1$s</xliff:g> no <xliff:g id="total_number">%2$s</xliff:g> failiem</string>
+ <string name="export_failed">Eksports neizdevās</string>
+ <string name="sim_card_full">SIM karte ir pilna</string>
+ <string name="export_finished">Eksports pabeigts</string>
+ <string name="tag_too_long">Kontakta vārds ir pārāk garš</string>
+ <plurals name="export_cancelled">
+ <item quantity="zero">Eksportēšana tika atcelta, tika importēts %d vienums</item>
+ <item quantity="one">Eksportēšana tika atcelta, tika importēts %d vienums</item>
+ <item quantity="other">Eksportēšana tika atcelta, tika importēti %d vienumi</item>
+ </plurals>
+ <string name="export_no_phone_or_email"><xliff:g id="name">%s</xliff:g> nav telefona numura vai e-pasta adreses</string>
+ <string name="import_from_sim_select">Izvēlēties karti, kurā importēt</string>
+ <string name="no_sdcard_title" product="nosdcard">Krātuve nav pieejama</string>
+ <string name="no_sdcard_title" product="default">Nav SD kartes</string>
+ <string name="deleteConfirmation_title">Dzēst kontaktu?</string>
+ <string name="deleteConfirmation">Šī kontakts tiks dzēsts.</string>
+ <string name="readOnlyContactDeleteConfirmation">Šīs kontakts satur informāciju no vairākiem kontiem. Informācija no tikai lasāmiem kontiem būs tikai paslēpta no jūsu kontaktu saraksta, bet netiks izdzēsta.</string>
+ <string name="readOnlyContactWarning">Tikai lasāmu kontu kontaktus jūs nevarat izdzēst, bet tos varat paslēpt no savu kontaktu saraksta.</string>
+ <string name="multipleContactDeleteConfirmation">Šīs kontakta dzēšana izdzēsīs informāciju no vairākiem kontiem.</string>
+ <string name="copy_done">Kontakts tika sekmīgi nokopēts</string>
+ <string name="copy_failure">Neizdevās nokopēt kontaktu</string>
+ <string name="card_no_space">Kontakta kopēšana neizdevās, SIM karte ir pilna</string>
+ <string name="ip_call_by_slot">IP zvans, izmantojot <xliff:g id="subName">%s</xliff:g></string>
+ <string name="no_ip_number">Nav IP numura</string>
+ <string name="no_ip_number_on_sim_card">SIM kartē nav IP numura</string>
+ <string name="set_ip_number">Iestatīt IP numuru</string>
+ <string name="ipcall_dialog_title">IP zvanu iestatījumi</string>
+ <string name="ipcall_dialog_edit_hint">Lūdzu ievadiet IP priedēkli</string>
+ <string name="select_path">Izvēlieties ceļu</string>
+ <string name="sd_card">SD karte</string>
+ <string name="phone_storage">Telefona krātuve</string>
+ <string name="sim_contacts_not_loaded">SIM kontaktus neizdevās pilnībā ielādēt</string>
+</resources>
diff --git a/res/values-nb/cm_strings.xml b/res/values-nb/cm_strings.xml
index 07cbecff..f779c8fe 100644
--- a/res/values-nb/cm_strings.xml
+++ b/res/values-nb/cm_strings.xml
@@ -47,6 +47,7 @@
<string name="copy_done">Kontakten ble vellykket kopiert</string>
<string name="copy_failure">Kopiering av kontakten mislyktes</string>
<string name="card_no_space">Kopiering av kontakten mislyktes, SIM-kortet er fullt</string>
+ <string name="ip_call_by_slot">IP-samtale med <xliff:g id="subName">%s</xliff:g></string>
<string name="no_ip_number">Ingen IP-nummer</string>
<string name="no_ip_number_on_sim_card">Ingen IP-nummeret på SIM-kortet</string>
<string name="set_ip_number">Angi IP-nummeret</string>
diff --git a/res/values-nl/cm_strings.xml b/res/values-nl/cm_strings.xml
index e4e8b7f5..c5cf9b8d 100644
--- a/res/values-nl/cm_strings.xml
+++ b/res/values-nl/cm_strings.xml
@@ -47,6 +47,7 @@
<string name="copy_done">Contact kopiëren gelukt</string>
<string name="copy_failure">Contact kopiëren mislukt</string>
<string name="card_no_space">Kopiëren van contact mislukt, simkaart is vol</string>
+ <string name="ip_call_by_slot">IP-oproep via <xliff:g id="subName">%s</xliff:g></string>
<string name="no_ip_number">Geen IP-nummer</string>
<string name="no_ip_number_on_sim_card">Geen IP-nummer op simkaart</string>
<string name="set_ip_number">IP-nummer instellen</string>
diff --git a/res/values-pl/cm_strings.xml b/res/values-pl/cm_strings.xml
index 59c06f46..f19fd74f 100644
--- a/res/values-pl/cm_strings.xml
+++ b/res/values-pl/cm_strings.xml
@@ -24,18 +24,31 @@
<string name="name_for_sim">Nazwa</string>
<string name="fail_reason_import_vcard">vCard \"<xliff:g id="name">%s</xliff:g>\" nie może być zaimportowany przez błąd I/O</string>
<string name="label_groups">Grupa</string>
+ <string name="contact_share_failed_toast">Nie może zostać udostępnionych więcej niż <xliff:g id="count">%d</xliff:g> kontaktów</string>
<string name="exporting">Eksportowanie\u2026</string>
<string name="reading_vcard_files"><xliff:g id="current_number">%1$s</xliff:g> z <xliff:g id="total_number">%2$s</xliff:g> plików</string>
<string name="export_failed">Eksport nie powiódł się</string>
<string name="sim_card_full">Karta SIM jest pełna</string>
<string name="export_finished">Eksport zakończony</string>
<string name="tag_too_long">Nazwa kontaktu jest zbyt długa</string>
+ <plurals name="export_cancelled">
+ <item quantity="one">Eksportowanie anulowane, %d kontakt eksportowany</item>
+ <item quantity="few">Eksportowanie anulowane, %d kontakty eksportowane</item>
+ <item quantity="other">Eksportowanie anulowane, %d kontaktów eksportowanych</item>
+ </plurals>
<string name="export_no_phone_or_email"><xliff:g id="name">%s</xliff:g> nie zawiera numeru telefonu ani adresu email</string>
<string name="import_from_sim_select">Wybierz kartę do zimportowania</string>
<string name="no_sdcard_title" product="nosdcard">Pamięć niedostępna</string>
<string name="no_sdcard_title" product="default">Brak karty SD</string>
<string name="deleteConfirmation_title">Usunąć kontakt?</string>
<string name="deleteConfirmation">Ten kontakt zostanie usunięty.</string>
+ <string name="readOnlyContactDeleteConfirmation">Ten kontakt zawiera informacje z wielu kont. Informacje z kont tylko do odczytu zostaną ukryte w twojej liście kontaktów, nie usunięte.</string>
+ <string name="readOnlyContactWarning">Nie możesz usunąć kontaktów z konta tylko do odczytu, ale możesz ukryć je z listy kontaktów.</string>
+ <string name="multipleContactDeleteConfirmation">Usunięcie tego kontaktu spowoduje usunięcie informacji z wielu kont.</string>
+ <string name="copy_done">Kontakt został skopiowany pomyślnie</string>
+ <string name="copy_failure">Kopiowanie kontaktu nie powiodło się</string>
+ <string name="card_no_space">Kopiowanie kontaktu nie powiodło się, karta SIM jest pełna</string>
+ <string name="ip_call_by_slot">Połączenie IP z <xliff:g id="subName">%s</xliff:g></string>
<string name="no_ip_number">Brak numeru IP</string>
<string name="no_ip_number_on_sim_card">Brak numeru IP na karcie SIM</string>
<string name="set_ip_number">Ustaw numer IP</string>
diff --git a/res/values-sv/cm_strings.xml b/res/values-sv/cm_strings.xml
index f2e0454a..38429251 100644
--- a/res/values-sv/cm_strings.xml
+++ b/res/values-sv/cm_strings.xml
@@ -18,4 +18,6 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="local_storage_account" product="tablet">Lokalt surfplattekonto</string>
<string name="local_storage_account" product="default">Lokalt telefonkonto</string>
+ <string name="select_sim">Välj SIM</string>
+ <string name="sd_card">SD-kort</string>
</resources>
diff --git a/res/values-th/cm_strings.xml b/res/values-th/cm_strings.xml
index 8ab43b52..35867ffe 100644
--- a/res/values-th/cm_strings.xml
+++ b/res/values-th/cm_strings.xml
@@ -46,6 +46,7 @@
<string name="copy_done">รายชื่อผู้ติดต่อถูกค้ดลอกเรียบร้อยแล้ว</string>
<string name="copy_failure">คัดลอกรายชื่อล้มเหลว</string>
<string name="card_no_space">คัดลอกรายชื่อล้มเหลว, ซิมการ์ดเต็ม</string>
+ <string name="ip_call_by_slot">โทรผ่าน IP กับ <xliff:g id="subName">%s</xliff:g></string>
<string name="no_ip_number">ไม่มีหมายเลข IP</string>
<string name="no_ip_number_on_sim_card">ไม่มีหมายเลข IP ในซิมการ์ด</string>
<string name="set_ip_number">กำหนดหมายเลข IP</string>
diff --git a/res/values-ug/strings.xml b/res/values-ug/strings.xml
new file mode 100644
index 00000000..6f8a6033
--- /dev/null
+++ b/res/values-ug/strings.xml
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ ~ Copyright (C) 2012 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="toast_text_copied">تېكىست كۆچۈرۈلدى</string>
+ <string name="call_custom"><xliff:g id="CUSTOM">%s</xliff:g> نى چاقىر</string>
+ <string name="call_home">ئۆي تېلېفوننى چاقىر</string>
+ <string name="call_mobile">تېلېفوننى چاقىر</string>
+ <string name="call_work">خىزمەت تېلېفوننى چاقىر</string>
+ <string name="call_fax_work">خىزمەت فاكىسنى چاقىر</string>
+ <string name="call_fax_home">ئۆي فاكىسنى چاقىر</string>
+ <string name="call_pager">چاقىرغۇنى چاقىر</string>
+ <string name="call_other">چاقىر</string>
+ <string name="call_callback">قايتا چاقىرىلغان نومۇرنى چاقىر</string>
+ <string name="call_car">ماشىنا تېلېفونىنى چاقىر</string>
+ <string name="call_company_main">شىركەت باش ئاپپاراتىنى چاقىر</string>
+ <string name="call_isdn">ISDN چاقىر</string>
+ <string name="call_main">باش ئاپپاراتنى چاقىر</string>
+ <string name="call_other_fax">فاكىسنى چاقىر</string>
+ <string name="call_radio">رادىيو چاقىر</string>
+ <string name="call_telex">تېلېگرامما چاقىر</string>
+ <string name="call_tty_tdd">TTY/TDD چاقىر</string>
+ <string name="call_work_mobile">خىزمەت تېلېفوننى چاقىر</string>
+ <string name="call_work_pager">خىزمەت چاقىرغۇنى چاقىر</string>
+ <string name="call_assistant"><xliff:g id="ASSISTANT">%s</xliff:g> نى چاقىر</string>
+ <string name="call_mms">MMS چاقىر</string>
+ <string name="sms_custom"><xliff:g id="CUSTOM">%s</xliff:g> غا قىسقا ئۇچۇر يوللا</string>
+ <string name="sms_home">ئۆي تېلېفونغا ئۇچۇر يوللا</string>
+ <string name="sms_mobile">تېلېفونغا ئۇچۇر يوللا</string>
+ <string name="sms_work">خىزمەت تېلېفونغا ئۇچۇر يوللا</string>
+ <string name="sms_fax_work">خىزمەت فاكىسقا ئۇچۇر يوللا</string>
+ <string name="sms_fax_home">ئۆي فاكىسقا ئۇچۇر يوللا</string>
+ <string name="sms_pager">چاقىرغۇغا ئۇچۇر يوللا</string>
+ <string name="sms_other">قىسقا ئۇچۇر</string>
+ <string name="sms_callback">قايتا چاقىرىلغان نومۇرغا ئۇچۇر يوللا</string>
+ <string name="sms_car">ماشىنا تېلېفونىغا ئۇچۇر يوللا</string>
+ <string name="sms_company_main">شىركەت باش ئاپپاراتىغا ئۇچۇر يوللا</string>
+ <string name="sms_isdn">ISDN گە ئۇچۇر يوللا</string>
+ <string name="sms_main">باش ئاپپاراتقا ئۇچۇر يوللا</string>
+ <string name="sms_other_fax">فاكىسقا قىسقا ئۇچۇر يوللا</string>
+ <string name="sms_radio">رادىيوغا ئۇچۇر يوللا</string>
+ <string name="sms_telex">تېلېگراممىغا ئۇچۇر يوللا</string>
+ <string name="sms_tty_tdd">TTY/TDD غا ئۇچۇر يوللا</string>
+ <string name="sms_work_mobile">خىزمەت تېلېفونغا ئۇچۇر يوللا</string>
+ <string name="sms_work_pager">خىزمەت چاقىرغۇغا ئۇچۇر يوللا</string>
+ <string name="sms_assistant"><xliff:g id="ASSISTANT">%s</xliff:g> غا قىسقا ئۇچۇر يوللا</string>
+ <string name="sms_mms">MMS كە ئۇچۇر يوللا</string>
+ <string name="clearFrequentsConfirmation_title">دائىملىق ئالاقەداشلارنى تازىلامدۇ؟</string>
+ <string name="clearFrequentsConfirmation">بۇ مەشغۇلات ئالاقەداشلار ۋە نومۇر بۇرايدىغان ئەپتىكى دائىملىق ئالاقەداشلار تىزىمىنى تازىلايدۇ ھەمدە ئېلخەت ئەپتىن مەجبۇرىي ھالدا دائىملىق ئالاقەداشلىرىڭىزنىڭ ئادرېسىغا قايتىدىن ئېرىشىدۇ.</string>
+ <string name="clearFrequentsProgress_title">دائىملىق ئالاقەداشلارنى تازىلاۋاتىدۇ…</string>
+ <string name="status_available">ئىشلىتىلىشچان</string>
+ <string name="status_away">ئايرىلدى</string>
+ <string name="status_busy">ئالدىراش</string>
+ <string name="contactsList">ئالاقەداشلار</string>
+ <string name="local_invisible_directory">باشقا</string>
+ <string name="directory_search_label">مۇندەرىجە</string>
+ <string name="local_search_label">ھەممە ئالاقەداشلار</string>
+ <string name="user_profile_contacts_list_header" msgid="9154761216179882405">مەن</string>
+ <string name="search_results_searching">ئىزدەۋاتىدۇ…</string>
+ <string name="foundTooManyContacts"><xliff:g id="COUNT">%d</xliff:g> دىن كۆپ تاپتى.</string>
+ <string name="listFoundAllContactsZero">ئالاقەداش يوق</string>
+ <plurals name="searchFoundContacts">
+ <item quantity="other">1 نى تاپتى</item>
+ </plurals>
+ <string name="description_quick_contact_for"><xliff:g id="NAME">%1$s</xliff:g> نىڭ تېز ئالاقەداشلىرى</string>
+ <string name="missing_name">(ئاتسىز)</string>
+ <string name="favoritesFrequentCalled">دائىملىق چاقىرىلىش</string>
+ <string name="favoritesFrequentContacted">دائىملىق ئالاقەداشلار</string>
+ <string name="description_view_contact_detail" msgid="2795575601596468581">ئالاقەداشنى كۆرسەت</string>
+ <string name="list_filter_phones">تېلېفون نومۇرى بار ھەممە ئالاقەداشلار</string>
+ <string name="view_updates_from_group">يېڭىلانمىلارنى كۆرسەت</string>
+ <string name="account_phone" product="tablet">تاختا كومپيۇتېرلا، قەدەمداشلانمىغان</string>
+ <string name="account_phone" product="default">تېلېفوندىلا، قەدەمداشلانمىغان</string>
+ <string name="nameLabelsGroup">ئاتى</string>
+ <string name="nicknameLabelsGroup">تەخەللۇس</string>
+ <string name="full_name">ئاتى</string>
+ <string name="name_given">ئاتى</string>
+ <string name="name_family">تەگئات</string>
+ <string name="name_prefix">ئات ئالدى قوشۇلغۇچىسى</string>
+ <string name="name_middle">ئوتتۇرا ئاتى</string>
+ <string name="name_suffix">ئات ئارقا قوشۇلغۇچىسى</string>
+ <string name="name_phonetic">تاۋۇشلۇق ئات</string>
+ <string name="name_phonetic_given">تاۋۇشلۇق بىرىنچى ئات</string>
+ <string name="name_phonetic_middle">تاۋۇشلۇق ئوتتۇرا ئات</string>
+ <string name="name_phonetic_family">تاۋۇشلۇق تەگئات</string>
+ <string name="phoneLabelsGroup">تېلېفون</string>
+ <string name="emailLabelsGroup">ئېلخەت</string>
+ <string name="postalLabelsGroup">ئادرېس</string>
+ <string name="imLabelsGroup">پەيتلىك ئۇچۇر</string>
+ <string name="organizationLabelsGroup">تەشكىل</string>
+ <string name="relationLabelsGroup">مۇناسىۋەت</string>
+ <string name="eventLabelsGroup">پائالىيەتلەر</string>
+ <string name="sms">تېكىست ئۇچۇر</string>
+ <string name="postal_address">ئادرېس</string>
+ <string name="ghostData_company">شىركەت</string>
+ <string name="ghostData_title">ماۋزۇ</string>
+ <string name="label_notes">ئىزاھاتلار</string>
+ <string name="label_sip_address">ئىنتېرنېت چاقىرىشى</string>
+ <string name="websiteLabelsGroup">تور بېكەت</string>
+ <string name="groupsLabel">گۇرۇپپا</string>
+ <string name="email_home">ئۆيگە ئېلخەت يوللا</string>
+ <string name="email_mobile">تېلېفونغا ئېلخەت يوللا</string>
+ <string name="email_work">خىزمەت تېلېفونغا ئېلخەت يوللا</string>
+ <string name="email_other">ئېلخەت</string>
+ <string name="email_custom"><xliff:g id="CUSTOM">%s</xliff:g> غا ئېلخەت يوللا</string>
+ <string name="email">ئېلخەت</string>
+ <string name="postal_street">كوچا</string>
+ <string name="postal_pobox">خەت ساندۇق</string>
+ <string name="postal_neighborhood">قوشنا</string>
+ <string name="postal_city">شەھەر</string>
+ <string name="postal_region">دۆلەت</string>
+ <string name="postal_postcode">پوچتا نومۇر</string>
+ <string name="postal_country">دۆلەت</string>
+ <string name="map_home">ئۆي ئادرېسىنى كۆرسەت</string>
+ <string name="map_work">خىزمەت ئادرېسىنى كۆرسەت</string>
+ <string name="map_other">ئادرېسنى كۆرسەت</string>
+ <string name="map_custom"><xliff:g id="CUSTOM">%s</xliff:g> ئادرېسنى كۆرسەت</string>
+ <string name="chat_aim">AIM دا مۇڭداش</string>
+ <string name="chat_msn">Windows Live دا مۇڭداش</string>
+ <string name="chat_yahoo">Yahoo دا مۇڭداش</string>
+ <string name="chat_skype">Skype دا مۇڭداش</string>
+ <string name="chat_qq">QQ دا مۇڭداش</string>
+ <string name="chat_gtalk">Google Talk تا مۇڭداش</string>
+ <string name="chat_icq">ICQ دا مۇڭداش</string>
+ <string name="chat_jabber">Jabber دا مۇڭداش</string>
+ <string name="chat">مۇڭداش</string>
+ <string name="description_minus_button">ئۆچۈر</string>
+ <string name="expand_collapse_name_fields_description">ئىسىم سۆز بۆلىكىنى ياي ياكى قاتلا</string>
+ <string name="list_filter_all_accounts">ھەممە ئالاقەداشلار</string>
+ <string name="list_filter_all_starred">يۇلتۇزلۇق</string>
+ <string name="list_filter_customize">ئىختىيارىي</string>
+ <string name="list_filter_single">ئالاقەداش</string>
+ <string name="display_ungrouped">بارلىق باشقا ئالاقەداشلار</string>
+ <string name="display_all_contacts">ھەممە ئالاقەداشلار</string>
+ <string name="menu_sync_remove">قەدەمداش گۇرۇپپىنى چىقىرىۋەت</string>
+ <string name="dialog_sync_add">قەدەمداش گۇرۇپپا قوش</string>
+ <string name="display_more_groups">تېخىمۇ كۆپ گۇرۇپپا…</string>
+ <string name="display_warn_remove_ungrouped">ئەگەر قەدەمداشتىن \"<xliff:g id="GROUP">%s</xliff:g>\" گۇرۇپپا چىقىرىۋېتىلسە ئۇنداقتا گۇرۇپپىغا ئايرىلمىغان باشقا ھەممە ئالاقەداشلارمۇ بىللە چىقىرىۋېتىلىدۇ.</string>
+ <string name="savingDisplayGroups">كۆرسىتىش تاللانمىسى ساقلاۋاتىدۇ…</string>
+ <string name="menu_done">تامام</string>
+ <string name="menu_doNotSave">ۋاز كەچ</string>
+ <string name="listAllContactsInAccount"><xliff:g id="NAME">%s</xliff:g> دىكى ئالاقەداشلار</string>
+ <string name="listCustomView">ئۆزلەشتۈرگەن كۆرۈنۈشتىكى ئالاقەداشلار</string>
+ <string name="listSingleContact">يەككە ئالاقەداش</string>
+ <string name="dialog_new_contact_account">ھېساباتقا ئالاقەداش قۇر</string>
+ <string name="import_from_sim">SIM كارتىدىن ئەكىر</string>
+ <string name="import_from_sdcard" product="default">ساقلىغۇچتىن ئەكىر</string>
+ <string name="cancel_import_confirmation_message"><xliff:g id="FILENAME">%S</xliff:g> ئەكىرىشتىن ۋاز كېچەمسىز؟</string>
+ <string name="cancel_export_confirmation_message"><xliff:g id="FILENAME">%S</xliff:g> چىقىرىشتىن ۋاز كېچەمسىز؟</string>
+ <string name="cancel_vcard_import_or_export_failed">vCard ئەكىر/چىقاردىن ۋاز كېچەلمەيدۇ</string>
+ <string name="fail_reason_unknown">يوچۇن خاتالىق.</string>
+ <string name="fail_reason_could_not_open_file"><xliff:g id="FILE_NAME">%s</xliff:g> ئاچالمايدۇ: <xliff:g id="EXACT_REASON">%s</xliff:g>.</string>
+ <string name="fail_reason_could_not_initialize_exporter">چىقارغۇچنى قوزغىتالمايدۇ: <xliff:g id="EXACT_REASON">%s</xliff:g>.</string>
+ <string name="fail_reason_no_exportable_contact">چىقىرىشقا بولىدىغان ئالاقەداش يوق.</string>
+ <string name="fail_reason_error_occurred_during_export">چىقىرىۋاتقاندا خاتالىق كۆرۈلدى: <xliff:g id="EXACT_REASON">%s</xliff:g>.</string>
+ <string name="fail_reason_too_long_filename">\"لازىملىق ھۆججەت ئاتى بەك ئۇزۇن (\"%s\").\"<xliff:g id="FILENAME"/></string>
+ <string name="fail_reason_too_many_vcard" product="nosdcard">ساقلىغۇچتا vCard ھۆججىتى بەك كۆپ.</string>
+ <string name="fail_reason_too_many_vcard" product="default">SD كارتىدا vCard ھۆججىتى بەك كۆپ.</string>
+ <string name="fail_reason_io_error">I/O خاتالىقى</string>
+ <string name="fail_reason_low_memory_during_import">ئەسلەك بوشلۇقى يېتىشمىدى. ھۆججەت بەك چوڭ بولۇشى مۇمكىن.</string>
+ <string name="fail_reason_vcard_parse_error"> ئويلاشمىغان سەۋەپ تۈپەيلىدىن vCard نى يېشەلمىدى</string>
+ <string name="fail_reason_not_supported">بۇ پىچىمنى قوللىمايدۇ.</string>
+ <string name="fail_reason_failed_to_collect_vcard_meta_info">بېرىلگەن vCard ھۆججەت(لەر)نىڭ مېتا سانلىق مەلۇماتىنى توپلىيالمىدى.</string>
+ <string name="fail_reason_failed_to_read_files">بىر ياكى بىر قانچە ھۆججەتنى ئەكىرەلمىدى (%s).</string>
+ <string name="exporting_vcard_finished_title"><xliff:g id="FILENAME">%s</xliff:g> چىقىرىش تاماملاندى.</string>
+ <string name="exporting_vcard_canceled_title"><xliff:g id="FILENAME">%s</xliff:g> نى چىقىرىشتىن ۋاز كەچتى</string>
+ <string name="exporting_contact_list_title">ئالاقەداش سانلىق مەلۇماتلىرىنى چىقىرىۋاتىدۇ</string>
+ <string name="exporting_contact_list_message">ئالاقەداش سانلىق مەلۇماتىڭىز ھۆججەتكە چىقىرىلىدۇ: <xliff:g id="FILE_NAME">%s</xliff:g>.</string>
+ <string name="composer_failed_to_get_database_infomation">ساندان ئۇچۇرىغا ئېرىشەلمەيدۇ.</string>
+ <string name="composer_has_no_exportable_contact" product="tablet">چىقىرىدىغان ئالاقەداشلار يوق. ئەگەر تاختا كومپيۇتېرىڭىزدا ئالاقەداشلارىڭىز بولسا ئۇنداقتا مەلۇم سانلىق مەلۇمات تەمىنلەش پىروگراممىسى تېلېفونىڭىزدىن ھەر قانداق ئالاقەداش چىقىرىشنى چەكلىگەن بولۇشى مۇمكىن.</string>
+ <string name="composer_has_no_exportable_contact" product="default">چىقىرىدىغان ئالاقەداشلار يوق. ئەگەر تېلېفونىڭىزدا ئالاقەداشلارىڭىز بولسا ئۇنداقتا مەلۇم سانلىق مەلۇمات تەمىنلەش پىروگراممىسى تېلېفونىڭىزدىن ھەر قانداق ئالاقەداش چىقىرىشنى چەكلىگەن بولۇشى مۇمكىن.</string>
+ <string name="composer_not_initialized">vCard ياساش پىروگراممىسى توغرا قوزغىتالمىدى.</string>
+ <string name="exporting_contact_failed_title">چىقىرالمايدۇ</string>
+ <string name="exporting_contact_failed_message">ئالاقەداش سانلىق مەلۇماتىنى چىقىرالمىدى.\"\n\"سەۋەبى: <xliff:g id="FAIL_REASON">%s</xliff:g></string>
+ <string name="no_sdcard_message" product="nosdcard">ھېچقانداق ساقلىغۇچ تېپىلمىدى.</string>
+ <string name="no_sdcard_message" product="default">SD كارتا تېپىلمىدى.</string>
+ <string name="confirm_export_message">ئالاقەداش تىزىمىڭىز ھۆججەتكە چىقىرىلىدۇ: <xliff:g id="VCARD_FILENAME">%s</xliff:g>.</string>
+ <string name="importing_vcard_description"> <xliff:g id="NAME">%s</xliff:g>ئەكىرىۋاتىدۇ</string>
+ <string name="reading_vcard_failed_title">vCard سانلىق مەلۇماتىنى ئوقۇيالمايدۇ</string>
+ <string name="reading_vcard_canceled_title">vCard سانلىق مەلۇماتىنى ئوقۇشتىن ۋاز كەچتى</string>
+ <string name="importing_vcard_finished_title">vCard <xliff:g id="FILENAME">%s</xliff:g> نى ئېلىپ كىرىش تاماملاندى</string>
+ <string name="importing_vcard_canceled_title"><xliff:g id="FILENAME">%s</xliff:g> ئېلىپ كىرىشتىن ۋاز كەچتى</string>
+ <string name="vcard_import_will_start_message"><xliff:g id="FILENAME">%s</xliff:g> نى تېزلا ئېلىپ كىرىدۇ.</string>
+ <string name="vcard_import_will_start_message_with_default_name">بۇ ھۆججەتنى تېزلا ئېلىپ كىرىدۇ.</string>
+ <string name="vcard_import_request_rejected_message">vCard ئېلىپ كىرىش ئىلتىماسى رەت قىلىندى. سەل تۇرۇپ قايتا سىناڭ.</string>
+ <string name="vcard_export_will_start_message"><xliff:g id="FILENAME">%s</xliff:g> نى تېزلا چىقىرىدۇ.</string>
+ <string name="vcard_export_request_rejected_message">vCard چىقىرىش ئىلتىماسى رەت قىلىندى. سەل تۇرۇپ قايتا سىناڭ.</string>
+ <string name="vcard_unknown_filename">ئالاقەداش</string>
+ <string name="caching_vcard_message">vCard نى يەرلىك ۋاقىتلىق ساقلىغۇچقا غەملەۋاتىدۇ. ناھايىتى تېزلا ھەقىقىي ئەكىرىشنى باشلايدۇ.</string>
+ <string name="percentage"><xliff:g id="PERCENTAGE">%s</xliff:g><xliff:g id="PERCENTSIGN">%%</xliff:g></string>
+ <string name="vcard_import_failed">vCard نى ئەكىرەلمەيدۇ</string>
+ <string name="import_failure_no_vcard_file" product="nosdcard">بۇ ساقلىغۇچتىن vCard ھۆججىتىنى تاپالمىدى</string>
+ <string name="import_failure_no_vcard_file" product="default">SD كارتىدىن vCard ھۆججىتىنى تاپالمىدى.</string>
+ <string name="nfc_vcard_file_name">NFC ئارقىلىق ئالاقەداش قوبۇللىدى</string>
+ <string name="confirm_export_title">ئالاقەداشلارنى چىقار؟</string>
+ <string name="select_vcard_title">vCard ھۆججەت تاللاڭ</string>
+ <string name="import_one_vcard_string">بىر vCard ھۆججەت ئەكىر</string>
+ <string name="import_multiple_vcard_string">كۆپ vCard ھۆججەت ئەكىر</string>
+ <string name="import_all_vcard_string">ھەممە vCard ھۆججەتنى ئەكىر</string>
+ <string name="searching_vcard_message" product="nosdcard">ساقلىغۇچتىن vCard سانلىق مەلۇماتىنى ئىزدەۋاتىدۇ…</string>
+ <string name="searching_vcard_message" product="default">SD كارتىدىن vCard سانلىق مەلۇماتىنى ئىزدەۋاتىدۇ</string>
+ <string name="caching_vcard_title">غەملەۋاتىدۇ</string>
+ <string name="scanning_sdcard_failed_message" product="nosdcard">ساقلىغۇچنى تەكشۈرەلمىدى. (سەۋەبى: <xliff:g id="FAIL_REASON">%s</xliff:g>)</string>
+ <string name="scanning_sdcard_failed_message" product="default">SD كارتا تەكشۈرەلمىدى(سەۋەبى: <xliff:g id="FAIL_REASON">%s</xliff:g>)</string>
+ <string name="progress_notifier_message">ئەكىرىۋاتىدۇ <xliff:g id="CURRENT_NUMBER">%s</xliff:g>/<xliff:g id="TOTAL_NUMBER">%s</xliff:g>: <xliff:g id="NAME">%s</xliff:g></string>
+ <string name="export_to_sdcard" product="default">ساقلىغۇچقا چىقار</string>
+ <string name="share_visible_contacts">كۆرۈنىدىغان ئالاقەداش ھەمبەھىر</string>
+ <string name="dialog_import_export">ئالاقەداش ئەكىر/چىقار</string>
+ <string name="dialog_import">ئالاقەداش ئەكىر</string>
+ <string name="share_error">بۇ ئالاقەداشنى ھەمبەھىرلىگىلى بولمايدۇ.</string>
+ <string name="menu_search">ئىزدە</string>
+ <string name="menu_contacts_filter">كۆرسىتىدىغان ئالاقەداشلار</string>
+ <string name="activity_title_contacts_filter">كۆرسىتىدىغان ئالاقەداشلار</string>
+ <string name="custom_list_filter">ئۆزلەشتۈرگەن كۆرۈنۈش بەلگىلەش</string>
+ <string name="hint_findContacts">ئالاقەداش ئىزدە</string>
+ <string name="contactsFavoritesLabel">يىغقۇچ</string>
+ <string name="listTotalAllContactsZero">ئالاقەداشلار يوق.</string>
+ <string name="listTotalAllContactsZeroCustom">كۆرسىتىدىغان ئالاقەداش يوق.</string>
+ <string name="listTotalAllContactsZeroStarred">ياقتۇرىدىغانلار يوق.</string>
+ <string name="listTotalAllContactsZeroGroup"><xliff:g id="NAME">%s</xliff:g> دا ئالاقەداش يوق</string>
+ <string name="menu_clear_frequents">دائىملىق ئالاقەداشلارنى تازىلا</string>
+ <string name="menu_accounts">ھېساباتلار</string>
+ <string name="menu_import_export">ئەكىر/چىقار</string>
+ <string name="description_send_message"><xliff:g id="NAME">%1$s</xliff:g> غا ئۇچۇر يوللا</string>
+ <string name="description_dial_phone_number"><xliff:g id="NAME">%1$s</xliff:g> نىڭ نومۇرىنى بۇرا</string>
+ <string name="contact_status_update_attribution">via <xliff:g id="source" example="Google Talk">%1$s</xliff:g></string>
+ <string name="contact_status_update_attribution_with_date"><xliff:g id="source" example="Google Talk">%2$s</xliff:g> ئارقىلىق <xliff:g id="date" example="3 hours ago">%1$s</xliff:g></string>
+ <string name="letter_tile_letter_font_family">sans-serif-thin</string>
+</resources>
diff --git a/res/values-uk/cm_strings.xml b/res/values-uk/cm_strings.xml
index 58aa26bc..af1969a4 100644
--- a/res/values-uk/cm_strings.xml
+++ b/res/values-uk/cm_strings.xml
@@ -18,4 +18,39 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="local_storage_account" product="tablet">Локальний обліковий запис планшета</string>
<string name="local_storage_account" product="default">Локальний обліковий запис телефону</string>
+ <string name="export_to_sim">Експорт до SIM-карти</string>
+ <string name="select_sim">Виберіть SIM</string>
+ <string name="account_sim">SIM-карта</string>
+ <string name="name_for_sim">Ім\'я</string>
+ <string name="fail_reason_import_vcard">Візитну картку \"<xliff:g id="name">%s</xliff:g>\" не вдалося імпортувати через помилку вводу/виводу</string>
+ <string name="label_groups">Група</string>
+ <string name="contact_share_failed_toast">Більше ніж <xliff:g id="count">%d</xliff:g> контактів не можна надати спільний доступ</string>
+ <string name="exporting">Експортую\u2026</string>
+ <string name="reading_vcard_files"><xliff:g id="current_number">%1$s</xliff:g> із <xliff:g id="total_number">%2$s</xliff:g> файлів</string>
+ <string name="export_failed">Помилка експорту</string>
+ <string name="sim_card_full">SIM-карта заповнена</string>
+ <string name="export_finished">Експорт завершено</string>
+ <string name="tag_too_long">Ім\'я контакту задовге</string>
+ <string name="export_no_phone_or_email"><xliff:g id="name">%s</xliff:g> не містить телефонний номер або електронну пошту</string>
+ <string name="import_from_sim_select">Виберіть карту для імпорту</string>
+ <string name="no_sdcard_title" product="nosdcard">Носій недоступний</string>
+ <string name="no_sdcard_title" product="default">Немає SD-карти</string>
+ <string name="deleteConfirmation_title">Видалити контакт?</string>
+ <string name="deleteConfirmation">Цей контакт буде видалено.</string>
+ <string name="readOnlyContactDeleteConfirmation">Цей контакт містить інформацію з кількома обліковими записами. Інформація з читання облікових записів буде приховано в списках контактів.</string>
+ <string name="readOnlyContactWarning">Ви не можете видалити контакти з облікових записів з доступом тільки читання, але їх можна сховати у ваші списки контактів.</string>
+ <string name="multipleContactDeleteConfirmation">Видалення цього контакту призведе до видалення інформації з кількох облікових записів.</string>
+ <string name="copy_done">Контакт був скопійований успішно</string>
+ <string name="copy_failure">Не вдалося скопіювати контакт</string>
+ <string name="card_no_space">Копіювання контактів не вдалося, SIM карта заповнена</string>
+ <string name="ip_call_by_slot">IP дзвінок із <xliff:g id="subName">%s</xliff:g></string>
+ <string name="no_ip_number">Немає IP номера</string>
+ <string name="no_ip_number_on_sim_card">Немає IP номера на SIM-карті</string>
+ <string name="set_ip_number">Встановити IP-номер</string>
+ <string name="ipcall_dialog_title">Налаштування IP-викликів</string>
+ <string name="ipcall_dialog_edit_hint">Будь ласка, введіть префікс IP</string>
+ <string name="select_path">Вибрати шлях</string>
+ <string name="sd_card">SD-карта</string>
+ <string name="phone_storage">Пам\'ять пристрою</string>
+ <string name="sim_contacts_not_loaded">Контакти SIM не вдалося завантажити повністю</string>
</resources>
diff --git a/res/values-zh-rTW/cm_strings.xml b/res/values-zh-rTW/cm_strings.xml
index 995bccb3..e2bc9f7e 100644
--- a/res/values-zh-rTW/cm_strings.xml
+++ b/res/values-zh-rTW/cm_strings.xml
@@ -18,4 +18,12 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="local_storage_account" product="tablet">本機平板電腦帳戶</string>
<string name="local_storage_account" product="default">本地手機帳戶</string>
+ <string name="export_to_sim">匯出至 SIM 卡</string>
+ <string name="select_sim">選擇 SIM 卡</string>
+ <string name="account_sim">SIM 卡</string>
+ <string name="export_failed">匯出失敗</string>
+ <string name="sim_card_full">SIM 卡已滿</string>
+ <string name="no_sdcard_title" product="default">沒有 SD 卡</string>
+ <string name="deleteConfirmation_title">刪除聯絡人?</string>
+ <string name="sd_card">SD 卡</string>
</resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 9e8c08d8..9cd22b0d 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -44,6 +44,9 @@
<attr name="list_item_contacts_count_text_size" format="dimension"/>
<attr name="list_item_data_width_weight" format="integer"/>
<attr name="list_item_label_width_weight" format="integer"/>
+ <attr name="list_item_quick_call_view_source" format="reference" />
+ <attr name="list_item_quick_call_view_background" format="reference" />
+ <attr name="list_item_quick_call_size" format="dimension" />
</declare-styleable>
<declare-styleable name="ContactBrowser">
diff --git a/src/com/android/contacts/common/ContactTileLoaderFactory.java b/src/com/android/contacts/common/ContactTileLoaderFactory.java
index bd5fd800..e3cf6f53 100644
--- a/src/com/android/contacts/common/ContactTileLoaderFactory.java
+++ b/src/com/android/contacts/common/ContactTileLoaderFactory.java
@@ -41,6 +41,7 @@ public final class ContactTileLoaderFactory {
public final static int LOOKUP_KEY = 4;
public final static int CONTACT_PRESENCE = 5;
public final static int CONTACT_STATUS = 6;
+ public final static int PHOTO_ID = 7;
// Only used for StrequentPhoneOnlyLoader
public final static int PHONE_NUMBER = 5;
@@ -61,6 +62,7 @@ public final class ContactTileLoaderFactory {
Contacts.LOOKUP_KEY, // ...................................4
Contacts.CONTACT_PRESENCE, // .............................5
Contacts.CONTACT_STATUS, // ...............................6
+ Contacts.PHOTO_ID, // .....................................7
};
/**
diff --git a/src/com/android/contacts/common/MoreContactUtils.java b/src/com/android/contacts/common/MoreContactUtils.java
index f37c5dbc..75e9b255 100644
--- a/src/com/android/contacts/common/MoreContactUtils.java
+++ b/src/com/android/contacts/common/MoreContactUtils.java
@@ -81,8 +81,6 @@ public class MoreContactUtils {
private static final int ANR_POS = 3;
private static final String PHONEBOOK_MSIM = "simphonebook_msim";
private static final String PHONEBOOK = "simphonebook";
- public static final String[] MULTI_SIM_NAME = { "perferred_name_sub1",
- "perferred_name_sub2" };
public static final String[] IPCALL_PREFIX = { "ip_call_prefix_sub1",
"ip_call_prefix_sub2" };
@@ -832,12 +830,13 @@ public class MoreContactUtils {
}
public static String getSDPath(Context context) {
+ final String sdcardDesc = context.getString(com.android.internal.R.string.storage_sd_card);
StorageManager mStorageManager = (StorageManager) context
.getSystemService(Context.STORAGE_SERVICE);
StorageVolume[] volumes = mStorageManager.getVolumeList();
for (int i = 0; i < volumes.length; i++) {
if (volumes[i].isRemovable() && volumes[i].allowMassStorage()
- && volumes[i].getDescription(context).contains("SD")) {
+ && volumes[i].getDescription(context).equals(sdcardDesc)) {
return volumes[i].getPath();
}
}
@@ -880,12 +879,8 @@ public class MoreContactUtils {
}
MSimTelephonyManager stm = getMSimTelephonyManager();
if (stm.isMultiSimEnabled()) {
- String name = Settings.System.getString(context.getContentResolver(),
- MULTI_SIM_NAME[subscription]);
- if (!TextUtils.isEmpty(name)) {
- return name;
- }
- return context.getString(R.string.account_sim) + " " + (subscription + 1);
+ return Settings.Global.getSimNameForSubscription(context, subscription,
+ context.getString(R.string.account_sim) + " " + (subscription + 1));
}
return context.getString(R.string.account_sim);
diff --git a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
index 30cb7734..02073077 100644
--- a/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
+++ b/src/com/android/contacts/common/interactions/ImportExportDialogFragment.java
@@ -120,6 +120,9 @@ public class ImportExportDialogFragment extends DialogFragment
//decide whether pick phone or contacts
private static final String IS_CONTACT = "is_contact";
+ // indicate that we want to export contacts
+ private static final String WANT_EXPORT = "want_export";
+
// multi-pick contacts which contains email address
private static final String ACTION_MULTI_PICK_EMAIL =
"com.android.contacts.action.MULTI_PICK_EMAIL";
@@ -187,8 +190,8 @@ public class ImportExportDialogFragment extends DialogFragment
}
private String getMultiSimName(int subscription) {
- return Settings.System.getString(getActivity().getContentResolver(),
- MoreContactUtils.MULTI_SIM_NAME[subscription]);
+ return Settings.Global.getSimNameForSubscription(getActivity(), subscription,
+ String.valueOf(subscription + 1));
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
@@ -253,6 +256,7 @@ public class ImportExportDialogFragment extends DialogFragment
Intent exportIntent = new Intent(ACTION_MULTI_PICK,
Contacts.CONTENT_URI);
exportIntent.putExtra(IS_CONTACT,true);
+ exportIntent.putExtra(WANT_EXPORT,true);
getActivity().startActivityForResult(exportIntent,
SUBACTIVITY_EXPORT_CONTACTS);
break;
diff --git a/src/com/android/contacts/common/list/ContactEntryListAdapter.java b/src/com/android/contacts/common/list/ContactEntryListAdapter.java
index 202f1219..1bc10f36 100644
--- a/src/com/android/contacts/common/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/common/list/ContactEntryListAdapter.java
@@ -60,6 +60,7 @@ public abstract class ContactEntryListAdapter extends IndexerListAdapter {
private boolean mDisplayPhotos;
private boolean mQuickContactEnabled;
+ private boolean mQuickCallButtonEnabled;
/**
* indicates if contact queries include profile
@@ -325,10 +326,18 @@ public abstract class ContactEntryListAdapter extends IndexerListAdapter {
return mQuickContactEnabled;
}
+ public boolean isQuickCallButtonEnabled() {
+ return mQuickCallButtonEnabled;
+ }
+
public void setQuickContactEnabled(boolean quickContactEnabled) {
mQuickContactEnabled = quickContactEnabled;
}
+ public void setQuickCallButtonEnabled(boolean quickCallButtonEnabled) {
+ mQuickCallButtonEnabled = quickCallButtonEnabled;
+ }
+
public boolean shouldIncludeProfile() {
return mIncludeProfile;
}
diff --git a/src/com/android/contacts/common/list/ContactEntryListFragment.java b/src/com/android/contacts/common/list/ContactEntryListFragment.java
index cad4ae69..0d488187 100644
--- a/src/com/android/contacts/common/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/common/list/ContactEntryListFragment.java
@@ -71,6 +71,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
private static final String KEY_SECTION_HEADER_DISPLAY_ENABLED = "sectionHeaderDisplayEnabled";
private static final String KEY_PHOTO_LOADER_ENABLED = "photoLoaderEnabled";
private static final String KEY_QUICK_CONTACT_ENABLED = "quickContactEnabled";
+ private static final String KEY_QUICK_CALL_BUTTON_ENABLED = "quickCallButtonEnabled";
private static final String KEY_INCLUDE_PROFILE = "includeProfile";
private static final String KEY_SEARCH_MODE = "searchMode";
private static final String KEY_VISIBLE_SCROLLBAR_ENABLED = "visibleScrollbarEnabled";
@@ -95,6 +96,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
private boolean mSectionHeaderDisplayEnabled;
private boolean mPhotoLoaderEnabled;
private boolean mQuickContactEnabled = true;
+ private boolean mQuickCallButtonEnabled = false;
private boolean mIncludeProfile;
private boolean mSearchMode;
private boolean mVisibleScrollbarEnabled;
@@ -234,6 +236,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
outState.putBoolean(KEY_SECTION_HEADER_DISPLAY_ENABLED, mSectionHeaderDisplayEnabled);
outState.putBoolean(KEY_PHOTO_LOADER_ENABLED, mPhotoLoaderEnabled);
outState.putBoolean(KEY_QUICK_CONTACT_ENABLED, mQuickContactEnabled);
+ outState.putBoolean(KEY_QUICK_CALL_BUTTON_ENABLED, mQuickCallButtonEnabled);
outState.putBoolean(KEY_INCLUDE_PROFILE, mIncludeProfile);
outState.putBoolean(KEY_SEARCH_MODE, mSearchMode);
outState.putBoolean(KEY_VISIBLE_SCROLLBAR_ENABLED, mVisibleScrollbarEnabled);
@@ -271,6 +274,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
mSectionHeaderDisplayEnabled = savedState.getBoolean(KEY_SECTION_HEADER_DISPLAY_ENABLED);
mPhotoLoaderEnabled = savedState.getBoolean(KEY_PHOTO_LOADER_ENABLED);
mQuickContactEnabled = savedState.getBoolean(KEY_QUICK_CONTACT_ENABLED);
+ mQuickCallButtonEnabled = savedState.getBoolean(KEY_QUICK_CALL_BUTTON_ENABLED);
mIncludeProfile = savedState.getBoolean(KEY_INCLUDE_PROFILE);
mSearchMode = savedState.getBoolean(KEY_SEARCH_MODE);
mVisibleScrollbarEnabled = savedState.getBoolean(KEY_VISIBLE_SCROLLBAR_ENABLED);
@@ -585,6 +589,10 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
this.mQuickContactEnabled = flag;
}
+ public void setQuickCallButtonEnabled(boolean flag) {
+ this.mQuickCallButtonEnabled = flag;
+ }
+
public void setIncludeProfile(boolean flag) {
mIncludeProfile = flag;
if(mAdapter != null) {
@@ -783,6 +791,7 @@ public abstract class ContactEntryListFragment<T extends ContactEntryListAdapter
}
mAdapter.setQuickContactEnabled(mQuickContactEnabled);
+ mAdapter.setQuickCallButtonEnabled(mQuickCallButtonEnabled);
mAdapter.setIncludeProfile(mIncludeProfile);
mAdapter.setQueryString(mQueryString);
mAdapter.setDirectorySearchMode(mDirectorySearchMode);
diff --git a/src/com/android/contacts/common/list/ContactListAdapter.java b/src/com/android/contacts/common/list/ContactListAdapter.java
index 07504594..c00ebaca 100644
--- a/src/com/android/contacts/common/list/ContactListAdapter.java
+++ b/src/com/android/contacts/common/list/ContactListAdapter.java
@@ -16,6 +16,7 @@
package com.android.contacts.common.list;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
@@ -28,9 +29,11 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
+import android.widget.Toast;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.R;
+import com.android.contacts.common.model.Contact;
/**
* A cursor adapter for the {@link ContactsContract.Contacts#CONTENT_TYPE} content type.
@@ -49,6 +52,7 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
Contacts.PHOTO_THUMBNAIL_URI, // 5
Contacts.LOOKUP_KEY, // 6
Contacts.IS_USER_PROFILE, // 7
+ Contacts.HAS_PHONE_NUMBER // 8
};
private static final String[] CONTACT_PROJECTION_ALTERNATIVE = new String[] {
@@ -60,6 +64,7 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
Contacts.PHOTO_THUMBNAIL_URI, // 5
Contacts.LOOKUP_KEY, // 6
Contacts.IS_USER_PROFILE, // 7
+ Contacts.HAS_PHONE_NUMBER, // 8
};
private static final String[] FILTER_PROJECTION_PRIMARY = new String[] {
@@ -71,7 +76,8 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
Contacts.PHOTO_THUMBNAIL_URI, // 5
Contacts.LOOKUP_KEY, // 6
Contacts.IS_USER_PROFILE, // 7
- SearchSnippetColumns.SNIPPET, // 8
+ Contacts.HAS_PHONE_NUMBER, // 8
+ SearchSnippetColumns.SNIPPET, // 9
};
private static final String[] FILTER_PROJECTION_ALTERNATIVE = new String[] {
@@ -83,7 +89,8 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
Contacts.PHOTO_THUMBNAIL_URI, // 5
Contacts.LOOKUP_KEY, // 6
Contacts.IS_USER_PROFILE, // 7
- SearchSnippetColumns.SNIPPET, // 8
+ Contacts.HAS_PHONE_NUMBER, // 8
+ SearchSnippetColumns.SNIPPET, // 9
};
public static final int CONTACT_ID = 0;
@@ -94,7 +101,8 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
public static final int CONTACT_PHOTO_URI = 5;
public static final int CONTACT_LOOKUP_KEY = 6;
public static final int CONTACT_IS_USER_PROFILE = 7;
- public static final int CONTACT_SNIPPET = 8;
+ public static final int CONTACT_HAS_NUMBER = 8;
+ public static final int CONTACT_SNIPPET = 9;
}
private CharSequence mUnknownNameText;
@@ -198,7 +206,12 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
ViewGroup parent) {
ContactListItemView view = new ContactListItemView(context, null);
view.setUnknownNameText(mUnknownNameText);
- view.setQuickContactEnabled(isQuickContactEnabled());
+ if (isQuickContactEnabled()) {
+ view.setQuickContactEnabled(isQuickContactEnabled());
+ view.setQuickCallButtonImageResource(R.drawable.ic_action_call);
+ view.setQuickCallButtonBackgroundResource(
+ R.drawable.ic_action_call_background);
+ }
view.setActivatedStateSupported(isSelectionVisible());
if (mPhotoPosition != null) {
view.setPhotoPosition(mPhotoPosition);
@@ -206,6 +219,29 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
return view;
}
+ private View.OnClickListener mClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ String lookup = ((ContactListItemView) view.getParent()).getQuickCallLookup();
+ Cursor cursor = mContext.getContentResolver().query(
+ ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
+ new String[] { ContactsContract.CommonDataKinds.Phone.NUMBER,
+ ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY},
+ ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY + "=?",
+ new String[] { lookup }, null);
+
+ if (cursor != null) {
+ if (cursor.moveToNext()) {
+ String phoneNumber = cursor.getString(0);
+ Uri uri = Uri.parse("tel: " + phoneNumber);
+ Intent intent = new Intent(Intent.ACTION_CALL, uri);
+ mContext.startActivity(intent);
+ }
+ cursor.close();
+ }
+ }
+ };
+
protected void bindSectionHeaderAndDivider(ContactListItemView view, int position,
Cursor cursor) {
if (isSectionHeaderDisplayEnabled()) {
@@ -259,6 +295,12 @@ public abstract class ContactListAdapter extends ContactEntryListAdapter {
// Note: we don't show phonetic any more (See issue 5265330)
}
+ protected void bindQuickCallView(final ContactListItemView view, Cursor cursor) {
+ view.showQuickCallView(cursor, ContactQuery.CONTACT_HAS_NUMBER,
+ ContactQuery.CONTACT_LOOKUP_KEY);
+ view.setOnQuickCallClickListener(mClickListener);
+ }
+
protected void bindPresenceAndStatusMessage(final ContactListItemView view, Cursor cursor) {
view.showPresenceAndStatusMessage(cursor, ContactQuery.CONTACT_PRESENCE_STATUS,
ContactQuery.CONTACT_CONTACT_STATUS);
diff --git a/src/com/android/contacts/common/list/ContactListItemView.java b/src/com/android/contacts/common/list/ContactListItemView.java
index fcfc216a..cda2156e 100644
--- a/src/com/android/contacts/common/list/ContactListItemView.java
+++ b/src/com/android/contacts/common/list/ContactListItemView.java
@@ -26,6 +26,7 @@ import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
@@ -75,7 +76,7 @@ import java.util.regex.Pattern;
*/
public class ContactListItemView extends ViewGroup
- implements SelectionBoundsAdjuster {
+ implements SelectionBoundsAdjuster, View.OnClickListener {
// Style values for layout and appearance
// The initialized values are defaults if none is provided through xml.
@@ -160,7 +161,9 @@ public class ContactListItemView extends ViewGroup
// The views inside the contact view
private boolean mQuickContactEnabled = true;
+ private boolean mQuickCallButtonEnabled = false;
private QuickContactBadge mQuickContact;
+ private ImageView mQuickCallView;
private ImageView mPhotoView;
private TextView mNameTextView;
private TextView mPhoneticNameTextView;
@@ -170,12 +173,15 @@ public class ContactListItemView extends ViewGroup
private TextView mStatusView;
private TextView mCountView;
private ImageView mPresenceIcon;
+ private String mQuickCallKey;
private ColorStateList mSecondaryTextColor;
-
+ private int mQuickCallViewImageId = 0;
+ private int mQuickCallViewBgId = 0;
private int mDefaultPhotoViewSize = 0;
+ private int mDefaultQuickCallViewSize = 0;
/**
* Can be effective even when {@link #mPhotoView} is null, as we want to have horizontal padding
* to align other data in this View.
@@ -187,6 +193,15 @@ public class ContactListItemView extends ViewGroup
private int mPhotoViewHeight;
/**
+ * Only effective when {@link #mQuickCallView} is null
+ */
+ private int mQuickCallViewWidth;
+ /**
+ * Only effective when {@link #mQuickCallView} is null
+ */
+ private int mQuickCallViewHeight;
+
+ /**
* Only effective when {@link #mPhotoView} is null.
* When true all the Views on the right side of the photo should have horizontal padding on
* those left assuming there is a photo.
@@ -227,6 +242,8 @@ public class ContactListItemView extends ViewGroup
private Rect mBoundsWithoutHeader = new Rect();
+ private OnClickListener mListener;
+
/** A helper used to highlight a prefix in a text field. */
private final TextHighlighter mTextHighlighter;
private CharSequence mUnknownNameText;
@@ -265,6 +282,9 @@ public class ContactListItemView extends ViewGroup
R.styleable.ContactListItemView_list_item_presence_icon_size, mPresenceIconSize);
mDefaultPhotoViewSize = a.getDimensionPixelOffset(
R.styleable.ContactListItemView_list_item_photo_size, mDefaultPhotoViewSize);
+ mDefaultQuickCallViewSize = a.getDimensionPixelOffset(
+ R.styleable.ContactListItemView_list_item_quick_call_size,
+ mDefaultQuickCallViewSize);
mHeaderTextIndent = a.getDimensionPixelOffset(
R.styleable.ContactListItemView_list_item_header_text_indent, mHeaderTextIndent);
mHeaderTextColor = a.getColor(
@@ -292,6 +312,12 @@ public class ContactListItemView extends ViewGroup
mLabelViewWidthWeight = a.getInteger(
R.styleable.ContactListItemView_list_item_label_width_weight,
mLabelViewWidthWeight);
+ mQuickCallViewImageId = a.getResourceId(
+ R.styleable.ContactListItemView_list_item_quick_call_view_source,
+ mQuickCallViewImageId);
+ mQuickCallViewImageId = a.getResourceId(
+ R.styleable.ContactListItemView_list_item_quick_call_view_background,
+ mQuickCallViewBgId);
setPaddingRelative(
a.getDimensionPixelOffset(
@@ -330,6 +356,22 @@ public class ContactListItemView extends ViewGroup
mQuickContactEnabled = flag;
}
+ public void setQuickCallButtonEnabled(boolean flag) {
+ mQuickCallButtonEnabled = flag;
+ }
+
+ public void setQuickCallLookup(String lookupKey) {
+ mQuickCallKey = lookupKey;
+ }
+
+ public void setQuickCallButtonImageResource(int resourceId) {
+ mQuickCallViewImageId = resourceId;
+ }
+
+ public void setQuickCallButtonBackgroundResource(int resourceId) {
+ mQuickCallViewBgId = resourceId;
+ }
+
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// We will match parent's width and wrap content vertically, but make sure
@@ -351,15 +393,16 @@ public class ContactListItemView extends ViewGroup
mStatusTextViewHeight = 0;
ensurePhotoViewSize();
+ ensureQuickCallViewSize();
// Width each TextView is able to use.
final int effectiveWidth;
// All the other Views will honor the photo, so available width for them may be shrunk.
if (mPhotoViewWidth > 0 || mKeepHorizontalPaddingForPhotoView) {
effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight()
- - (mPhotoViewWidth + mGapBetweenImageAndText);
+ - (mPhotoViewWidth + mGapBetweenImageAndText + mQuickCallViewWidth);
} else {
- effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight();
+ effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight() - mQuickCallViewWidth;
}
// Go over all visible text views and measure actual width of each of them.
@@ -488,6 +531,12 @@ public class ContactListItemView extends ViewGroup
height += (mHeaderBackgroundHeight + mHeaderUnderlineHeight);
}
+ if (isVisible(mQuickCallView)) {
+ mQuickCallView.measure(
+ MeasureSpec.makeMeasureSpec(mQuickCallViewWidth, MeasureSpec.EXACTLY),
+ MeasureSpec.makeMeasureSpec(mQuickCallViewHeight, MeasureSpec.EXACTLY));
+ }
+
setMeasuredDimension(specWidth, height);
}
@@ -590,6 +639,9 @@ public class ContactListItemView extends ViewGroup
textTopBound += mNameTextViewHeight;
}
+ // Center the photo vertically
+ final int quickCallTop = topBound + (bottomBound - topBound - mQuickCallViewHeight) / 2;
+
// Presence and status
if (isLayoutRtl) {
int statusRightBound = rightBound;
@@ -609,6 +661,13 @@ public class ContactListItemView extends ViewGroup
statusRightBound,
textTopBound + mStatusTextViewHeight);
}
+
+ if (isVisible(mQuickCallView)) {
+ mQuickCallView.layout(-width + (mQuickCallViewWidth + mPhotoViewWidth),
+ quickCallTop,
+ rightBound,
+ quickCallTop + mQuickCallViewHeight);
+ }
} else {
int statusLeftBound = leftBound;
if (isVisible(mPresenceIcon)) {
@@ -627,6 +686,13 @@ public class ContactListItemView extends ViewGroup
rightBound,
textTopBound + mStatusTextViewHeight);
}
+
+ if (isVisible(mQuickCallView)) {
+ mQuickCallView.layout(rightBound - mQuickCallView.getMeasuredWidth(),
+ quickCallTop,
+ rightBound,
+ quickCallTop + mQuickCallViewHeight);
+ }
}
if (isVisible(mStatusView) || isVisible(mPresenceIcon)) {
@@ -712,6 +778,17 @@ public class ContactListItemView extends ViewGroup
}
}
+ /**
+ * Extracts width and height from the style
+ */
+ private void ensureQuickCallViewSize() {
+ mQuickCallViewWidth = mQuickCallViewHeight = getDefaultQuickCallViewSize();
+ if (!mQuickCallButtonEnabled && mQuickCallView == null) {
+ mQuickCallViewWidth = 0;
+ mQuickCallViewHeight = 0;
+ }
+ }
+
protected void setDefaultPhotoViewSize(int pixels) {
mDefaultPhotoViewSize = pixels;
}
@@ -720,6 +797,14 @@ public class ContactListItemView extends ViewGroup
return mDefaultPhotoViewSize;
}
+ protected void setDefaultQuickCallViewSize(int pixels) {
+ mDefaultQuickCallViewSize = pixels;
+ }
+
+ protected int getDefaultQuickCallViewSize() {
+ return mDefaultQuickCallViewSize;
+ }
+
/**
* Gets a LayoutParam that corresponds to the default photo size.
*
@@ -809,6 +894,14 @@ public class ContactListItemView extends ViewGroup
}
/**
+ * Get the quick call lookup to use with Intent.ACTION_CALL
+ * @return
+ */
+ public String getQuickCallLookup() {
+ return mQuickCallKey;
+ }
+
+ /**
* Returns the quick contact badge, creating it if necessary.
*/
public QuickContactBadge getQuickContact() {
@@ -845,6 +938,31 @@ public class ContactListItemView extends ViewGroup
}
/**
+ * Returns the quick call view, creating it if necessary.
+ */
+ public ImageView getQuickCallView() {
+ if (mQuickCallView == null) {
+ mQuickCallView = new ImageView(mContext);
+ mQuickCallView.setLayoutParams(getDefaultPhotoLayoutParams());
+ mQuickCallView.setImageResource(mQuickCallViewImageId);
+ mQuickCallView.setBackgroundResource(mQuickCallViewBgId);
+ mQuickCallView.setClickable(true);
+ addView(mQuickCallView);
+ }
+ return mQuickCallView;
+ }
+
+ /**
+ * Removes the quick call view.
+ */
+ public void removeQuickCallView() {
+ if (mQuickCallView != null) {
+ removeView(mQuickCallView);
+ mQuickCallView = null;
+ }
+ }
+
+ /**
* Removes the photo view.
*/
public void removePhotoView() {
@@ -1212,6 +1330,18 @@ public class ContactListItemView extends ViewGroup
}
}
+ public void showQuickCallView(Cursor cursor, int numberColumIndex, int lookUpKey) {
+ int hasNumber = cursor.getInt(numberColumIndex);
+ if (!(hasNumber == 0)) {
+ getQuickCallView().setVisibility(View.VISIBLE);
+ setQuickCallLookup(cursor.getString(lookUpKey));
+ } else {
+ if (mQuickCallView != null) {
+ mQuickCallView.setVisibility(View.GONE);
+ }
+ }
+ }
+
public void setDisplayName(CharSequence name, boolean highlight) {
if (!TextUtils.isEmpty(name) && highlight) {
clearHighlightSequences();
@@ -1542,7 +1672,27 @@ public class ContactListItemView extends ViewGroup
if (mBoundsWithoutHeader.contains((int) x, (int) y) || !pointInView(x, y, 0)) {
return super.onTouchEvent(event);
} else {
- return true;
+ return false;
+ }
+ }
+
+ @Override
+ public void onClick(View view) {
+ if (mListener != null && mQuickCallButtonEnabled) {
+ if (view == mQuickCallView) {
+ mListener.onClick(view);
+ }
+ }
+ }
+
+ /**
+ * Set the a click listener for the quick call view
+ * @param listener
+ */
+ public void setOnQuickCallClickListener(OnClickListener listener) {
+ this.mListener = listener;
+ if (mListener != null && mQuickCallView != null) {
+ mQuickCallView.setOnClickListener(mListener);
}
}
}
diff --git a/src/com/android/contacts/common/list/DefaultContactListAdapter.java b/src/com/android/contacts/common/list/DefaultContactListAdapter.java
index 1873896b..666e0be6 100644
--- a/src/com/android/contacts/common/list/DefaultContactListAdapter.java
+++ b/src/com/android/contacts/common/list/DefaultContactListAdapter.java
@@ -266,6 +266,10 @@ public class DefaultContactListAdapter extends ContactListAdapter {
}
}
+ if (isQuickCallButtonEnabled()) {
+ bindQuickCallView(view, cursor);
+ }
+
bindName(view, cursor);
bindPresenceAndStatusMessage(view, cursor);
diff --git a/src/com/android/contacts/common/model/RawContactDeltaList.java b/src/com/android/contacts/common/model/RawContactDeltaList.java
index b1dbda68..4148cdcf 100644
--- a/src/com/android/contacts/common/model/RawContactDeltaList.java
+++ b/src/com/android/contacts/common/model/RawContactDeltaList.java
@@ -159,7 +159,7 @@ public class RawContactDeltaList extends ArrayList<RawContactDelta> implements P
builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, joinedRawContactId);
// we should use each delta's raw contact id, so we can update all the
// aggregation exceptions for each pair of raw contacts.
- if (delta.getRawContactId() != -1) {
+ if (delta.getRawContactId() != null && delta.getRawContactId() != -1) {
builder.withValue(AggregationExceptions.RAW_CONTACT_ID2,
delta.getRawContactId());
} else {
diff --git a/src/com/android/contacts/common/model/account/ExternalAccountType.java b/src/com/android/contacts/common/model/account/ExternalAccountType.java
index f6ab375d..2f8b89af 100644
--- a/src/com/android/contacts/common/model/account/ExternalAccountType.java
+++ b/src/com/android/contacts/common/model/account/ExternalAccountType.java
@@ -222,6 +222,11 @@ public class ExternalAccountType extends BaseAccountType {
return mHasEditSchema;
}
+ @Override
+ public boolean isGroupMembershipEditable() {
+ return true;
+ }
+
/**
* Whether this account type has the android.provider.CONTACTS_STRUCTURE metadata xml.
*/